マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

ASP.NETのコンパイルには、6個のモデルがある。

  • 1つのJITコンパイル
  • 5つのプリコンパイル オプション
    ASP.NETコンパイル ツール(Aspnet_compiler.exe)

このコンパイル モデルの説明とメリット・デメリットを下記に纏める。

コンパイル モデル

既定のコンパイル(JITコンパイル)

説明

  • 初期要求時に、JITコンパイラによりコンパイルされる。
  • アプリケーション内のファイルに変更を加えると、次回ページが要求されたとき、
    変更されたファイルに対する依存関係を判断し、影響のあるファイルのみを、再びJITコンパイルする。

以下のケースで有用。

  • Webサイトを開発してテストする場合。
  • 静的な情報を主とするWebサイトを対象とする場合。
  • 頻繁な変更がないWebサイトを対象とする場合。

メリット

  • 簡単に使用でき、初期応答以降は、応答速度に遅延が生じない。

デメリット

  • 初期要求時にJITコンパイラによりコンパイルされるため、初期応答速度に遅延が生じる。
  • また、本番環境にソース コード ファイルを格納する必要があり、コード流出の可能性がある。
    • 本番環境の管理者に参照されるケース
    • Webサーバのセキュリティ ホールによりプログラム コードがダウンロードされるケース
    • などを想定している。

参考

既定で、Web アプリケーションをコンパイルすると、
コンパイルされたコードは Temporary ASP.NET Files フォルダに配置される。

埋め込み先コンパイル

  • ASP.NETコンパイル ツールを「-targetDir」スイッチを指定しないで実行することにより、
    開発フォルダ内でWebアプリケーションをJITコンパイルする。
  • これを本番環境に配置した後、アプリケーション内のファイルを直接変更した場合、
    次回ページが要求されたとき、変更されたファイルに対する依存関係を判断し、
    影響のあるファイルのみを、再びJITコンパイルする。

以下のケースで有用である。

  • 頻繁に変更されるWebサイトを対象とする場合。
  • 初期応答速度を短くする必要がある場合。

メリット

  • 簡単に使用でき、応答速度に遅延が生じない。
  • 本番環境にソース コード ファイルを格納する必要がある。

デメリット

  • また、アプリケーション内のファイルを変更した場合は、
    JITコンパイラによりコンパイルされるため、初期応答速度に遅延が生じる。

UIを更新できるプリコンパイル

  • ASP.NETコンパイル ツールの「-u」スイッチを使用することにより、
    ソース コードのみをDLLにコンパイルし、UIコード(「*.aspx」ファイルなど)は更新できるように残すことができる。
  • 本番環境にWebサイトを配置した後でもWebサイト全体を再コンパイルすることなく、UIコードを変更できる。

メリット

  • 簡単に使用でき、最初のページ要求時の応答時間を短くできる。
  • Webサイト全体を再コンパイルすることなく、Webサイトの外観や動作を変更できる。
  • プログラム コードという知的財産を保護できる。

デメリット

  • アプリケーションのすべてのUIコード(*.aspx)を本番環境に格納する必要がある。

UIを更新できないプリコンパイル

ASP.NETコンパイル ツールを「-u」スイッチを指定しないで実行することにより、ソース コード・UIコードをDLLにコンパイルできる。

メリット

  • 最初のページ要求時の応答時間を短くできる。
  • ソース コード・UIコードという知的財産を保護できる。
  • 配置前にコンパイルを個別に実行する必要がある。

デメリット

  • アプリケーションのUIに小さい変更を加えた場合でも、
    Webサイト全体を再コンパイルする必要がある。

固定名アセンブリへのプリコンパイル

  • ASP.NETコンパイル ツールのデフォルトの設定では、再コンパイルのたびアセンブリ名が変わる。
    このため、1つのアセンブリを提供するためにアプリケーション全体を再配置する必要がある。
  • しかし「-fixednames」スイッチを指定して実行すると
    アプリケーションの各ページに対して1つの固定名アセンブリを作成できる。
    このため、変更したアセンブリのみ差分配置できる。

メリット

  • アプリケーションに対して小さい更新を行う場合、他の方法より小さな更新で済む。

デメリット

  • アプリケーション内の各ページに対して1つのアセンブリが作成される。
  • これにより、多くのページで構成されるサイトの場合、多くのアセンブリが生成される。

署名されたアセンブリへのプリコンパイル

ASP.NETコンパイル ツールを使用して、厳密名 付きのアセンブリを作成できる。

メリット

  • 厳密名付きのアセンブリを使用するとアセンブリを不正なコードで置換することが困難になる。
  • これによって、アプリケーションのセキュリティが向上する。

デメリット

  • 共有開発環境でのキー管理が複雑になる。
  • FullTrust?でないアセンブリから厳密名付きのWebサイトから厳密名付きのアセンブリを呼び出す場合、
    呼び出し先の厳密名付きのアセンブリはAllowPartiallyTrustedCallersAttribute?属性を持っている必要がある。

プリコンパイル オプションと[MSBuildオプション]の関連

  • Visual StudioのWebサイトの[プロパティ ページ]ダイアログのリストから、
    [MSBuildオプション]を選択し、以下のチェック ボックスを変更する。
  • 各プリコンパイル オプションを組み合わせて利用することもで、
    「UIを更新可能な固定名・単一ページアセンブリ」というコンパイルも可能である。

[このプリコンパイル済みサイトを更新可能にする]

=UIを更新できるプリコンパイル

[固定名および単一ページ アセンブリを使用する]

=固定名アセンブリへのプリコンパイル

[このプリコンパイル済みアセンブリで厳密な名前を有効にする]

=署名されたアセンブリへのプリコンパイル


Tags: :.NET開発, :デプロイ


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-05 (水) 13:47:08 (803d)