CGIとサーブレットの違い

Anonim

プログラムをユーザーが実行できるようにします。これにより、ユーザーはサーバーに常駐するプログラムを実行してデータを処理したり、データベースにアクセスして関連するコンテンツを作成したりすることができます。これらはプログラムであるため、ネイティブオペレーティングシステムで記述され、特定のディレクトリに格納されます。サーブレットは、CGIと同じサービスを提供することを目的としたJavaの実装ですが、ネイティブオペレーティングシステムでコンパイルされたプログラムの代わりにJavaバイトコードにコンパイルされ、Java仮想マシンで実行されます。 Javaプログラムはネイティブコードにコンパイルすることができますが、Javaバイトコードでコンパイルすることを選択します。

<! - 1 - >

CGI上のサーブレットの最初の利点は、プラットフォームに依存しないことです。サーブレットは、JVMがインストールされている限り、どのオペレーティングシステムでも実行できます。つまり、オペレーティングシステムの切り替えを選択しても問題はありません。 CGIでは、新しいオペレーティングシステムでプログラムを再コンパイルする必要があるため、オペレーティングシステムの切り替えは困難で面倒なプロセスです。

<! CGIで独立したプログラムを実行しているので、実行時に独自のプロセスを作成します.JVMのメモリ空間を共有するだけのサーブレットでは発生しません。これは、特に指数関数的にユーザー数を増やす場合に、オーバーヘッドに関連する問題につながります。また、プログラムがサーバー上で実行された後にプログラムが制御されないため、脆弱性の問題も発生します。

<! - 3 - >

その後、CGIを使うときのより一般的な方法は、スクリプト経由です。これにより、プログラムの作成に必要な時間が短縮され、一般的にはより安全になります。 CGIでは、スクリプトをすぐに実行できますが、サーブレットの場合は、スクリプトをJavaに変換してサーブレットにコンパイルして、読み込み時間を少し増やす必要があります。要約:

1。 CGIは通常サーバーのオペレーティングシステムにネイティブな実行ファイルですが、サーブレットはネイティブOSにコンパイルすることもできますが、JavaバイトコードにコンパイルしてJVMで実行することもできます。 CGIプログラムはプラットフォームに依存しますが、サーブレットはプラットフォームに依存しません

3。 CGIプログラムは、サーブレットがJVM

4上で実行されている間は、コンピュータ上で別々のプロセスとして実行されます。 CGIはサーブレットよりも攻撃に対する脆弱性があります。

5。 CGIは、サーブレットとして実行できるようになる前に、スクリプトを翻訳してコンパイルする必要がある間にスクリプトを直接処理できます。