ホームページ  >  記事  >  バックエンド開発  >  CGI とサーブレットの実行方法の本質的な違いは何ですか? PHP と Java の Web 開発の原則の本質的な違いは何ですか?

CGI とサーブレットの実行方法の本質的な違いは何ですか? PHP と Java の Web 開発の原則の本質的な違いは何ですか?

WBOY
WBOYオリジナル
2016-12-01 00:01:151835ブラウズ

返信内容:

現在、CGI モードで実行されているサーバーは存在しないはずです。これが、この契約が現在も継続できる主な理由です。サーブレットは、Python の WSGI に似ています。Web サーバーと Web アプリケーションを明確に分離できるため、Web アプリケーションはサーブレット インターフェイスを一度呼び出すことができます。 Web サーバーがマルチスレッド、マルチプロセス、または多重化を使用しているかどうかなどの技術的な詳細ですが、このインターフェイスを実装するだけで済みます。プログラミングインターフェースであるため、サーブレットはJavaでのみ使用できます。他の言語はサーブレットでプログラミングできません。
FastCGIはネットワークです。プロトコルはソケット上で動作し、言語に依存しません。従来、CGI はリクエストが来るたびにサーバーからプロセスをフォークするのが一般的でした。CGI はそのリクエストのみを処理し、処理が完了すると終了するという処理プロセスでした。標準入力データ、標準出力からの HTTP 応答を出力します。プロセスを常に作成および破棄する必要があるため、この実装のパフォーマンスは比較的低く、その機能にも多くの制限があります。 FastCGI は CGI を改良したもので、1 つの接続で複数の連続したリクエストを受け入れ、それらを 1 つずつ処理するため、スループットが向上します。 FastCGI は、CGI と同様、言語とは関係ありません。FastCGI プロトコルに従っている限り、どの言語でも使用できます。ただし、通常、1 つの接続で一度に処理できるリクエストは 1 つだけです。そのため、ある程度の同時実行性を達成する必要があります (FastCGI にも多重化の機能がありますが、それがどの程度サポートされているかはわかりません)

しかし、実際には、Web アプリケーションの観点からは、 2 つの違いは大きくありません。PHP は FastCGI を使用しますが、各リクエストは 1 回ずつ呼び出されます。多くの PHP プログラマは、保守を困難にするために Web ページとコードを混在させることを好みますが、PHP は Java のような MVC を使用する OOP の使用もサポートしており、Java はコードを埋め込むことができる JSP などのテンプレートもサポートしています。たとえば、Java は同じプロセスで動作し、グローバル オブジェクトを呼び出すことができ、追加のスレッド プールを使用できるなど、いくつかの違いがあります。一方、PHP オブジェクトのライフサイクルは基本的に 1 つのリクエストの範囲に限定されますが、多くの点が異なります。は依然として同様であり、すべてリクエスト指向のプログラミングです。 違いを確認するには、単純なサーバー コードから始めます
CGI Python の組み込み CGIHTTPServer を見てください。主なコードは次のとおりです。 run_cgi では、プロセスをフォークしてから、サーバーと親子関係を持っています。プロセス

サーブレットの spring+jetty を参照してください。CGI とサーブレットの実行方法の本質的な違いは何ですか? PHP と Java の Web 開発の原則の本質的な違いは何ですか?
アプリのコードとサーバーは同じプロセス内にあります
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。