1

ジャンクションは、多くのプロジェクトで共有コードを参照する一般的な方法であることがわかります。しかし、私はそれらがWebアプリケーションで使用されるのを見たことがありません。

私たちのチームは、ビルドプロセスを簡素化するために、ジャンクションを優先して仮想ディレクトリを放棄する可能性を模索しています。私の目標は、この変更に関して十分な情報に基づいた決定を下すために、賛否両論のリストをまとめることです。

Webアプリケーションプロジェクトでジャンクションまたは仮想ディレクトリを使用する方が適切ですか?

環境はASP.NET、IIS6 / IIS7、VS.NETです。

4

2 に答える 2

2

仮想ディレクトリとジャンクションは、リンゴと梨を比較するようなものです。どちらもディレクトリの仮想コピーのようなものを作成し、リンゴと梨はどちらも実を結びますが、比較はそこで終わります。

まず、Windows Vista以降、新しいものはシンボリックリンクです(これは基本的にジャンクションと同じですが、ファイルまたはリモートSMBパスを指すこともできます)。

シンボリックリンクを使用すると、たとえば、Web.configとスタイルシートを除くWebアプリケーションのすべての部分を共有できます。これは、仮想ディレクトリでは不可能なことです。

また、仮想ディレクトリはASP.NETの変更監視に参加します。たとえば、アプリケーション内から(ファイルまたは)ディレクトリを削除しようとすると、ASP.NETは要求の完了後にアプリを強制終了し、セッションが失われるなどの結果になります。仮想ディレクトリを使用する代わりに、シンボリックを使用する場合リンクを押すと、変更は通知されず、アプリは引き続き攪拌されます。

シンボリックリンクはWindowsの日常的な機能ではないことに注意してください。はい、エクスプローラーでファイルまたはディレクトリがリンクされていることを確認できますが、リンクされているものにはすぐには表示されません。また、コードからはファイルがリンクされているかどうかを確認するのがはるかに難しいため、リンク先のファイルを100万のシンボリックリンクから誤って削除すると、それらのシンボリックリンクはすべて突然「存在しなくなります」。

シンボリックリンクは、同じアプリケーションの複数のインスタンスの展開も高速化します。これは、いくつかの実際のファイルをコピーしてから、残りすべてのソースファイルへのシンボリックリンクを作成するだけだからです。

于 2010-06-18T13:40:28.773 に答える
1

仮想フォルダの場合、各環境にIISをインストールする必要があります。ただし、どちらのアプローチでも、変更のたびにすべての参照を手動で維持する必要があります(たとえば、誰かがもう1つの参照を追加した場合など)。これは便利ではありません。

参照システムでVCSを使用することを検討してください。たとえば、外部とのSVN 。その場合、次のようになります。

  1. 各環境での参照の自動更新。
  2. 異なるバージョンの外部コードで参照を持つ機能。これにより、外部コードを変更するたびに、依存するすべてのアプリケーションを変更する必要がある状況を回避できます。
于 2010-06-14T20:49:06.153 に答える