Visual Studio で新しい ASP.NET プロジェクトを開始すると、ASP.NET Web アプリケーションまたは ASP.NET Web サイトを作成できます。
ASP.NET Web アプリケーションと ASP.NET Web サイトの違いは何ですか? なぜ私は他のものよりも1つを選ぶのでしょうか?
使用している Visual Studio のバージョンによって答えは異なりますか?
Visual Studio で新しい ASP.NET プロジェクトを開始すると、ASP.NET Web アプリケーションまたは ASP.NET Web サイトを作成できます。
ASP.NET Web アプリケーションと ASP.NET Web サイトの違いは何ですか? なぜ私は他のものよりも1つを選ぶのでしょうか?
使用している Visual Studio のバージョンによって答えは異なりますか?
Web サイトプロジェクトは、オンザフライでコンパイルされます。最終的に、さらに多くの DLL ファイルが作成されるため、面倒な作業になる可能性があります。また、あるディレクトリにあるページまたはコントロールが別のディレクトリのページやコントロールを参照する必要がある場合、他のディレクトリがまだコードにコンパイルされていない可能性があるため、問題が発生します。もう 1 つの問題は、パブリッシングにある可能性があります。
Visual Studio が常に同じ名前を再利用するように指示されていない場合、ページによって生成された DLL ファイルに常に新しい名前が付けられます。これにより、同じクラス名を含む DLL ファイルの複数の類似したコピーが作成される可能性があり、多くのエラーが生成されます。Web サイト プロジェクトは Visual Studio 2005 で導入されましたが、あまり人気がありませんでした。
Web アプリケーションプロジェクトはアドインとして作成され、現在は Visual Studio 2005 の SP 1 の一部として存在します。主な違いは、Web アプリケーション プロジェクトが Visual Studio 2003 に同梱されている Web プロジェクトと同様に機能するように設計されていることです。ビルド時にアプリケーションを単一の DLL ファイルにコンパイルします。プロジェクトを更新するには、プロジェクトを再コンパイルし、DLL ファイルを発行して変更を加える必要があります。
Web アプリケーション プロジェクトのもう 1 つの優れた機能は、プロジェクト ビューからファイルを除外する方がずっと簡単だということです。Web サイト プロジェクトでは、除外する各ファイルの名前が変更され、ファイル名に除外されたキーワードが含まれます。Web アプリケーション プロジェクトでは、プロジェクトは名前を変更せずに、プロジェクト ビューに含める/除外するファイルを追跡するだけで、物事がより整理されます。
ASP.NET 2.0 - Web サイト vs Web アプリケーション プロジェクトという記事にも、一方を使用して他方を使用しない理由が示されています。以下はその抜粋です。
- 大規模な Visual Studio .NET 2003 アプリケーションを VS 2005 に移行する必要がありますか? Web アプリケーション プロジェクトを使用します。
- プロジェクト ファイルを作成せずに、任意のディレクトリを開いて Web プロジェクトとして編集したいですか。Web サイト プロジェクトを使用します。
- コンパイル中にビルド前およびビルド後の手順を追加する必要がありますか? Web アプリケーション プロジェクトを使用します。
- 複数の Web プロジェクトを使用して Web アプリケーションを構築する必要がありますか? Web アプリケーション プロジェクトを使用します。
- ページごとに 1 つのアセンブリを生成しますか? Web サイト プロジェクトを使用します。
- 各ページビューでサイト全体を構築することなく、動的なコンパイルとページでの作業を好みますか? Web サイト プロジェクトを使用します。
- コード ビハインド モデルよりもシングルページ コード モデルの方が好きですか? Web サイト プロジェクトを使用します。
Web アプリケーション プロジェクトと Web サイト プロジェクト(MSDN) では、Web サイト プロジェクトと Web アプリケーション プロジェクトの違いについて説明しています。また、Visual Studio で行う構成についても説明します。
Webサイト=Webサイトがグラフィックデザイナーによって作成され、プログラマーが1ページまたは2ページのみを編集する場合に使用します
Webアプリケーション=アプリケーションがプログラマーによって作成され、グラフィックデザイナーが1つまたは2つのページ/画像のみを編集する場合に使用します。
プロジェクトファイルを更新する必要がないため、Webサイトは開発者スタジオがなくてもHTMLツールを使用して作業できます。チームが主に開発者スタジオを使用していて、コードコンテンツが多い場合は、Webアプリケーションが最適です。
(一部のコーディングエラーは、コンパイル時にWebアプリケーションで検出されますが、実行時までWebサイトでは検出されません。)
警告: 私は何年も前にこの回答を書き、それ以来Asp.netを使用していません。私は物事が今進んでいることを期待しています。
動的にコンパイルされたプロジェクトが特に必要な場合を除き、Web サイト プロジェクトは使用しないでください。
なんで?Web サイトのプロジェクトは、プロジェクトを変更または理解しようとするときに壁を突き破るからです。Visual Studio の静的型付け検索機能 (例: 使用箇所の検索、リファクタリング) は、妥当なサイズのプロジェクトではすべて永遠にかかります。詳細については、スタック オーバーフローの質問「Visual Studio で「すべての参照を検索」が遅い」を参照してください。
なぜ彼らが Visual Studio 2005 に Web アプリケーションを落としたのか、私には本当に理解できません。
これは少し明白に聞こえるかもしれませんが、Visual Studio 2005は元々Webサイトにのみ付属していたため、誤解されていると思います。プロジェクトがかなり制限されたWebサイトを扱っていて、論理的または物理的な分離があまりない場合、そのWebサイトは問題ありません。ただし、それが本当に多くのユーザーがデータを追加および更新するさまざまなモジュールを備えたWebアプリケーションである場合は、Webアプリケーションを使用することをお勧めします。
ウェブサイトモデルの最大の利点は、app_code
セクション内のすべてが動的にコンパイルされることです。完全に再デプロイしなくても、C#ファイルを更新できます。ただし、これには大きな犠牲が伴います。制御するのが難しい多くのことが隠れて起こります。app_code
名前空間は制御が難しく、すべてが動的にコンパイルされるため、特定のDLLの使用法はデフォルトでウィンドウの外に出ます。
Webアプリケーションモデルには動的コンパイルはありませんが、私が言及したことを制御できます。
n層開発を行う場合は、Webアプリケーションモデルを強くお勧めします。限られたWebサイトを実行している場合、または迅速で汚い実装を行っている場合は、Webサイトモデルに利点がある可能性があります。
より詳細な分析は次の場所にあります。
MCTS 自習型トレーニング キット試験 70-515 本から:
Webアプリケーション(プロジェクト)で、
- MVC アプリケーションを作成できます。
- Visual Studio は、フォルダー構造に依存するのではなく、ファイルの一覧をプロジェクト ファイル (.csproj または .vbproj) に格納します。
- Visual Basic と C# を混在させることはできません。
- デバッグ セッションを停止せずにコードを編集することはできません。
- 複数の Web プロジェクト間の依存関係を確立できます。
- 展開する前にアプリケーションをコンパイルする必要があります。これにより、別のページがコンパイルされない場合にページをテストできなくなります。
- ソース コードをサーバーに保存する必要はありません。
- アセンブリ名とバージョンを制御できます。
- 展開後、再コンパイルせずに個々のファイルを編集することはできません。
何を開発しているかによります。
コンテンツ指向の Web サイトでは、コンテンツが頻繁に変更されるため、Web サイトの方が適しています。
アプリケーションのデータはデータベースに保存される傾向があり、そのページとコードはめったに変更されません。この場合、アセンブリの展開がより制御され、単体テストのサポートが向上した Web アプリケーションを使用することをお勧めします。
Compilation
まず、コンパイルに違いがあります。Web サイトはサーバー上で事前にコンパイルされるのではなく、ファイル上でコンパイルされます。Web サイトで何かを変更したい場合、サーバーから特定のファイルをダウンロードして変更し、このファイルをサーバーにアップロードして戻すだけで、すべてが正常に機能するため、これは利点となる可能性があります。Web アプリケーションでは、これを行うことはできません。すべてが事前にコンパイルされており、最終的に 1 つの dll しかないためです。プロジェクトの 1 つのファイルで何かを変更すると、すべてを再コンパイルする必要があります。そのため、サーバーの Web サイト上のいくつかのファイルを変更できるようにしたい場合は、より良い解決策です。また、多くの開発者が 1 つの Web サイトで作業することもできます。一方、コードをサーバー上で利用可能にしたくない場合は、代わりに Web アプリケーションを選択する必要があります。
Project structure
プロジェクトの構造にも違いがあります。Web アプリケーションには、通常のアプリケーションと同じようにプロジェクト ファイルがあります。Web サイトには従来のプロジェクト ファイルはなく、ソリューション ファイルしかありません。すべての参照と設定は web.config ファイルに保存されます。
@Page directive
このページに関連付けられたクラスを含むファイルの @Page ディレクティブには、別の属性があります。Web アプリケーションでは標準の「CodeBehind」、Web サイトでは「CodeFile」を使用します。これは、以下の例で確認できます。
ウェブアプリケーション:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="WebApplication._Default" %>
Webサイト:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
名前空間 - 上記の例では、名前空間の作成方法という別の違いも確認できます。Web アプリケーションでは、名前空間は単にプロジェクトの名前です。Web サイトには、動的にコンパイルされたページ用の既定の名前空間 ASP があります。
エディット コンティニュ - Web アプリケーションでは、エディット コンティニュ オプションを使用できます (オンにするには、[ツール] メニューに移動し、[オプション] をクリックして、[デバッグ] で [エディット コンティニュ] を見つけます)。この機能は Web サイトでは機能しません。ASP.NET MVC を使用して Web アプリケーションを開発する場合
ASP.NET MVC (モデル ビュー コントローラー) の最適な既定のオプションは Web アプリケーションです。Web サイトで MVC を使用することは可能ですが、お勧めしません。
まとめ - ASP.NET Web アプリケーションと Web サイトの最も重要な違いはコンパイルです。そのため、数人で変更できる大規模なプロジェクトに取り組んでいる場合は、Web サイトを使用することをお勧めします。ただし、小規模なプロジェクトを実行している場合は、Web アプリケーションも使用できます。
はい、Web アプリケーションは Web サイトよりも優れています。なぜなら、Web アプリケーションは私たちに自由を与えてくれるからです。
複数のプロジェクトを 1 つの傘の下に置き、プロジェクト間の依存関係を確立する。たとえば、PCS の場合、Web アプリケーション内で以下を使用できます。
ASP.NET ページに関連付けられているクラス ファイル内のコードに対して単体テストを実行するには
主な違いの 1 つは、Web サイトが動的にコンパイルされ、オンザフライ アセンブリを作成することです。Web アプリケーションは、1 つの大きなアセンブリにコンパイルされます。
この 2 つの違いは、Visual Studio 2008 では廃止されました。
アプリケーションは通常、デプロイ前にコンパイルされます。Web サイトでは app_code ディレクトリが使用されます。アプリ コード フォルダーで何かが変更されると、サーバーはコードを再コンパイルします。これは、その場で Web サイトのコードを追加/変更できることを意味します。
アプリの利点は、再コンパイルがないため、最初の起動時間が短縮されることです。
ASP.NET Web サイトでビデオWeb Application Projects & Web Deployment Projectsをご覧になることをお勧めします。このビデオは、違いを詳細に説明しています。私にとっては非常に役に立ちました。
ところで、タイトルに惑わされないでください。ビデオの大部分では、Web サイト プロジェクトと Web アプリケーション プロジェクトの違いと、Microsoft が Visual Studio 2005 で Web アプリケーション プロジェクトを再導入した理由が説明されています (おそらく既にご存じのとおり、当初は Web サイト プロジェクトのみで出荷されていましたが、Web アプリケーション プロジェクトは SP1 で追加されました)。違いを知りたい方におすすめの動画です。
「Web サイト」のコードは特別な App_Code ディレクトリにあり、実行時に複数の DLL (アセンブリ) にコンパイルされます。「Web アプリケーション」は、1 つの DLL にプリコンパイルされています。
それは常にクライアントの要件に依存します。ASP.NET には、アプリケーションのセキュリティと簡単なメンテナンスのためにユーザーが必要とする柔軟な機能が含まれています。
Web アプリケーションは、ASP.NET フレームワーク内で実行されるバイナリ ファイルと考えることができます。また、ソース コードを確認して簡単に展開できる静的な Web ページとしてのWeb サイト。
しかし、これら 2 つの ASP.NET テクノロジには、長所と短所があります。
Website と Project>>website は、Visual Studio を使用して ASP.NET アプリケーションを作成する 2 つの異なる方法です。1 つはプロジェクトレスで、もう 1 つはプロジェクト環境です。違いは次のとおりです
どちらのアプローチを使用しても、基本的な違いはほとんどありません。ただし、時間がかかる Web サイトを作成する場合は、プロジェクト環境を選択してください。
Web アプリケーション プロジェクト モデル
Web サイト プロジェクト モデル
Web サイト - ソリューション ファイルは作成されません。Web サイトを作成する場合、ビジュアル スタジオは必要ありません。
Web アプリケーション - ソリューション ファイルが作成されます。Web アプリケーションを作成する場合は、ビジュアル スタジオが必要です。.dll
bin フォルダーに単一のファイルが作成されます。
Web アプリケーションでは、プロジェクトの機能のレイヤーを作成し、それを多くのプロジェクトに分割することでそれらの間に相互依存関係を作成できますが、Web サイトではこれを行うことはできません。
Web アプリケーション プロジェクトでは、Visual Studio はページとユーザー コントロール用に追加の .designer ファイルを必要とします。Web サイト プロジェクトでは、このオーバーヘッドは必要ありません。マークアップ自体がデザインとして解釈されます。
間違いなく Web アプリケーションであり、単一の DLL ファイルであり、保守が容易です。しかし、ウェブサイトはより柔軟です。外出先で aspx ファイルを編集できます。
おそらく、単一のアセンブリにコンパイルする以外に選択肢がないため、Web アプリケーションにはより多くのメモリが必要です。大規模なレガシー サイトを Web アプリケーションに変換したところ、コンパイル時にメモリ不足の問題が発生し、次のようなエラー メッセージが表示されました。
Unexpected error writing metadata to file '' --
Not enough storage is available to complete this operation.
エラー、および実行時に次のようなエラー メッセージが表示されます。
Exception information:
Exception type: HttpException
Exception message: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
メモリに制約のあるレガシー ハードウェアで大規模なサイトを変換する場合、Web サイト モデルに戻すオプションを選択することをお勧めします。最初の成功の後でも、問題が後で忍び寄る可能性があります。