为啥我不应该使用 Unity?

Posted

技术标签:

【中文标题】为啥我不应该使用 Unity?【英文标题】:Why shouldn't I use Unity?为什么我不应该使用 Unity? 【发布时间】:2010-12-22 09:59:03 【问题描述】:

我正在使用 Unity IoC 容器。这真的不是我做出的决定,它只是与 Prism 一起出现的,我一直坚持下去。我从未使用过任何其他 IoC 框架,我必须承认我对 Unity 非常满意。然而,满足感可能来自于无知,因为我真的不知道其他框架能提供什么。

我一直听说我不应该使用 Unity IoC 容器。 “改用 Castle、nInject 或 StructureMap”,人们说,但我仍然没有听到任何具体的论据或例子来说明为什么我应该使用不同的框架。那么,为什么我不应该使用 Unity?或者也许我应该?

【问题讨论】:

对这个 *** 问题 (***.com/questions/411660/…) 的公认答案变成了一篇非常详细的博文(此处为 elegantcode.com/2009/01/07/ioc-libraries-compared),可能会有所帮助。 确实很有用!在寻找有关该主题的现有问题时,我不知何故错过了这个问题。谢谢! 【参考方案1】:

这些容器往往是关于味道,比什么都重要。 Ninject 有一个很好的流畅的配置界面,但有些人喜欢 Unity 通过配置(我认为是自虐狂)和代码进行配置的能力。

我和你一样,在采用 Prism 时也有这些问题,所以我进行了用 Ninject 和 Autofac 替换 Unity 的练习。在性能或功能方面,我发现没有令人信服的理由坚持使用 Unity。两者都有一些很好的东西,但它们基本上都做了相同的事情并且做得很好。

我会查看每个功能、样式和语法,然后决定您最喜欢哪一个。这真的是唯一的区别......它的感觉。通常存在一些核心功能差异,但您需要这些差异的可能性很小。

发布有关您决定的最新信息...我总是对人们的真实世界发现与热情的用户所倡导的内容感兴趣。

【讨论】:

已经做了一些研究,但暂时没有找到任何不使用 Unity 的充分理由。所以 - 结论是“如果它没有坏 - 不要修复它” - 我留在 Unity。如果出现危机,以后无论如何都可以改变这一点。如果我要改变,我会选择 StructureMap。感谢您的回复!【参考方案2】:

使用 Unity 的一个原因是,如果您需要在中等信任环境中工作。根据我的发现,如果您的代码没有完全信任,Unity 似乎更容易运行。我使用了一些 IoC 容器,并且在需要中等信任度时使用 Unity。

【讨论】:

似乎不再支持对 Unity 的部分信任。 msdn.microsoft.com/en-us/library/dd203232.aspx

以上是关于为啥我不应该使用 Unity?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不应该在访问对象之前使用“if Assigned()”?

为啥我不应该使用默认的 java 安全管理器 [重复]

为啥我不应该在 IDP 上下文中使用 IdToken 作为不记名令牌?

为啥我不应该使用 catch() 来处理 React useEffect API 调用中的错误?

如果 PyPy 快 6.3 倍,为啥我不应该使用 PyPy 而不是 CPython?

为啥我不应该发布用 Ivy 编译的库?