簡體   English   中英

在許多公司的asp.net mvc 3 Web應用程序上共享公用.net類庫的一種容易維護的方法是什么?

[英]What is an easily maintainable way to share a common .net class library over many corporate asp.net mvc 3 web applications?

我一直在努力滿足我的所有要求。

這是我們庫中的內容:

  • 控制器和服務的基類
  • 業務對象(商店,部門等)
  • 通用局部視圖(登錄,錯誤等)
  • HttpApplication的基類
  • 通用通用代碼(讀取INI文件,創建db conn等)

給我帶來麻煩的一項要求如下:

  • 住在服務器上的一個地方。 (即復制本地=假)

這是因為:

  • 包含HttpApplication類的DLL必須與要啟動的Web應用程序dll位於同一目錄中。 我還沒有找到解決方法。 我可以在每個應用程序中復制此代碼,但是寧願不要。
  • 如果我使用Assembly.LoadFrom()從共享位置加載dll,則共享視圖不喜歡工作。 (我一直在使用這種方法來預編譯我的視圖)
  • web.config中的任何名稱空間快捷方式都會在運行時因編譯錯誤而中斷,因為在加載程序集之前已對web.config進行了解析。

我對大家的問題是,您如何在類似的環境中處理通用代碼?

GAC似乎比其價值還麻煩,我們希望所有應用程序都使用相同的代碼,而不是在多個版本上具有多個應用程序,而必須維護所有這些。 是否有設計模式/最佳實踐可以在這方面指導我們?

另外,作為獎勵,如果您可以解決上述任何問題,那也很好。

謝謝!

編輯:我想接下來的問題是我們是否應該在服務器上甚至有一個包含通用dll的目錄,或者是否僅應在部署/更新項目時進行部署?

首先,您將想要分離出您想要實現的目標。 不要創建一個可以完成所有任務的庫,否則您將擁有一個大泥巴球 不要害怕創建幾個可維護的庫來實現您所追求的目標。 是否有特定原因需要將其存儲在一個位置?

例如,您提到的幾個項目是MVC或特定於Web的。 如果您有可以被MVC重用的項目,請創建一個類庫,其中包含您繼承的MVC基類,並在項目中引用它們。 盡可能使用單一責任原則。

關於您提到的其他項目,例如數據庫連接性(如果可重用),請將其抽象到數據訪問類庫中並進行引用。 其他簡單的操作,例如讀取ini文件或創建文件,創建另一個庫並將其抽象為易於使用的方法。

我更喜歡在本地復制庫dll。 您永遠不知道何時需要對庫進行更改,但是您不希望所有項目都停止編譯。 當您准備實現該庫的新版本時,請復制dll並重新編譯。

不知道為什么所有的仇恨都對聯邦軍。 它旨在解決此特定問題。 將常見的dll安裝到gac,所有應用程序都可以看到它們。 需要部署一個新的,只需將其重新安裝在一個地方即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM