次の方法で共有


ASP.NET コンパイルの概要

更新 : 2007 年 11 月

アプリケーション コードがユーザーからの要求に対してサービスを提供できるように、最初に、ASP.NET がそのコードを 1 つ以上のアセンブリにコンパイルする必要があります。アセンブリは、ファイル名拡張子 .dll を持つファイルです。ASP.NET コードは Visual Basic、C#、J# などさまざまな言語で記述できます。コードはコンパイルされると、言語にも CPU にも依存しない Microsoft Intermediate Language (MSIL) と呼ばれる表現に変換されます。実行時、MSIL は .NET Framework のコンテキストで実行します。.NET Framework 上で、MSIL はアプリケーションを実行するコンピュータ上のプロセッサに対する CPU 固有の命令に変換されます。

アプリケーション コードをコンパイルすると、次のような多くの利点がもたされます。

  • **パフォーマンス   **コンパイルされたコードは、マシン コードに近い表現であり、追加の解析が不要なので、ECMAScript や VBScript などのスクリプト言語よりも高速に動作します。

  • **セキュリティ   **コンパイルされたコードは、高水準言語の読みやすさも抽象度も欠いているため、コンパイルされていないソース コードよりもリバース エンジニアリングが困難です。また、コンパイルされたコードをリバース エンジニアリングからさらに防御する難読化ツールもあります。

  • 安定性   コンパイル時、構文エラー、タイプ セーフ、およびその他の問題について、コードのチェックが行われます。ビルド時にこれらのエラーをキャッチすることにより、コードから多くのエラーを取り除くことができます。

  • 相互運用性   MSIL コードはすべての .NET 言語をサポートしているので、別の言語で記述されたアセンブリを使用できます。たとえば、ASP.NET Web ページを C# で記述している場合に、Visual Basic で記述された .dll ファイルへの参照を追加できます。

ASP.NET のコンパイル アーキテクチャには、次のような特長があります。

  • 複数言語のサポート

  • 自動コンパイル

  • 柔軟な配置

  • 拡張ビルド システム

次のセクションで、これらの各機能について説明します。

複数言語のサポート

ASP.NET 2.0 では、言語ごとに 1 つずつアセンブリが複数作成されるので、Visual Basic や C# など、異なる言語を同じアプリケーションで使用できます。App_Code フォルダに格納されているコードに対して、言語ごとにサブフォルダを指定できます。App_Code フォルダの詳細については、「ASP.NET Web サイト内の共有コード フォルダ」を参照してください。

自動コンパイル

ASP.NET は、Web サイトからリソースが初めて要求されたときに、アプリケーション コードと依存するリソースを自動的にコンパイルします。通常、ASP.NET は、各アプリケーション ディレクトリ (App_Code など) に 1 つのアセンブリ、およびメイン ディレクトリに対して 1 つのアセンブリを作成します。ディレクトリにプログラミング言語が異なる複数のファイルがある場合、各言語に対して個別にアセンブリが作成されます。Web.config ファイルの Compilation セクションに、単一のアセンブリにコンパイルされるディレクトリを指定できます。

柔軟な配置

ASP.NET がユーザーからの初回要求時に Web サイトをコンパイルするので、配置は、アプリケーションのソース コードを実行用 Web サーバーにコピーするだけという簡単なものになります。ただし、ASP.NET に用意されているプリコンパイル オプションを使用すると、Web サイトを配置する前にサイトをコンパイルしたり、サイトを配置してからユーザーが要求するまでの間にコンパイルしたりもできます。プリコンパイルには、いくつかの利点があります。ASP.NET が Web サイトをコンパイルすることによる遅延時間が発生しないので、初回要求時の Web サイトのパフォーマンスが向上します。また、プリコンパイルを行うことにより、通常であればユーザーがページを要求したときにのみ検出されるエラーを検出できます。さらに、Web サイトを配置する前にプリコンパイルすると、ソース コードの代わりにアセンブリを配置できます。

ASP.NET コンパイラ ツール (ASPNET_Compiler.exe) を使用して、Web サイトをプリコンパイルできます。このツールには、次のプリコンパイル オプションがあります。

  • 埋め込み先コンパイル   このオプションは、動的コンパイル時に発生するコンパイルと同じコンパイルを実行します。運用サーバーに配置済みの Web サイトをコンパイルするためのオプションです。

  • 更新不可能な完全プリコンパイル   アプリケーションをコンパイルしてから、コンパイルされた出力を運用サーバーにコピーできます。すべてのアプリケーション コード、マークアップ、および UI コードがアセンブリにコンパイルされます。.aspx ページなどのプレースホルダ ファイルは引き続き存在するので、アクセス許可の設定など、ファイル固有のタスクは実行できますが、これらのファイルには更新可能なコードは含まれません。いずれかのページまたはコードを更新するには、Web サイトを再度プリコンパイルし、配置し直す必要があります。

  • 更新可能なプリコンパイル   このオプションは、.aspx ページや .ascx コントロールなどの UI 要素がそれぞれのマークアップ、UI コード、およびインライン コードをすべて保持するという点を除き、更新不可能な完全プリコンパイルと同じです。配置後でもファイル内のコードを更新できます。ASP.NET がファイルへの変更を検出し、再コンパイルします。分離コード ファイル (.vb ファイルまたは .cs ファイル) 内のコードはプリコンパイルでアセンブリにビルドされているので、変更した場合、プリコンパイルと配置を再度実行することが必要になります。

詳細については、「ASP.NET のプリコンパイルの概要」を参照してください。

拡張ビルド システム

ASP.NET は BuildProvider クラスを使用して、.aspx ページ、.ascx ファイル、グローバル リソースなどのアイテムをビルドします。ASP.NET ビルド システムは、カスタム リソースをコンパイルできるように、BuildProvider クラスから継承されたクラスを作成して拡張したり、カスタマイズしたりできます。たとえば、新しいファイルの種類を追加し、そのファイルの種類をビルドする BuildProvider を作成することもできます。

参照

参照

compilation 要素 (ASP.NET 設定スキーマ)