2011-03-31 12 views
46

私のWebサイトを展開すると、フォルダを仮想フォルダまたはWebアプリケーションに変換できることがわかりました。私はこれら2つの概念について完全に混乱しています。IIS 7.xのコンテキストでWebアプリケーションと仮想フォルダの違いは何ですか?

  • なぜ2つの異なるタイプがありますか?

  • それぞれの目的は何ですか?

+2

http://stackoverflow.com/q/1002981/80161 –

+0

の重複は、最近、私は、Tomcatに変更。私はそれがよりコンセプトではなく、より明確な展開モデルであることを発見しました。 – smwikipedia

答えて

76

仮想フォルダまたは仮想ディレクトリは、サーバーのどこかの物理フォルダへの単なるリンクです。このフォルダはWebサイト構造の一部となり、URLのパス部分に仮想ディレクトリを使用できます。仮想ディレクトリで実行されるコードは、親アプリケーションと同じ「アプリケーション」で実行されます。

アプリケーションその「フォルダ」内で実行されたコードは、それが自分のセッション状態とアプリケーションの状態のしているされています。実際には、ルートアプリケーションの下に新しいスタンドアロンアプリケーションが存在します。

たとえば、/myappというApplicationフォルダを持つサイトにASP.NETアプリケーションを展開する場合、そのアプリケーションは独自のアプリケーションドメイン、セッション状態、別のASP.NETアプリケーションとは完全に別のアプリケーション状態になります実行中は/です。例:あなたは、ルートアプリケーションのアプリケーション値Application["Thing"] = 123を設定して、同じことをやったが、ルートで、その後Application["Thing"]/myappに異なる値と/myappに割り当てによって上書きされない場合。

アプリケーションの別のことは、実行する別のアプリケーションプールを指定していることです。たとえば、ルート/アプリケーションにASP.NET 2.0アプリケーションが含まれ、.NET 2.0用に設定されたプールで実行される場合があります。しかし、ASP.NET 4.0で書かれたブログやフォーラムアプリケーションを実行したいかもしれません。 ASP.NETランタイムバージョンを同じアプリケーションプールに混在させることはできないため、ASP.NET 4.0アプリケーション専用の代替アプリケーションプールを指定できます。

また、アプリケーションは、仮想ディレクトリのように振る舞うことができますし、他の場所で、サーバー上の物理フォルダにアプリケーションフォルダを指すことができます。

あなたはIIS7上の仮想ディレクトリとアプリケーションの基礎となる力学に興味があれば、この答えを見て、私はしばらく前投稿:

Using ServerManager to create Application within Application

1

を情報を追加するには詳細はKevが非常にうまく言及している - すべての仮想ディレクトリは、既定ではという名前の事前定義されたアプリケーションプールの下で実行されます。 DefaultAppPoolは、Windowsでこの機能を有効にするたびにIISでデフォルトで使用されます。 Webアプリケーションの場合は、新しく作成されたappPool内に新しい/新しいappPoolsを作成し、WebAppを実行することができます。これらのappPoolは、独自のappPoolが定義されている場合に、IISがセッション状態、アプリケーション状態などのサービスをサイロ内でWebAppに提供できるように、物理的/別個のプロセス空間(ワーカープロセスの形式)を提供します。 WebAppのappPoolがクラッシュすると、(独自のカスタムappPoolを使用する)他のwebAppまたは(DefaultAppPool appPoolを使用する)仮想ディレクトリは、まったく影響を受けません。

関連する問題