2010-04-14 41 views
3

我目前正在一個項目,涉及三個不同的網站,有很多共同的功能。目前,通用功能被放置在一個充滿用戶控制的不同網站中。共享用戶控件acrros多個網站

問題是在多個網站上共享用戶控件。環顧SO和其他網站,唯一的解決方案似乎是使用虛擬目錄。由於這是一個可行的解決方案(我們目前在這方面),它似乎不是一個「乾淨的」解決方案。

在不同網站之間共享通用功能(包括GUI/HTML)時,有哪些「最佳實踐」?

是否(例如)可以創建單個Web應用程序項目並將子目錄(每個都有自己的web.config)部署到不同的生產環境中?

回答

1

有一個solution用於通過構建用戶控制庫共享用戶控制由ScottGu描述。在我看來,這個解決方案也不是很乾淨,因爲你必須複製預編譯的文件才能使這個解決方案有效。

我決定在單獨的類庫中使用自定義Web控件來共享通用的UI功能。但也許斯科特的解決方案適合你。

+0

類庫似乎是最明顯的做不成方法。 – Darren 2012-12-11 05:42:41

0

恕我直言,即使它不乾淨,最好使用虛擬目錄解決方案。這可以解決很多令人頭疼的問題,因爲您可以將其用於多個網站,而無需在每個網站中部署額外的文件,並且如果有更改,您只需在一個位置執行此操作。

HTH

3

我一直在處理這個相當長的一段時間了,而且都用了虛擬目錄和「用戶控件庫」的方法,並發現他們都想要。我很驚訝,微軟沒有解決這個問題來編譯用戶控件,以便像服務器控件一樣使用。

反正...

有兩家便利,我們大多數人在試圖尋找一個用戶控件庫時:

  1. 容易發展對。如果我們 更改用戶控件,我們想要它做 它的一個地方。我們希望能夠在我們工作的網絡 中對 進行編輯和調試,而無需 管理ascx 文件的多個副本。
  2. 易於部署。我們想要 能夠在多個網站 中抓取併發布ascx 文件,而沒有太多麻煩。

不幸的是,虛擬目錄方法只處理#2,而「用戶控制庫」處理#2地址,而只處理#1的一部分。使用「用戶控制庫」,您可以針對用戶控制庫源進行調試,但是如果您在工作網絡中編輯了ascx,那麼下次構建「用戶控制庫」時,這些更改將被覆蓋。這與服務器控件的運行方式類似:必須在其他位置進行編輯,並且必須進行編譯以進行更新。例外是必須複製「用戶控件庫」,而不是僅更新.dll引用。

解決方案?

我以前用來解決#1的是symlinks。在您的存儲庫中創建一個公共控件文件夾,並根據需要將該文件夾符號鏈接到每個網站。對源代碼公共控件文件夾執行的任何對符號鏈接文件夾的更改都會完成。

爲了解決#2,我只是部署完整的網站,將控件複製到適當的位置。您也可以輕鬆地創建虛擬目錄,而不是在每個網站中推出符號鏈接的文件夾。由於擔心性能問題(大量網絡,大量流量),我傾向於從虛擬目錄中爲常見用戶控件託管源代碼。

我希望這有助於!