asp.net - 違い - visual studio 2017 webフォーム




ASP.NET WebサイトまたはASP.NET Webアプリケーション? (17)

Compilationまず、コンパイルの違いがあります。 Webサイトはサーバー上であらかじめコンパイルされていないため、ファイルにコンパイルされています。 Webサイト内の何かを変更したいときは、サーバーから特定のファイルをダウンロードして変更し、このファイルをサーバーにアップロードしてすべて正常に動作するため、利点があります。 Webアプリケーションでは、何もプレコンパイルされておらず、1つのdllだけで終わるので、これを行うことはできません。 プロジェクトの1つのファイルで何かを変更する場合は、すべてを再度コンパイルする必要があります。 サーバー上のいくつかのファイルを変更する可能性がある場合は、Webサイトがより良い解決策です。 また、多くの開発者が1つのWebサイトで作業することができます。 反対に、サーバーでコードを使用できないようにするには、Webアプリケーションを選択する必要があります。 このオプションは、Webサイトの公開後に1つのDLLファイルが作成されるため、単体テストの方が優れています。

Project structureも違いがあります。 Webアプリケーションでは、通常のアプリケーションと同じようにプロジェクトファイルがあります。 Webサイトには伝統的なプロジェクトファイルがありません。あなたが持っているのはソリューションファイルだけです。 すべての参照と設定はweb.configファイルに保存されています。 @Page directiveには、このページに関連付けられたクラスを含むファイルに対して異なる属性があります。 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 Application Edit and Continueオプションが有効になります(これを有効にするには、[ツール]メニューに移動し、[オプション]をクリックして[デバッグで編集して続行]を選択します)。 この機能はWebサイトでは機能していません.ASP.NET MVCIfを使用してWebアプリケーションを開発したい

ASP.NET MVC(Model View Controller)は、Webアプリケーションです。 WebサイトでMVCを使用することは可能ですが、推奨されません。

まとめ - ASP.NET WebアプリケーションとWebサイトの最も重要な違いは、コンパイルです。 だから、あなたが何人かの人がそれを修正できるより大きなプロジェクトに取り組んでいるなら、Webサイトを使うほうがいいです。 しかし、あなたが小さなプロジェクトをやっているなら、Webアプリケーションを使うこともできます。

Visual Studioで新しいASP.NETプロジェクトを開始すると、ASP.NET Webアプリケーションを作成することも、ASP.NET Webサイトを作成することもできます。

ASP.NET WebアプリケーションとASP.NET Webサイトの違いは何ですか? なぜ私は他のものを選ぶだろうか?

回答は、使用しているVisual Studioのバージョンによって異なりますか?


ASP.NET WebサイトでビデオWebアプリケーションプロジェクトとWebデプロイメントプロジェクトを見てみることをお勧めします。違いについては詳しく説明してくれました。

ところで、タイトルで混乱しないようにしてください。ビデオの大部分は、WebサイトプロジェクトとWebアプリケーションプロジェクトの違いを説明し、Visual Studio 2005でWebアプリケーションプロジェクトを再導入した理由を説明しています。もともとはウェブサイトプロジェクトだけで出荷され、SP1ではWebアプリケーションプロジェクトが追加されました)。 違いを知りたいと思う人には、すばらしいビデオです。


Webアプリケーションでは、プロジェクトの機能のレイヤーを作成し、複数のプロジェクトに分割して相互依存関係を作成できますが、Webサイトでこれを行うことはできません。


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サイトモデルに戻すオプションを選択することです。 最初の成功の問題があっても、後で問題が起こる可能性があります。


Webアプリケーションプロジェクトでは、Visual Studioにページとユーザーコントロール用の.designerファイルがさらに必要です。 Webサイトプロジェクトではこのオーバーヘッドは必要ありません。 マークアップ自体はデザインとして解釈されます。


「Webサイト」は特別なApp_Codeディレクトリにコードを持ち、実行時にいくつかのDLL(アセンブリ)にコンパイルされます。 「Webアプリケーション」は1つのDLLにプリコンパイルされています。


WebSite: app_codeフォルダを自動的に生成し、それをサーバーに公開した後、特定のファイルやページで何らかの変更を加えた場合、すべてのファイルをコンパイルする必要はありません。

Web Applicationそれは自動的に解決策ファイルを生成します。どのWebサイトでも生成されません。変更を反映するためにプロジェクト全体をコンパイルする必要があります。


Webアプリケーションプロジェクトモデル

  • Visual Studio .NET Webプロジェクトと同じWebプロジェクトセマンティクスを提供します。 プロジェクトファイル(プロジェクトファイルに基づいた構造)を持っています。 ビルドモデル - プロジェクト内のすべてのコードが単一のアセンブリにコンパイルされます。 IISと組み込みのASP.NET開発サーバーの両方をサポートします。 Visual Studio 2005のすべての機能(リファクタリング、ジェネリックスなど)とASP.NET(マスターページ、メンバーシップ、ログイン、サイトナビゲーション、テーマなど)をサポートします。 FrontPage Server Extensions(FPSE)を使用する必要はなくなりました。

Webサイトプロジェクトモデル

  • プロジェクトファイルがありません(ファイルシステムに基づいています)。
  • 新しいコンパイルモデル。
  • 各ページビューにサイト全体を構築せずに動的コンパイルとページ上での作業。
  • IISと組み込みのASP.NET開発サーバーの両方をサポートします。
  • 各ページには独自のアセンブリがあります。
  • デファレンシャルコードモデル。

ウェブサイト =ウェブサイトがグラフィックデザイナーによって作成され、プログラマーが1ページまたは2ページのみを編集するときに使用する

Web Application =プログラマによってアプリケーションが作成され、グラフィックデザイナが1つまたは2つのページ/イメージのみを編集するときに使用します。

開発者スタジオを持たなくても、プロジェクトファイルを更新する必要がないため、WebサイトはあらゆるHTMLツールを使用して作業することができます。チームが主に開発スタジオを使用しており、コードコンテンツが多い場合に最適です。

(一部のコーディングエラーは、コンパイル時にWebアプリケーションに表示され、実行時までWebサイトには表示されません)。

警告: 私はこの答えを何年も前に書き、Asp.netを使っていません。 私は物事が今に移動したことを期待しています。


ウェブサイト:

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アプリケーションプロジェクトの別の優れた機能は、プロジェクトビューからファイルを除外する方がずっと簡単です。 Webサイトプロジェクトでは、除外する各ファイルのファイル名に除外キーワードを付けて名前を変更します。 Webアプリケーションプロジェクトでは、プロジェクトビューに含める/除外するファイルを名前を変更せずに追跡するだけで、作業がはるかに細かくなります。

Reference

ASP.NET 2.0 - Webサイトと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アプリケーションを使用する方がよいでしょう。


それは常にあなたのクライアントの要件に依存しています。 ASP.NETには、セキュリティのために必要な柔軟な機能と、アプリケーションのメンテナンスが含まれています。

Webアプリケーションは、ASP.NETフレームワーク内で実行されるバイナリファイルと考えることができます。 また、 Webサイトを静的なWebページとしてレビューし、ソースコードを簡単に展開することができます。

しかし、これらの2つのASP.NETテクノロジの利点と欠点は、何が良いのかになります。


ウェブサイト - ソリューションファイルは作成されません。 私たちは、Webサイトを作成したい場合は、Visual Studioの必要はありません。

Webアプリケーション - ソリューションファイルが作成されます。 Webアプリケーションを作成したい場合は、ビジュアルスタジオが必要です。 binフォルダー内に単一の.dllファイルが作成されます。


ウェブサイトとプロジェクト>>ウェブサイトは、Visual Studioを使用してASP.NETアプリケーションを作成する2つの異なる方法です。 1つはプロジェクトがなく、もう1つはプロジェクト環境です。 違いは

  1. ソリューションファイルはプロジェクト環境のルートディレクトリと同じディレクトリに保存されます。
  2. プロジェクト環境に展開する前にソリューションとプロジェクトファイルを削除する必要があります。
  3. 完全なルートディレクトリは、プロジェクトレス環境で展開されます。

いずれのアプローチを使用する場合も基本的な違いはありません。 しかし、より長い時間がかかるウェブサイトを作成する場合は、プロジェクト環境を選択します。


動的にコンパイルされたプロジェクトが必要な場合を除き、Webサイトプロジェクトを使用しないください

どうして? プロジェクトを変更または理解しようとすると、Webサイトプロジェクトが壁を駆け上がらせるためです。 Visual Studioのスタティックなタイプの検索機能(たとえば、使用法、リファクタの検索)は、すべての合理的なサイズのプロジェクトで永遠に使用されます。 詳細については、Visual Studioの「すべての参照を検索」の「スタックオーバーフローの問題」を参照してください。

Visual Studio 2005のWebアプリケーションを、痛みを誘発し、健全性を欠いている生産性の高いウェブサイトのプロジェクトタイプのためにドロップした理由は本当にわかりません。



間違いなくWebアプリケーション、単一のDLLファイルと簡単に維持する。 しかし、ウェブサイトはより柔軟性があります。 あなたは外出先でaspxファイルを編集することができます。





projects-and-solutions