2011-01-07 9 views
1

私の意見では、Webサーバーはに、のコンテンツをクライアントに配信する責任があります。それが写真と静的なHTML文書のような内容ののスタティックの場合、ウェブサーバはビットストリームとして直接それらを配信します。クライアントの要求の処理中に生成される動的コンテンツである場合、Webサーバーはではないはconetnt自体を生成しますが、コンテンツを生成するために外部プロラムを呼び出します。ウェブサーバープログラムとコンテンツプロバイダープログラムの間の相互作用パラダイムの進化は何でしたか?

私の知る限り、dynamiceコンテンツ生成技術のこの種は、次のとおりです。

  • CGI

  • ISAPI

  • ...

そしてhereから、私は気づいた:

... IIS 7では、モジュールはISAPI フィルターを交換...

は、他のものはありますか?誰も私が上記のリストを完成させ、それらにいくつかのリンクを詳しく述べることができますか 進化?私は、IIS、TomCat、Apacheなどのアプリケーションを理解することは非常に役立つと思います。

私はかつて、小さなCGIプログラムを書き、それがコンテンツ生成となっているが、それはまだ通常のスタンドアロンのプログラム以外の何ものでもありません。 CGIプログラムにはmain()エントリーポイントがあるので、私はそれを普通と呼んでいます。しかし、ASP.NETのようなrecenetly技術では、私は完全なプログラムを書くのではなく、いくつかのクラスライブラリだけです。 なぜこのような根本的な変化が起こりますか?

多くのありがとう。

答えて

1

あなたの質問の中で最大の欠点は、ウェブサーバーにコンテンツを動的に生成させることができることです。これは、PHPとPerl以外のほとんどのプラットフォームでよく見られます。そのWebサイトをApacheまたはnginxの背後にプロキシとして設定することがよくありますが、合理的な意味で「外部のプログラム」を呼び出すのではなく、HTTP要求をプロキシサーバーに転送します。これは主に同じサーバー上に複数のサイトを持つことができるように行われています。また、apache/nginxを使って不正なリクエストからあなたを守ることもできます。

もちろん、「プロキシ」は外部プログラムを呼び出す方法です。 :-)

「外部プログラムを呼び出す」もう1つの方法はPythons WSGIです。そこでは永続的に動作するサーバーを呼び出します。だからもう一度外部プログラムを起動しないでください。これはASPでモジュールを呼び出すようなものです(モジュールではなく別のプログラムですが、すべてのリクエストで起動するのではなく、APIを使用します)。

CGIのような外部プログラムの呼び出しから、ASPのような呼び出しモジュールへの変更。NET、WGIでの処理、または別のWebサーバーへのプロキシーが起こったのは、CGIでは各要求に対して新しいprpogramを開始する必要があるからです。 PERL/PHPインタプリタは、メモリに書き込まれる必要があります。これはすぐに非常に重くなり、プロセス/メモリが集中します。

したがって、永続的に実行されるより大きなシステムを使用できるようにするために、他の技術が開発されています。それらのほとんどはプラットフォーム/言語に依存しており、プラットフォームに依存しない唯一のものは本当に完全なWebサーバーを作成してから、apache/nginxをプロキシとして使用することです(この場合、apache/nginxは厳密には必要ありません)。

私はこれをクリアしてほしい。

0

fastcgiとwsgiは、ジェネレータがWebサーバと対話するために使用できる2つのインタフェースです。最近のインタフェースは完全なプログラムではない理由は、実行ファイルが必要なものをフォークし実行するのはコストがかかるからです。

OTOHは、呼び出しの間に何も漏れないような方法で小さなジェネレータを書くのは、最後に終了するだけでなく(通常の実行可能ファイルのような環境変数とコマンドライン引数に依存する) 。

これはすべてパフォーマンス上の理由からですが、Webサーバーでは複雑なコンテンツジェネレータとプロセス管理があります。

関連する問題