我的應用程序包含許多後端程序集(包括實體框架數據存儲庫層),這些後端程序集由許多前端程序集(包括Windows服務和一個MVC3網絡應用程序)。何處在多層應用程序中定位Ninject模塊
我對Ninject綁定過程的理解是,每個包含注入類型的程序集都應該包含一個Ninject模塊,該模塊定義了這些類型的默認綁定。然後將定義的模塊集加載到消費組件的Ninject內核中。
但是,我遇到了問題,因爲所需的綁定範圍並不總是一致的。例如,我的MVC項目需要綁定到數據上下文InRequestScope
,而Windows服務綁定到相同的類InThreadScope
。
我明顯可以通過將所有模塊重新放置到前端項目中來解決這個問題,併爲每個使用場景維護每個模塊的單獨副本,但這看起來很詭異,因爲它複製了多個項目中的大部分模塊內容。
模塊應該在多層應用程序中的位置是否有最佳實踐,以及如何將這與需要約束項目之間的差異進行協調?
非常感謝您的建議,
添
另請參閱http://stackoverflow.com/questions/1699197/how-do-you-organise-your-ninject-modules(IIRC此Q是一個dup,但這是我現在得到的最好的) – 2012-08-18 07:01:07
謝謝魯本。你說得對,這兩個問題有很多共同之處。我特別喜歡你將運行時參數傳遞到駐留在支持程序集中的模塊中的建議 - 非常靈活。 – 2012-08-19 10:51:38
嗯;這是前段時間(沒有試圖以任何方式拉我的答案)。我可能在字面意思是*將參數*傳回給當天 - 一般來說,我會盡可能通過接口嘗試這樣做。另外,那是http://manning.com/seemann之前,它減少了你在DI體系結構中會令人困惑的問題數量 - 明確地說,購買它不會有問題。 – 2012-08-19 20:14:58