我有N個應用程序。每個應用程序至少包括以下組件:是組裝循環依賴設計中的一個錯誤
- BusinessLogic
- 數據訪問
在某些情況下應用1只需要調用從應用2和應用程序2需要BusinessLogic層的方法來調用的方法businessLogic應用程序層1.此情況導致應用程序1和應用程序2的businessLogic層之間的程序集循環依賴關係。我知道它可能會導致構建過程中出現一些問題。現在我的問題是:「在建築設計中是否是一個錯誤?如果是,如何解決?」
我有N個應用程序。每個應用程序至少包括以下組件:是組裝循環依賴設計中的一個錯誤
在某些情況下應用1只需要調用從應用2和應用程序2需要BusinessLogic層的方法來調用的方法businessLogic應用程序層1.此情況導致應用程序1和應用程序2的businessLogic層之間的程序集循環依賴關係。我知道它可能會導致構建過程中出現一些問題。現在我的問題是:「在建築設計中是否是一個錯誤?如果是,如何解決?」
如果應用2必須調用應用1的業務邏輯層,這應該是你到循環依賴之前以及紅旗(因爲APP1真的,現在業務邏輯和應用2)。
一個共同的解決方案,這是完全抽象的OOP語言的基類時,你會怎麼做。在這種情況下,找到共享的片段並將它們從單個「應用」下移出,然後放入可輕鬆共享的庫中。
在你的情況,我會把自己的業務邏輯操作是股並把它們放在自己的組件的命名恰當地這樣既可以消費它沒有問題。
可能有2個組件相互依賴(例如System.dll
和System.Configuration.dll
在.NET Fx中彼此依賴)。但正如你可能經歷過的那樣,你必須努力對付Visual Studio強制措施才能避免這種情況。
很明顯非循環程序集之間的依賴關係是一個目標,你需要必須實現。否則,您的程序集不能獨立開發,編譯和測試。
通用範例是BusinessLogic
使用DataAccess
而不是相反。如果你想DataAccess
能夠再打BusinessLogic
這樣做的通常的方法是:
DataAccess
裝配BusinessLogic
組件(因此BusinessLogic
集的引用實現這個調用背部接口DataAccess
組件,但是反之則不行)BusinessLogic
到DataAccess
,通過在DataAccess
所定義的方法的幾個對象,需要一個回調接口PARAMET呃。具有DataAccess
能夠再打BusinessLogic
是不被禁止的事情,但你應該問自己,爲什麼你要做到這一點,你應該嘗試將這些號碼回調的限制嚴格的最小。
就個人而言,我喜歡的考慮組件的命名空間的組件走得更遠,具有非週期性的命名空間的依賴,並避免使用匯編神器來定義組件。這在我撰寫的兩本白皮書中已經公開,可用here。