2009-07-20 70 views
4

什麼是共享同一服務器上的多個Web應用程序之間的bin文件夾和dll和其他資源文件(如CSS)的最佳實踐?共享代碼的多個Asp.Net在工程中

我已經將通用代碼分離到了它們自己的程序集中,但我想知道部署等。我基本上想要將所有常見文件都放在Web服務器上的一個位置,然後讓每個Web應用程序引用該常見位置。

目前我不知道如何告訴Asp.net網站,從不同的位置使用bin文件夾。

如果這有什麼差別,這些都是ASP.NET MVC應用程序。

感謝您的幫助。

+0

請不要再問同樣的問題,因爲你沒有得到你想要的答案:http://stackoverflow.com/questions/1155655/asp-net-deployment-how-to-share-bin-跨多的web應用項目。 – 2009-07-20 21:16:41

回答

1

最佳做法建議您不要。

每個應用程序是不同的,這樣對待他們。通過共享資源,您可以在項目之間創建隱式依賴關係 - 如果您更改共享資源,則您將全部更改它 - 無論是否有意。

如果您確實必須共享資源,請在源代碼控制或構建級別執行此操作 - 在該級別打破依賴關係要比在生產服務器上部署依賴關係更容易。


Xanadont,共享公共圖書館等是罰款(實際上,這就是開源項目如NHibernate的做),但在分格共享文件夾在生產服務器上水平做這個創造更多的問題比它解決。通過在源代碼控制內創建獨立項目的共享庫,並在某處維護二進制版本,可以最好地處理您正在討論的重用類型。項目希望使用共享庫,然後通過複製二進制到解決方案的源代碼樹的lib文件夾,且引用該二進制採取對共享庫二進制依賴。這樣就可以維護和更新共享庫,而不會由於直接依賴它們而導致副作用,並且使用這些庫的解決方案可以評估修訂/更新以確定它們將如何影響依賴於它們的代碼,以及升級是值得的。


斯科特,你指的是1應用與視圖層(模板)的變化,不是50應用與在業務邏輯變化。這種應用程序的最佳方法是多租戶(因爲我假設每個城市也有一個數據庫),並使用url定義一個上下文,從中可以訪問數據庫並解析視圖路徑(很難描述沒有更好地理解你的應用程序體系結構的更好方法)根據網址

更改視圖可以通過實施情境感知視圖引擎來完成(見http://www.coderjournal.com/2009/05/creating-your-first-mvc-viewengine/對於如何做到這一點的例子。

使用這種方法,您只需要1個位置,您需要使用修復程序進行更新,但您可以通過添加一組新的模板輕鬆地爲另一個城市創建一個新「站點」(取決於您設置路由)指向您的網站的新域。如果您有一組默認模板,那麼如果自定義不存在,您的視圖引擎甚至可以回退到這些模板,因此只需在應用程序中指向一個新域,就可以設置新的站點。

+3

我不同意。共享通用功能和資源是代碼庫背後的全部理念。這就是爲什麼你有.Net平臺的原因 - 很多常用功能都很好地捆綁在框架中。爲什麼不把這個想法擴展到你的組織的通用功能?考慮插入安全漏洞的情況 - 在「共享資源」環境中執行此操作,並在一個位置處理所有事情。否則,您可能會意外地忘記了您的某個網站的更新,現在您遇到了問題。在最壞的情況下,這可能是非常危險的。 – xanadont 2009-07-20 04:56:47

0

我使用以下技術: 我有多個ASP.net應用程序項目與ascx控件,資源等......我已經實現了虛擬路徑提供程序來解決這些應用程序之間的虛擬路徑。它工作得很好。我還實現了特殊的http處理程序,使文件可以下載。如果您需要樣品,請查看liveui源代碼。