我在 ASP.NET MVC3 应用程序中使用统一容器时遇到问题。
我有几个带有接口(interface)及其实现的项目。所有具体类型绑定(bind)的接口(interface)都在应用程序启动方法中执行。
这个方法有几个问题:
1) 如何处理 MVC 应用程序不直接需要但它使用的类需要的类型注册(存储库使用 ContextManager 检索上下文实例)。如果此类位于未被 mvc 应用程序使用的程序集中,我将不得不添加对它的引用。
2) 如何共享配置好的容器?我是否应该使用静态类创建单独的程序集来存储由 mvc 应用程序容器创建的?
3) 什么样的unity容器使用方式可能会带来跨线程问题?如何注册单例,以便它们仅在该线程(Web 服务器调用)等中可用。
最佳答案
- 您应该将所有程序集显式引用到您的 ASP.NET MVC 应用程序。它是 onion architecture 中的最外层并且允许了解内层。无论如何,所有程序集都必须位于
bin
文件夹中,以便 ASP.NET MVC 应用程序以某种方式了解它们。只需将您的 DI 框架配置外部化到 ASP.NET MVC 应用程序中的一个位置。 - 参见 1。
- 每线程存储在 ASP.NET 中可能是危险的。 Per HTTP Context更好。
关于c# - 如何在 MVC 应用程序中设置 Unity 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7261342/