Singleton Unity Container

本文关键字:Container Unity Singleton | 更新日期: 2023-09-27 18:27:26

我刚开始了解国际奥委会的团结框架。我在MSDN上读了几篇文章和视频。我很了解这种团结是如何运作的。

1.创建容器
2.注册您的接口/类
3.解决你的问题。

我认为应该为每个项目抽象步骤1,2。创建创建容器并注册接口/类的singleton类,以便在整个项目中可以使用统一容器供我解决,这是个好主意吗。请提供建议。

Singleton Unity Container

除了极少数情况外,您的整个应用程序(应用程序域)应该始终有一个容器实例。DI容器是线程安全的,并且针对该场景进行了优化。拥有多个容器可能会导致性能问题和维护问题,因为有些场景很难实现(例如,拥有应用程序范围的对象)。

使用单例。在我目前的公司中,我们在Unity容器周围使用了一个单独的包装器:

  • 当然是单身
  • 公开最重要的功能(如注册和解析)
  • 从web.config/app.config获取其配置
  • 但也可以在运行时提供(例如,用于单元测试)
  • 具有在解析过程中出现意外错误时进行默认处理的功能

它就像一种魅力,让人很容易专注于重要的事情。

不要使用singleton。它鼓励您到处调用resolve,这是一个众所周知的DI反模式。

相反,在你的应用程序中有一个单独的点(桌面应用程序中的主要功能,网络应用程序中应用程序启动功能),你可以在那里使用容器来解析你的对象图,然后从那里开始。

查看Mark Seeman对"作文根"的讨论,了解更多细节。