2010-06-07 81 views
1

我看到,連接是在許多項目中引用共享代碼的常用方式。不過,我之前從未在Web應用程序中看到過它們。Web應用程序的連接或虛擬目錄?

我們的團隊正在探索爲了簡化構建過程而放棄虛擬目錄的可能性。我的目標是編制一份正反兩方面的名單,以便對這一變化作出明智的決定。

在Web應用程序項目中使用連接點或虛擬目錄更合適嗎?

環境是ASP.NET,IIS6/IIS7,VS.NET。

回答

2

虛擬目錄與連接點就像比較蘋果和梨:它們都創建一種目錄的虛擬副本,以及蘋果和梨都是成果,但比較結束於此。

首先,自Windows Vista以來,新事物是符號鏈接(實質上與連接點相同,但也可指向文件或遠程SMB路徑)。

符號鏈接使您能夠共享Web應用程序的每個部分,但Web.config和樣式表除外。這是虛擬目錄永遠無法做到的事情。

此外,虛擬目錄參與ASP.NET的更改監視。如果您嘗試從應用程序中刪除(文件或)目錄,例如,ASP.NET在請求完成後會殺死您的應用程序,導致會話丟失等。如果不是使用虛擬目錄,而是使用符號鏈接,更改將不會被注意到,您的應用程序將繼續攪動。

請務必記住,符號鏈接不是Windows中的日常功能。是的,你可以看到一個文件或目錄在資源管理器中被鏈接,但它不能即時鏈接到它。另外,從代碼中很難看出文件是否被鏈接,所以如果您意外刪除了從一百萬個符號鏈接鏈接到的文件,那麼所有這些符號鏈接將突然「停止存在」。

符號鏈接也加速了同一應用程序的多個實例的部署,因爲您唯一要做的就是複製一些實際文件,然後爲所有其他文件創建符號鏈接。

+1

您可以在IIS7中運行虛擬目錄作爲應用程序(不知道確切的術語),這是我們所做的工作,並且工作得很好。這解決了你提到的一些問題。 – Kevin 2010-06-18 18:55:58

+0

另一個抱怨與連接/符號鏈接是它導致IDE中的重複。例如,如果我有一個「admin」web項目的符號鏈接,它將顯示兩次。由於參考文獻,它仍然需要存在於項目中。總的來說,路口看起來像是一個額外的步驟,不會給網絡開發帶來很多好處。例如:http://kevinx.net/images/repeat1.png – Kevin 2010-06-18 19:11:49

+0

@Kevin:很明顯,但只有當你部署100%完全相同的實例時纔有效,這幾乎從不是。例如,如果您希望每個實例都具有唯一的Web.config,則您需要連接點或符號鏈接。 – ErikHeemskerk 2013-05-17 14:41:00

1

如果使用虛擬文件夾,則需要在每個環境中安裝IIS。但是,對於這兩種方法,每次更改後都需要手動維護所有引用(例如,某人添加了一個引用時的情況),這不方便。

考慮使用VCS和推介系統。例如,帶有externals的SVN。在這種情況下,您將擁有:

  1. 自動更新每個環境的引用。
  2. 能夠在不同版本的外部代碼中引用。這將避免在每次外部代碼更改後需要更改所有相關應用程序的情況。
+0

這是一個非常酷的功能,我會看看是否有一個相當的perforce。 – Kevin 2010-06-15 12:48:14

相關問題