ASPとASP.Net

ASPASP.Netは非常に異なるプログラミング言語です。 ASPはスクリプト言語です。ASP.NETはコンパイルされた言語(Visual Basic、C#、J#、C ++ 、. Net)のWeb形式です。 さらに、ASPとは異なり、ASP.NETはオブジェクト指向言語です。

プロセス分離

ASPは、inetinfo.exe(IIS)プロセス空間で実行されるため、IISの停止または再起動によるアプリケーションクラッシュの影響を受けやすくなります。

一方、ASP.NETワーカープロセスは、IISプロセスinetinfo.exeとは別個のプロセス(aspnet_wp.exe)です。 ASP.NETのプロセスモデルは、IISのプロセス分離設定とは無関係です。

解釈とコンパイル

従来のASPページが要求されると、そのページのテキストは線形に解析されます。 サーバー側スクリプトではないすべてのコンテンツは、そのまま応答にレンダリングされます。 ページ内のすべてのサーバー側スクリプトは、適切なインタープリター(JScriptまたはVBScript)を介して最初に実行され、その出力が応答にレンダリングされます。

対照的に、ASP.NETページは常に、アセンブリ内に格納されている.NETクラスにコンパイルされます。 このクラスにはすべてのサーバー側コードと静的HTMLが含まれているため、ページに初めてアクセスすると(または特定のディレクトリ内のページにアクセスすると)、コンパイルされたコードを実行することでそのページの後続のレンダリングが処理されます。 これにより、従来のASPのスクリプトモデルの非効率性がすべて排除されます。

パフォーマンスへの影響

  • ASPスクリプトはオンザフライで解釈されるため、パフォーマンスに影響があります。 したがって、ASPアプリケーションの一般的な最適化は、多くのサーバー側スクリプトをプリコンパイルされたCOMコンポーネントに移動して、応答時間を改善することです。 ASP.NETのすべてのコンポーネントはアセンブリであるため、サーバー側コードを使用してもパフォーマンスが低下することはありません。
  • ASPでは、インタープリタを複数回呼び出す必要があるため、サーバー側の評価ブロックと静的HTMLの混在は、単一のサーバー側のスクリプトブロックよりも効率が低くなります。 これを避けるために、多くのASP開発者は静的なHTML要素をResponse.Write()呼び出しに置き換えて、サーバー側スクリプトの大きなブロックに頼ります。 ASP.NETの場合、このような手順はパフォーマンスの向上には必要ありません。
  • ASPでは、ページ内のさまざまなスクリプトブロックをさまざまなスクリプト言語で記述できます。 これはいくつかの点で魅力的かもしれませんが、特定のページが両方のスクリプトエンジン(JScript、VBScript)をロードして要求を処理する必要があるため、パフォーマンスが低下します。 ASP.NETには、解析およびコンパイルされる.aspxファイルに「コードビハインド」があります。 1つの.aspxファイル内で複数のサーバー側言語を使用することはできません。

デバッグ

ASPには解釈されるスクリプトが含まれるため、デバッグは困難です。 ただし、ASP.NETでは、.NET開発者が利用できるすべてのツールが.aspx開発者に適用されます。 ページのエラーはコンパイラエラーとして生成されます。VB.NETとC#はどちらも厳密に型指定された言語であるため、ほとんどのエラーは実行時ではなくコンパイル時に検出される可能性が高くなります。

関連記事