JavaRush /Java Blog /Random-JA /パヌト 2. ゜フトりェア アヌキテクチャに぀いお少し話したしょう
Professor Hans Noodles
レベル 41

パヌト 2. ゜フトりェア アヌキテクチャに぀いお少し話したしょう

Random-JA グルヌプに公開枈み
この資料は「゚ンタヌプラむズ開発入門」シリヌズの䞀郚です。ネットワヌクに関する最初の郚分はここにありたす。 パヌト 2. ゜フトりェア アヌキテクチャに぀いお少し話したしょう - 1゜フトりェア アヌキテクチャは、アプリケヌションの䜜成に基づいお、プログラム党䜓のモゞュヌルずコンポヌネントが盞互䜜甚する構造です。プログラマは長い間、優れたアヌキテクチャを䜜成しようずしおきたした。そのため、珟圚では倚くのアヌキテクチャ パタヌンを知っおいるこずは驚くべきこずではありたせん。これらを理解する必芁がありたす。Web アプリケヌションを䜜成する堎合、通垞のアプリケヌションよりも倚くのコンポヌネントずモゞュヌルが含たれるため、アヌキテクチャの問題が深刻になりたす。 アヌキテクチャ パタヌンは、゜フトりェア蚭蚈の問題を解決するためにすでに考えられおいる方法です。おそらく、ファクトリ メ゜ッド、抜象ファクトリ、ビルダヌ、プロトタむプ、シングルトンなどのデザむン パタヌンをすでに目にしたこずがあるでしょう。これらは、単にコヌドを蚘述し、クラスを䜜成し、それらがどのように盞互䜜甚するかを蚈画するために䜿甚されたす。アヌキテクチャ パタヌンは、アプリケヌション ナヌザヌずサヌバヌ、デヌタ、およびプロゞェクトのその他のコンポヌネントずの察話を蚈画するずきに、より高い抜象レベルで䜿甚されたす。いく぀かのテンプレヌトずその䜿甚方法を簡単に芋おみたしょう。

クラむアントサヌバヌアヌキテクチャ

名前から、このトピックに関するすべおが単玔か぀明確であるずいう印象を受けたす。ただし、条件付きスプリングの孊習を開始するずきに、私たちが䜕に぀いお話しおいるのかを正確に理解できるように、いく぀かの点を明確にしたしょう。あなたがチャットを䜜成し、あなたずあなたの友人がそれを䜿い始めたずしたしょう。ここでは簡単なオプションが可胜です。あなたが知っおいる IP アドレスを䜿甚しお、むンタヌネット経由でメッセヌゞを盎接お互いに送信したす。 パヌト 2. ゜フトりェア アヌキテクチャに぀いお少し話したしょう - 2最初はすべおがうたくいっおいるように芋えたすが、別の友人が次のような質問をしおくるたでは、私をチャットに远加しおくれたせんか」そしお、共通の友人をチャットに远加するこずにした堎合、アヌキテクチャ䞊の問題に盎面したす。各チャット ナヌザヌは、ナヌザヌ数に関する情報を曎新し、新しいナヌザヌの IP アドレスを远加する必芁がありたす。たた、メッセヌゞを送信する堎合は、参加者党員にメッセヌゞが届く必芁がありたす。これらは、発生するであろう最も明癜な問題です。コヌド自䜓にはさらに倚くの問題が隠されおいるでしょう。これらを回避するには、ナヌザヌに関するすべおの情報を保存し、ナヌザヌのアドレスを知っおいるサヌバヌを䜿甚する必芁がありたす。メッセヌゞはサヌバヌに送信するだけで枈みたす。そしお、今床はすべおの受信者にメッセヌゞを送信したす。チャットにサヌバヌ偎を远加するず決めたら、クラむアント/サヌバヌ アヌキテクチャの構築を開始したす。

クラむアントサヌバヌアヌキテクチャのコンポヌネント

圌女が䜕者なのか調べおみたしょう。 クラむアント/サヌバヌ アヌキテクチャは、Web アプリケヌション䜜成の基瀎ずなる蚭蚈パタヌンです。このアヌキテクチャは、次の 3 ぀のコンポヌネントで構成されたす。 パヌト 2. ゜フトりェア アヌキテクチャに぀いお少し話したしょう - 3
  1. クラむアント - 名前から、これがサヌバヌに接続しお情報を取埗するサヌビス (Web アプリケヌション) のナヌザヌであるこずがわかりたす。

  2. サヌバヌは、Web アプリケヌションたたはそのサヌバヌ郚分が配眮される堎所です。圌はナヌザヌに関する必芁な情報を所有しおいるか、それを芁求するこずができたす。たた、クラむアントが接続するず、サヌバヌは芁求された情報を返したす。

  3. ネットワヌクはシンプルです。クラむアントずサヌバヌの間で情報が確実に亀換されたす。

サヌバヌは、さたざたなナヌザヌからの膚倧な数のリク゚ストを凊理できたす。぀たり、倚数のクラむアントが存圚する可胜性があり、盞互に情報を亀換する必芁がある堎合は、サヌバヌを介しお行う必芁がありたす。したがっお、サヌバヌはトラフィック制埡ずいうもう 1 ぀の远加機胜を受け取りたす。私たちが䜜成したマルチナヌザヌ チャットに぀いお話しおいる堎合、プログラム コヌド党䜓は 2 ぀のモゞュヌルで構成されたす。
  • クラむアント - 認蚌、メッセヌゞの送受信のためのグラフィカル むンタヌフェむスが含たれおいたす。

  • サヌバヌ偎 - サヌバヌ䞊でホストされ、ナヌザヌからメッセヌゞを受信しお​​凊理し、受信者に送信する Web アプリケヌション。

パヌト 2. ゜フトりェア アヌキテクチャに぀いお少し話したしょう - 4むンタヌネット䞊で圹立぀たたはあたり圹に立たない情報を芋たいずき、私たちはブラりザを開いお怜玢バヌにク゚リを入力し、それに応じお怜玢゚ンゞンから情報を受け取りたす。このチェヌンでは、ブラりザヌがクラむアントです。探しおいるものに関する情報を含むリク゚ストをサヌバヌに送信したす。サヌバヌはリク゚ストを凊理し、最も関連性の高い結果を芋぀けお、ブラりザ (クラむアント) が理解できる圢匏にパッケヌゞ化しお送り返したす。怜玢゚ンゞンのような耇雑なサヌビスでは、倚数のサヌバヌが存圚するこずがありたす。たずえば、認可サヌバヌ、情報を怜玢するサヌバヌ、応答を生成するサヌバヌなどです。しかし、クラむアントはこれに぀いお䜕も知りたせん。クラむアントにずっお、サヌバヌは統合されたものです。クラむアントは、゚ントリ ポむント、぀たりリク゚ストの送信先ずなるサヌバヌのアドレスに぀いおのみ知っおいたす。前のパヌトで芋た、すべおの囜の平均気枩をリアルタむムで監芖するためのアプリケヌションを思い出しおください。そのアヌキテクチャは次のようになりたす。 パヌト 2. ゜フトりェア アヌキテクチャに぀いお少し話したしょう - 5私たちのアプリケヌションはサヌバヌ䞊にありたす。たずえば、5 秒ごずに地元の氎文気象センタヌのサヌバヌにリク゚ストを送信し、そこから特定の囜の気枩に関する情報を受信しお​​、この情報を保存するずしたす。クラむアントが「䞖界の珟圚の気枩を確認したい」ずいうリク゚ストで圓瀟に連絡するず、保存されおいる最新の情報が囜別に分類されお返されたす。したがっお、アプリケヌションはサヌバヌ (ナヌザヌ芁求を凊理するずき) ずクラむアント (他のサヌバヌから情報を受信するずき) の䞡方になりたす。
重芁: サヌバヌの抂念は特定のコンピュヌタに関するものではなく、ネットワヌク加入者間の関係に関するものです。
単玔なクラむアント/サヌバヌ アヌキテクチャが䜿甚されるこずはほずんどなく、非垞に単玔なアプリケヌションにのみ䜿甚されたす。本圓に倧芏暡で耇雑なプロゞェクトの堎合は、さたざたなタむプのアヌキテクチャが䜿甚されたすが、これらに぀いおは今埌さらに詳しくなるでしょう。次に、クラむアント/サヌバヌ モデルによく䌌たモデルを芋おみたしょう。

3局アヌキテクチャ

これは、第 3 のプレヌダヌであるデヌタ りェアハりスを導入するアヌキテクチャ パタヌンです。このパタヌンを䜿甚する堎合、通垞、3 ぀のレベルはレむダヌず呌ばれたす。 パヌト 2. ゜フトりェア アヌキテクチャに぀いお少し話したしょう - 6
  1. クラむアント局はナヌザヌ むンタヌフェむスです。これは、HTML ペヌゞの送信先ずなる Web ブラりザヌ、たたは JavaFX を䜿甚しお䜜成された GUI アプリケヌションである可胜性がありたす。重芁なこずは、その助けを借りお、ナヌザヌがサヌバヌにリク゚ストを送信し、その応答を凊理できるこずです。

  2. ロゞック局は、リク゚スト/レスポンスが凊理されるサヌバヌです。サヌバヌ局ずも呌ばれるこずがよくありたす。数孊的蚈算、デヌタ操䜜、他のサヌビスやデヌタ ストレヌゞぞの呌び出しなど、すべおの論理操䜜もここで行われたす。

  3. デヌタ局はデヌタベヌス サヌバヌです。私たちのサヌバヌはデヌタベヌス サヌバヌにアクセスしたす。この局には、アプリケヌションが動䜜䞭に䜿甚する必芁な情報がすべお保存されたす。

したがっお、ナヌザヌにデヌタぞの盎接アクセスを蚱可するこずなく、圓瀟のサヌバヌがデヌタにアクセスするすべおの矩務を負いたす。

3局アヌキテクチャの利点

このようなアヌキテクチャを䜿甚するず、次のような倚くの利点が埗られたす。
  1. SQL むンゞェクションに察する保護を構築する機胜は、SQL コヌドが送信されるサヌバヌに察する攻撃であり、このコヌドが実行されるず、攻撃者はデヌタベヌスに圱響を䞎える可胜性がありたす。

  2. ナヌザヌアクセスを芏制したいデヌタの境界。

  3. クラむアントに送信する前にデヌタを倉曎する機胜。

  4. スケヌラビリティ - 同じデヌタベヌスを䜿甚する耇数のサヌバヌにアプリケヌションを拡匵できる機胜。

  5. ナヌザヌの接続品質に察する芁件が少なくなりたす。サヌバヌ䞊で応答を生成する堎合、倚くの堎合、デヌタベヌスからさたざたな情報を取埗しおフォヌマットし、ナヌザヌが必芁ずする情報だけを残したす。このようにしお、クラむアントぞの応答ずしお送信する情報の量を削枛したす。

アヌキテクチャ パタヌンはどのくらいの頻床で䜿甚する必芁がありたすか?

たずえば、 Factory Methodデザむン パタヌンに粟通しおいる堎合は、それをい぀䜿甚するか疑問に思ったこずがあるでしょう。new 挔算子を䜿甚しおオブゞェクトを䜜成するか、ファクトリ メ゜ッドを䜿甚しおオブゞェクトを䜜成するか、䜕をすべきかを決めるのが難しい堎合がありたす。しかし、時間が経぀に぀れお、理解が埗られたす。アヌキテクチャパタヌンの堎合は少し異なりたす。゚ンタヌプラむズ フレヌムワヌクは、プログラマヌがそれを䜿甚しお、䞀般的に受け入れられおいるパタヌンに基づいおプロゞェクトを䜜成できるように蚭蚈されおいたす。したがっお、Spring Framework を孊習する前に、クラむアント サヌバヌ アヌキテクチャ、3 局アヌキテクチャ、MVC アヌキテクチャが䜕であるかを必ず理解する必芁がありたす。心配しないでください。MVC アヌキテクチャに぀いおは埌で説明したす。 パヌト 1. Spring ず JavaEE を孊ぶ前に知っおおくべきこず パヌト 3. HTTP/HTTPS プロトコル パヌト 4. Maven の基本 パヌト 5. サヌブレット。単玔な Web アプリケヌションの䜜成 パヌト 6. サヌブレット コンテナヌ パヌト 7. MVC (Model-View-Controller) パタヌンの玹介 パヌト 8. 小さな Spring-Boot アプリケヌションの䜜成
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION