-
Notifications
You must be signed in to change notification settings - Fork 0
MS_ASPNETSiteVsApp
- 戻る(ASP.NET)
ASP.NET アプリケーションの種類と構成について纏めている。
補足(前提:現在は区別が無い): 本ページが扱う
「Web サイト プロジェクト」と「Web アプリケーション プロジェクト」の選択は、
.NET Framework 版 ASP.NET 固有の話題である。ASP.NET Core には Web サイト プロジェクトが存在しない
(すべて SDK スタイルの.csprojを持つプロジェクトで、
コードは常にビルド時にコンパイルされる)。本ページは、既存資産の保守と、移行時の判断材料として読むのが妥当である。
ASP.NET アプリケーションを作成する際に、下記2つからの
選択があると思いますが、選択する上での条件等ありますか?
- ASP.NET Web サイト
- ASP.NET Web アプリケーション
1 は、コードファイル含めてサーバに配置し、実行時にコンパイルされ
2 は、コンパイルした実行モジュールをサーバに配置される
という認識ですが、選択する上でのメリット、デメリット等の情報を教えて下さい。
※ 参考:Webアプリケーション、Webサイト
補足(違いの整理): 質問者の認識は正しい。表にすると次の通り。
Web サイト プロジェクト Web アプリケーション プロジェクト プロジェクト ファイル 無し(フォルダがそのままプロジェクト) .csproj/.vbprojありコードのコンパイル 実行時(動的コンパイル) ビルド時 出力 無し(ソースを配置) bin\に DLL 1 つ名前空間 既定で付かない 既定で付く designer.cs生成されない 生成される ビルド対象の指定 フォルダ内すべて .csprojに列挙されたものプリコンパイル aspnet_compiler.exeで任意に常にコンパイル済み 初回応答 遅い(動的コンパイル) 速い **「フォルダに置いたものが即プロジェクトの一部になる」**という
Web サイト プロジェクトの性質は、
手軽な反面、構成管理の統制が効きにくいという裏返しを持つ。
-
マストな機能要件・非機能要件と言うより、開発時の利便性によって左右されます。
-
Web アプリケーション プロジェクトでは、
designer.cs(.vb) が生成されるので、こちらを何らかの目的で
使いたいと言う開発者目線の要求はあるかもしれません。 -
Web サイト プロジェクトでは、
アセンブリの参照設定の代わりに、Bin フォルダにアセンブリを放り込む運用ができるので、
ライブラリに対してレイトバインドする場合等は、こちらの方が使い易いという側面があります。 -
IIS 上で F5 デバッグする場合は、Web サイト プロジェクトである必要があります。
- Web アプリケーション プロジェクトは、
開発用 Web サーバ(IIS Express)上でのみ F5 デバッグ可能。 - Web サイト プロジェクトは、IIS 上でも
開発用 Web サーバ(IIS Express)上でも F5 デバッグが可能。 - 別途、IIS のワーカプロセスにアタッチしてデバッグすることは可能。
参考:デプロイされた ASP.NET アプリケーションのデバッグ - Visual Studio
https://learn.microsoft.com/ja-jp/visualstudio/debugger/debugging-deployed-web-applications
- Web アプリケーション プロジェクトは、
-
-
なお、シナリオによっては、Web アプリケーション プロジェクトしか選択できません。
- ASP.NET MVCのプロジェクトを選択する。
- Web Deploy パッケージとして発行する。
- Microsoft Azure の PaaS のプロジェクトを作成する。
(確かに、Web Deploy パッケージや Microsoft Azure の PaaS など、
一式をパッケージングするものは、Web アプリケーションである必要がある。)
- マイクロソフトは、Visual Studio 2012(.NET4.5) 以降の
新規開発に Web アプリケーションを推奨しているようです。- Web Application Projects versus Web Site Projects in Visual Studio
https://learn.microsoft.com/en-us/previous-versions/aspnet/dd547590(v=vs.110)
- Web Application Projects versus Web Site Projects in Visual Studio
For new development, we recommend that you choose web application projects.
→ 新規開発では Web アプリケーション プロジェクトを選択することを推奨する。For example, the next Visual Studio release after Visual Studio 2012 will have new tooling
for creating web projects, and this new tooling will work only with web application projects.
→ Visual Studio 2012 以降、Web プロジェクト開発のための新しいツールが出ているが、
それらは Web アプリケーション プロジェクトでのみ使用できる。
補足(現在の結論): Microsoft の推奨(Web アプリケーション)は
その後も変わらず、Web サイト プロジェクトは事実上終息した。Visual Studio 2012 … Web アプリケーションを推奨(原文が引用) Visual Studio 2019 … 新規テンプレートから Web サイトが目立たなくなる Visual Studio 2022 … .NET Framework の Web サイトは「その他」扱い ASP.NET Core … 概念自体が存在しない選ぶ理由が残るのは、原文が挙げる 2 点のみである。
理由 現在の代替 binに DLL を放り込むレイトバインドプラグイン機構( AssemblyLoadContext)、DIIIS 上での F5 デバッグ IIS へのアタッチ(ASP.NET Coreのデプロイ)、\ または IIS Express / Kestrel で十分 どちらも代替手段があるため、
新規で Web サイト プロジェクトを選ぶ理由は無い。
複数のサブシステムが存在する場合、
ソリューション、プロジェクトの構成としては、
どのようなパターンが考えられますでしょうか。
(例)サブシステムごとに1ソリューション、1プロジェクト
or 基幹システムとして1ソリューション、サブシステムごとに1プロジェクト等。
選定基準については、こちらを確認下さい。
こちらの選定は、Web サイト、Web アプリケーションの選定と比べると、
- 開発時の利便性と言う観点よりも、
- データ共有の範囲やデプロイなど、
マストな顧客要件に関連する所が多くあります。
なお、上記の資料については、
当時 VS2005 の SP1 のリリース前では、
- Web アプリケーション プロジェクト
が存在しなかったので、
- Web サイト プロジェクト
- Web アプリケーション プロジェクト
の違いを考慮していません。
補足(この観点は現在も有効): 「プロジェクト種別の選択は
開発時の利便性、ソリューション構成の選択は顧客要件」という
原文の切り分けは、現在も通用する整理である。ソリューション分割の判断軸は、VSソリューション プロジェクトの構成検討 の通り、
軸 内容 デプロイの単位 一緒に配置するか、別々に配置するか データ共有の範囲 セッション、DB、キャッシュを共有するか ビルド時間 巨大な 1 ソリューションはビルドが遅い チーム分割 誰がどこを触るか という点にある。
近年はここに 「サービス境界をどう引くか」(モジュラー モノリス /
マイクロサービス)という観点が加わっており、
1 ソリューション内でプロジェクトを分けるか、
リポジトリごと分けるかという判断に発展している。
なお、以下の手順で、Web サイト プロジェクトから
Web アプリケーション プロジェクトへの変換が可能。
-
チュートリアル : Visual Studio の Web サイト プロジェクトから
Web アプリケーション プロジェクトへの変換
https://msdn.microsoft.com/ja-jp/library/aa983476.aspx -
Walkthrough: Converting a Web Site Project to a Web Application Project in Visual Studio
https://learn.microsoft.com/en-us/previous-versions/aspnet/aa983476(v=vs.100) -
bear.mini [VS2005] Web サイト プロジェクトを Web アプリケーション プロジェクトに変換する方法
http://bearmini.net/blog/View.aspx?bid=1&aid=65 -
Visual Studio での Website から Web Application への変換 - ASP.NET による開発 - ASP.NET 入門
https://aspnet.keicode.com/basic/vs-website-webapp.php -
Convert Website to Web Application in Visual Studio 2010 - video - YouTube
https://www.youtube.com/watch?v=oXptokM0v7w
補足(変換は移行の第一歩になる): この変換は、
ASP.NET Coreへの移行 を見据えた場合の
最初の一手として意味を持つ。Web サイト プロジェクト ↓ ① Web アプリケーション プロジェクトへ変換(本節) Web アプリケーション プロジェクト(旧形式 .csproj) ↓ ② PackageReference へ移行([NuGet を使用したパッケージ管理](MS_NuGetPackageManagement)) ↓ ③ [OWIN 化](MS_ASPNETModernization) ASP.NET(近代化済み) ↓ ④ SDK スタイル .csproj へ ASP.NET Core① を飛ばして ASP.NET Core へは行けない
(移行アシスタント等のツールも.csprojを前提とする)ため、
移行計画を立てる場合は最初に済ませておくのが定石である。変換時の主な作業:
- 名前空間が付くため、
Inherits属性の修正が必要App_Codeフォルダは通常のフォルダに変更designer.csの生成(VS の「デザイナー ファイルへの変換」)binに直接置いていた DLL を参照設定に変更
-
Web アプリケーション プロジェクトと Web サイト プロジェクト
https://learn.microsoft.com/en-us/previous-versions/aspnet/dd547590(v=vs.110) -
Visual Studio 2005でWebアプリケーション・プロジェクトを使うには?[VS 2005のみ] - @IT
http://www.atmarkit.co.jp/fdotnet/dotnettips/586webappproject/webappproject.html
Tags: 移行, .NET開発, ASP.NET, ASP.NET Web Forms
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。