アプリサーバー、ウェブサーバー:違いは何ですか?

2002年8月23日

Q:アプリケーションサーバーとWebサーバーの違いは何ですか?

A:

WebサーバーはHTTP要求のみを処理しますが、アプリケーションサーバーは任意の数のプロトコルを介してアプリケーションプログラムにビジネスロジックを提供します。

それぞれをさらに詳しく調べてみましょう。

Webサーバー

WebサーバーがHTTPプロトコルを処理します。 WebサーバーはHTTP要求を受信すると、HTMLページの返送などのHTTP応答で応答します。リクエストを処理するために、Webサーバーは静的HTMLページまたはイメージで応答するか、リダイレクトを送信するか、動的応答の生成をCGIスクリプト、JSP(JavaServer Pages)、サーブレット、ASP(Active Server Pages)などの他のプログラムに委任します。 )、サーバーサイドJavaScript、またはその他のサーバーサイドテクノロジー。その目的が何であれ、そのようなサーバー側プログラムは、Webブラウザーで表示するために、ほとんどの場合HTMLで応答を生成します。

Webサーバーの委任モデルはかなり単純であることを理解してください。要求がWebサーバーに着信すると、Webサーバーは、要求を最も適切に処理できるプログラムに要求を渡すだけです。Webサーバーは、サーバー側プログラムが実行され、生成された応答を返すことができる環境を提供する以外の機能を提供しません。サーバー側プログラムは通常、トランザクション処理、データベース接続、メッセージングなどの機能を提供します。

Webサーバー自体はトランザクションやデータベース接続プールをサポートしていない場合がありますが、負荷分散、キャッシュ、クラスタリングなど、フォールトトレランスとスケーラビリティのためのさまざまな戦略を採用している場合があります。これらの機能は、アプリケーションサーバー専用の機能として誤って割り当てられることがよくあります。

アプリケーションサーバー

アプリケーションサーバーに関しては、私たちの定義によれば、アプリケーションサーバーはさまざまなプロトコル(おそらくHTTPを含む)を介してビジネスロジックをクライアントアプリケーションに公開します。 Webサーバーは主にWebブラウザーに表示するためのHTMLの送信を処理しますが、アプリケーションサーバーはクライアントアプリケーションプログラムで使用するためのビジネスロジックへのアクセスを提供します。アプリケーションプログラムは、オブジェクト(または手続き型の世界の関数)のメソッドを呼び出すのと同じように、このロジックを使用できます。

このようなアプリケーションサーバークライアントには、PC、Webサーバー、またはその他のアプリケーションサーバーで実行されるGUI(グラフィカルユーザーインターフェイス)を含めることができます。アプリケーションサーバーとそのクライアント間を行き来する情報は、単純な表示マークアップに限定されません。代わりに、情報はプログラムロジックです。ロジックは静的HTMLではなくデータとメソッド呼び出しの形式をとるため、クライアントは公開されたビジネスロジックを好きなように使用できます。

ほとんどの場合、サーバーは、J2EE(Java 2 Platform、Enterprise Edition)アプリケーションサーバーにあるEJB(Enterprise JavaBean)コンポーネントモデルなどのコンポーネントAPIを介してこのビジネスロジックを公開します。さらに、アプリケーションサーバーは独自のリソースを管理します。このようなゲートキーピングの義務には、セキュリティ、トランザクション処理、リソースプーリング、およびメッセージングが含まれます。Webサーバーと同様に、アプリケーションサーバーもさまざまなスケーラビリティとフォールトトレランスの手法を採用できます。

例として、リアルタイムの価格と在庫情報を提供するオンラインストアについて考えてみます。ほとんどの場合、サイトはあなたが製品を選ぶことができるフォームを提供します。クエリを送信すると、サイトはルックアップを実行し、HTMLページに埋め込まれた結果を返します。このサイトは、この機能をさまざまな方法で実装できます。アプリケーションサーバーを使用しないシナリオと使用するシナリオを紹介します。これらのシナリオがどのように異なるかを確認すると、アプリケーションサーバーの機能を確認するのに役立ちます。

シナリオ1:アプリケーションサーバーのないWebサーバー

最初のシナリオでは、Webサーバーだけがオンラインストアの機能を提供します。Webサーバーは要求を受け取り、それを要求を処理できるサーバー側プログラムに渡します。サーバー側プログラムは、データベースまたはフラットファイルから価格情報を検索します。取得されると、サーバー側プログラムはその情報を使用してHTML応答を作成し、WebサーバーはそれをWebブラウザーに送り返します。

要約すると、WebサーバーはHTMLページで応答することによってHTTP要求を処理するだけです。

シナリオ2:アプリケーションサーバーを備えたWebサーバー

シナリオ2は、Webサーバーが引き続き応答の生成をスクリプトに委任するという点でシナリオ1に似ています。ただし、価格設定ルックアップのビジネスロジックをアプリケーションサーバーに配置できるようになりました。この変更により、スクリプトがデータを検索して応答を作成する方法を知る代わりに、スクリプトはアプリケーションサーバーのルックアップサービスを呼び出すことができます。スクリプトは、スクリプトがHTML応答を生成するときに、サービスの結果を使用できます。

このシナリオでは、アプリケーションサーバーは、製品の価格情報を検索するためのビジネスロジックを提供します。その機能は、表示やクライアントが情報をどのように使用する必要があるかについては何も述べていません。代わりに、クライアントとアプリケーションサーバーはデータをやり取りします。クライアントがアプリケーションサーバーのルックアップサービスを呼び出すと、サービスは単に情報をルックアップしてクライアントに返します。

価格設定ロジックをHTML応答生成コードから分離することにより、価格設定ロジックはアプリケーション間ではるかに再利用可能になります。レジなどの2番目のクライアントも、店員が顧客をチェックアウトするのと同じサービスを呼び出すことができます。対照的に、シナリオ1では、情報がHTMLページに埋め込まれているため、価格検索サービスは再利用できません。要約すると、シナリオ2のモデルでは、WebサーバーはHTMLページで応答することによってHTTP要求を処理し、アプリケーションサーバーは価格設定と可用性の要求を処理することによってアプリケーションロジックを処理します。

警告

最近、XML Webサービスは、アプリケーションサーバーとWebサーバーの間の境界線を曖昧にしました。XMLペイロードをWebサーバーに渡すことにより、Webサーバーはデータを処理し、アプリケーションサーバーがこれまでと同じように応答できるようになりました。

さらに、ほとんどのアプリケーションサーバーにはWebサーバーも含まれています。つまり、Webサーバーをアプリケーションサーバーのサブセットと見なすことができます。アプリケーションサーバーにはWebサーバー機能が含まれていますが、開発者がその容量でアプリケーションサーバーを展開することはめったにありません。代わりに、必要に応じて、スタンドアロンWebサーバーをアプリケーションサーバーと並行して展開することがよくあります。このような機能の分離は、パフォーマンス(単純なWeb要求はアプリケーションサーバーのパフォーマンスに影響を与えません)、展開構成(専用のWebサーバー、クラスタリングなど)を支援し、最善の製品の選択を可能にします。

Tony Sintesは、独立したコンサルタントであり、異種のエンタープライズシステムとトレーニングの橋渡しを専門とするコンサルティング会社であるFirst ClassConsultingの創設者です。ファーストクラスコンサルティング以外では、トニーはアクティブなフリーランスライターであり、Sams Teach Yourself Object-Oriented Programming in 21 Days(Sams、2001; ISBN:0672321092)の著者でもあります。

このトピックの詳細

  • アプリケーションサーバーに関するその他の記事については、JavaWorldのトピックインデックスのJavaアプリケーションサーバー」セクションを参照してください。

    //www.javaworld.com/channel_content/jw-appserv-index.shtml

  • もっと欲しい?完全なQ&Aカタログについては、Java Q&Aインデックスページを参照してください。

    //www.javaworld.com/columns/jw-qna-index.shtml

  • ビジネスの最高の頭脳からの100以上の洞察に満ちたJavaのヒントについては、JavaWorldJavaのヒントのインデックスページにアクセスしてください。

    //www.javaworld.com/columns/jw-tips-index.shtml

  • Enterprise Javaのディスカッションで、アプリケーションサーバーとWebサーバーの詳細をご覧ください。

    //forums.idg.net/[email protected]@.ee6b80a

  • JavaWorldの無料の毎週のエンタープライズJava電子メールニュースレターにサインアップしてください

    //www.javaworld.com/subscribe

  • .netの姉妹出版物からIT関連の記事が豊富にあります。

このストーリー、「アプリサーバー、Webサーバー:違いは何ですか?」もともとJavaWorldによって公開されました。