Open棟梁Project - マイクロソフト系技術情報 Wiki
目次  †
概要  †
Visual Studioの、「ソリューション」・「プロジェクト」の構成を検討する際のポイントについて説明する。
ソリューション・プロジェクト  †
Visual Studioでは、開発するプログラムを、ソリューション・プロジェクトという単位で管理する。
- 1つのプログラムは、1-複数のアセンブリ(EXEやDLLファイル)から構成される場合がある。
 
- 1つのWebサイト・Webアプリケーションも、1-複数のアセンブリやコンテンツ ファイルから構成される。
 
- また、各アセンブリをコンピュータにインストールするための
「セットアップ プログラム」・「Webセットアップ プログラム」などがある。 
プロジェクト  †
- プロジェクトのビルドに関する構成情報を保持している。
 
- 1つのアセンブリを作成するには、1つの「プロジェクト」が必要になる。
 
- 1つの基本的なプロジェクトは1つのアセンブリを出力する(EXE、DLL)。
 
プロジェクト ファイル  †
- *.csproj(C#用)、*.vbproj(VB用)などの拡張子を持つ。
 
- WindowsアプリケーションのVBプロジェクトのプロパティの例
- アプリケーション
- アセンブリ名
 
- 名前空間
 
- アプリケーションの種類
 
- アイコン
 
- スタートアップ フォーム
 
- フレームワーク
 
- プロパティ
 
- ,etc.
 
 
 
- コンパイル
- ビルド出力パス
 
- 詳細コンパイル オプション
 
- Option Explicit,Strict,Compare
 
- 警告・エラーの表示
 
- ,etc.
 
 
- 参照
アセンブリやCOMコンポーネントなど、
プロジェクトで使用するコンポーネントの参照設定を設定する。 
- リソース
プロジェクトのリソースを設定する。
- 文字列
 
- イメージ
 
- アイコン
 
- オーディオ
 
- ファイル
 
- ,etc.
 
 
- 設定
app.configのユーザ セッティング情報を設定する。 
- 署名
アセンブリに厳密名などのアセンブリ署名をしたりする。 
分割の意味  †
- モジュール単位の変更
 
- 配布単位の変更(アセンブリでの配布)
 
ソリューション  †
- 全体のビルドに関する構成情報を保持している。
 
- 複数のアセンブリから構成されるアプリケーションを作成できる。
 
- このような構成を行う場合、以下の2通りの方法がある。
- 複数のアセンブリををプロジェクトでまとめる(バイナリ参照)。
 
- 複数のプロジェクトをソリューションでまとめる(プロジェクト参照)。
 
 
ソリューション ファイル  †
分割の意味  †
- ビルド単位の変更
 
- 配布単位の変更(MSIでの配布)
 
参照設定の選択  †
プロジェクト参照  †
- プロジェクトに対して参照設定を行う。
 
- ビルド順も自動的に管理され、バージョンの不一致などが起こり難く使い易い。
 
- 参照先のプロジェクトの変更・差し替えが容易なので、
FIXしていないモジュールに対してはプロジェクト参照を使用する。 
バイナリ参照  †
- 参照先のバイナリの変更・差し替えが面倒なので、
FIXしたモジュールに対してはバイナリ参照を使用する。 
分割のメリット・デメリット  †
一般的に小規模開発の場合は分割を少なくして、大規模開発の場合に分割を検討する。
メリット  †
- 管理が容易になる。
 
- 開発作業の分担が可能になる。
 
- 部品化等により差し替えが容易になる。
 
- 修正箇所毎、ビルド範囲を絞る事ができる。
 
デメリット  †
- 管理が煩雑になる。
 
- 開発作業の分担ができなくなる。
 
- 部品化等により差し替えができなくなる。
 
- 修正箇所毎、ビルド範囲を絞る事ができなくなる。
 
Webアプリケーション、Webサイト  †
IISのアプリケーションとの関係  †
1つのWebアプリケーション・Webサイトは、1つのIISのアプリケーションと対応する。
複数ののWebアプリケーション・Webサイトを1つのIISのアプリケーションに纏めることはできない。
- Server.Transferは不可能。
 
- Response.Redirect, LinkなどのGetメソッドは可能。
 
- クロスページ ポストバックなどのPOSTメソッドは可能。
 
以下の状態管理技術は、異なるアプリケーション ドメインと情報共有できない。
- Applicationオブジェクト
 
- 静的変数
 
- Cacheオブジェクト
 
- Sessionオブジェクト
 
- その他
- ViewState?は同一WebForm?画面内でのみ有用。
 
- HttpContext?は、Server.Transfer画面遷移の間で有用
 
 
以下の状態管理技術は、異なるアプリケーション ドメインと情報共有できる。
- QueryString?
 
- Cookie
 
- Hidden
 
- ASP.NETのForms認証のCookie認証チケット
ASP.NET2.0から認証チケットを複数のサイト間で共有する仕組みが用意され、複数のサイト間で利用できるようになった。 
各状態管理技術については、コチラを参照。
配置方法  †
Webサイトを本番環境に配置する方法には、
- ファイル・フォルダのコピー
 
- プリコンパイル後のファイル・フォルダのコピー
 
- セットアップ プログラムによるインストール
 
などがある。
ファイル・フォルダのコピー  †
- アセンブリが生成されていない状態でアプリケーションを配布した際の初期要求時にJITコンパイルが実行される。JITコンパイルによりアセンブリが生成され、その後にアプリケーションが実行される。
 
- JITコンパイルにより生成されたアセンブリは、「%windir%\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files」で確認できる。
 
- 事前コンパイルによりアセンブリを生成しておくことで初期要求時のJITコンパイルを不要にできる。この場合、Webサイトのファイル システム上にアセンブリが生成される。
 
- プリコンパイルにより生成されたアセンブリは、生成されたWebサイトのフォルダの直下にある「bin」フォルダで確認できる。
 
セットアップ プログラムによるインストール  †
Webセットアップ プログラムによるWebサイトのインストールが可能。