我是一般的國際奧委會新成員,我很努力地瞭解我所做的是否有意義。我有一個Web窗體應用程序,我想創建一個模塊來爲我定義一些綁定。這些綁定將用於將存儲庫注入我的業務經理類,使我能夠對業務經理進行單元測試。另外我想使用容器將Entity Framework上下文注入到我的存儲庫中,這樣他們就可以根據http請求共享相同的上下文。所以這是我想知道:將Ninject IKernel存儲在Web應用程序中的位置?
我明白,我需要有相同的內核實例管理自己的對象的創建和他們的一生。例如,如果我想要一個一次一個httprequest類型的場景,我需要內核的實例在那段時間內可用。如果我需要一個單身人士怎麼辦?然後,它必須以某種方式成爲應用程序範圍。那麼我究竟在哪裏存儲IKernel實例?看起來我可能希望在我的Global.asax中將其設置爲靜態,這是正確的方法並且是線程安全問題嗎?
因爲我使用綁定<>來定義我的綁定,所以當我不應該從UI引用數據訪問層時,如何在Web/UI層中定義該定義?我的引用看起來像.Web - > .Business - > DataAccess。看起來我想告訴內核「嘿,管理我的數據訪問實例,但沒有在編譯時引用它們。」綁定像這樣:
//Any object requesting an instance of AdventureWorksEntities will get an instance per request
Bind<AdventureWorksEntities>().ToSelf().InRequestScope();
我覺得我可能會被錯誤地處理這個,謝謝。
http://stackoverflow.com/questions/367178/usage-of-ioc-containers-specifically-windsor – 2010-08-06 20:55:27