5


4

VS2008では、WebサイトとWebアプリケーションの違いは何ですか? そしてどちらかを使用する利点はありますか?

8 Answer


14


賛否両論について話す前に、それがどのように機能するかについての根本的な違いを知る必要があります。

Webサイトプロジェクトでは、実際にページにアクセスしたときにaspxファイルと関連ファイルを動的にコンパイルする、ジャストインタイムコンパイルアプローチを使用しています。 コンパイルされたアセンブリはその後ランダムに生成されたdll名でbinフォルダの中に置かれています。

一方、Webアプリケーションは、プロジェクトの開発時にページを名前付きのDLLにコンパイルします。 このコンパイルがなければ、Webサイトはあなたのサーバーにデプロイすることすらありません(自動コンパイルのメカニズムがないため)。

だから長所と短所:

  1. Webサイトプロジェクトのソースは動的なので、何かを変更するために開発マシンを通過する必要はありません(危険なアプローチですが)。

  2. これは便利だと言っても、JITコンパイルが関係するため、パフォーマンスがわずかに低下します。

  3. ASP.NET MVCやMonoRailベースのプロジェクトのように、ディスパッチ要求の設計のためにWebサイトプロジェクトで実行されないプロジェクトもあります。

  4. Webサイトプロジェクトはコンパイルされていないため、ライブラリレベルでTDDする可能性はほとんどありません。 ただし、Webアプリケーションでコンパイルした単一のDLLをTDDすることはできます。

  5. どのようにしてそれが引き起こされるのか忘れていましたが、動的な性質のため、VS2005はより大きなWebサイトプロジェクトをコンパイルするのに永遠に時間がかかる可能性があります。 Webアプリケーションはこの問題の影響を受けません。

もっとたくさんのものが関係していると私は確信しています、しかし私はこれらがより大きいもののうちのいくつかであると思います。


7


  • Webサイト*主にプログラム要素を持つアドホックWebサイトを操作するためのものです。 aspxファイルに存在する顧客固有のコンテンツによって簡単に識別されます。

ソリューションファイルやプロジェクトファイルは不要で、ファイルと開く> Webサイトからページとソースをローカル(ファイルシステム、IIS)またはリモート(FTP、WebDev / FrontPage拡張)に配置できます。 メニューオプション

分離コードとクラスは通常、オンデマンドでインメモリにコンパイルするWebサーバーに格納されます。 アプリケーションを再起動してセッションを失うことなく、ファイルに変更を加えることができます。

に対して/に対して

  • クイック編集、テスト、デプロイサイクル実行時の構文エラー

  • アプリをコンパイルまたは再起動する必要はありません。インストーラを作成できません

  • 常に利用可能なソースハッカーにとって有用なサーバー上のソース

  • Webアプリケーション* Webアプリケーションプロジェクトは、Visual Studio 2005のアドオンとして導入され、後にVS 2005 SP1に組み込まれ、Visual Studio 2008で完全に一流の市民になりました。

名前が暗示しているように、これらは主にWebアプリケーション用であり、Webインターフェイスを持つ製品またはソリューションを作成したときに使用されます。

Webアプリケーションプロジェクトはローカルドライブ上に存在し、他のVSプロジェクトタイプと同様に扱われ、既存のソリューションに追加することができ、それらは完全なコンパイル、検証、およびビルドステップの対象となります。

展開は通常MSIインストーラを介して行われますが、追加のWeb展開プロジェクトアドインを使用することもできます。これにより、テスト環境に展開するのに便利なサーバーに直接展開できます。

に対して/に対して

  • 制御ビルド

  • Webサーバーにクラスファイルがない、dllのみ個々のクラスをデプロイできない

  • コンパイル時の構文エラー


1


Visual Studio 2005を使用している場合、Webアプリケーションプロジェクトはhttp://aspalliance.com/1029_TipTrick_Optimizing_ASPNET_20_Web_Project_Build_Performance_with_VS_2005.2に従ってコンパイルが速くなります。

http://www.mblmsoftware.com/mblm/20070210-Web-Application-Projects-vs-Web-Site-Projects.aspx[pros and cons]の一人の意見の一覧については、この記事をチェックすることができます。

私の個人的な好みは、単にWebサイトプロジェクトを作成することです。 私にはこれをする理由は特にありませんが、いつもうまくいくので(デプロイするディレクトリをドラッグアンドドロップするだけでも構いません)私はそれを使い続けます。


0


私は最も些細なアプリのためだけにウェブサイトプロジェクトを使うでしょう。 複数の開発者を巻き込むその他のことには、msbuildスクリプトが必要です。 msbuildはWebアプリケーションプロジェクトを好み、本当にWebサイトプロジェクトを嫌います。 それに加えて、私はウェブサイトのプロジェクトが課している命令に満足することは決してありませんでした。 私はコードを書く、コンパイル、テスト、デプロイするのが好きです。 Webサイトプロジェクトを使用すると、コードの記述、デプロイ、コンパイル、テストができます。 私を間違って擦るだけです。


0


http://reddnet.net/code/asp-net-web-site-vs-web-application-project-part-2/[Stephen M Redd]私がこれを始めるのを助けました。 彼はWebアプリケーションプロジェクトアプローチを好みます。

今日の私の仕事は、.Net 1.1アプリケーションを3.5にアップグレードすることでした。これは、1.1の動作方法に非常に近いので、Webアプリケーションプロジェクトのルートを選択する方がはるかに簡単です。

私はそれに反対しましたが、Webサイトのアプローチでは次のような魅力がありました。

  • ページコントロールを宣言するためのコードはまったく必要ありません(一方、Webアプリケーションプロジェクトでは、これらをデザイナファイルに自動生成します。

  • 動的コンパイル、迅速な開発

  • プロジェクトファイルは不要

最終的には、Webアプリケーションプロジェクトのルートを選択した場合は、コードの変更を少なくする必要があります。 残念ながら私たちのアプリは静的な方法や他のそのような悪い習慣を通して互いに参照しているページを持っています。 Webサイトはコンパイル方式に近づいているため、ネームスペースの設定方法に関係なく、ページを連携させることはできません。 私はデザイナーファイルと一緒に暮らすことを学ぶ必要があるだろうと思います。


0


チームで開発するときは、常にWebアプリケーションを選択する必要があります。 Binディレクトリには参照されているすべてのアセンブリが格納されているため、Binディレクトリをソース管理にチェックインする必要があります(非常に悪い)。 つまり、Webサイトのコンパイルとソース管理からの更新(別の開発者による変更を伴う)の後に、常に競合が発生します。


0


Webサイト:その動的なコンパイルWebアプリケーション:その静的なコンパイル

visual studio 2005 SP1は、WebアプリケーションとVisual Studio 2008を提供します。この両方の概念をサポートします。

http://anishmarokey.blogspot.com/2009/07/web-site-vs-web-application.html[myblog]を読んでください。


0


これに関する多くの記事があります - ここ、http://blogs.vertigosoftware。 com / teamystem / archive / 2006/11/03 / 4057.aspx [そしてここ]、そして こちらまで。 主な違いは、WebサイトプロジェクトはWebサイトを構成する関連アセットのフォルダーを含み、そのフォルダー内のものはすべてWebサイトの一部であるのに対し、Webサイトアプリケーションはデスクトップアプリケーションのように扱われ、.csproj / vbprojファイルすべてのアプリケーションコンテンツを一覧表示します。 また、Webサイトアプリケーションのページにはデザイナーファイルがあります。