昨天我在阅读这个网站上的一些文章时偶然发现了一篇关于这两个新 IoC 工具的文章。我应该先学哪一个?是否有关于何时应该使用哪一个的规范?
3 回答
Castle.Windsor 或 Spring.NET 都不是新的。
- 温莎城堡自 2004 年底以来一直存在
- Spring.NET 自 2006 年初就已经存在
它们是两个可比较的DI 容器,本质上旨在提供相同的服务,因此您无需先学习一个,也无需查阅任何类型的规范来了解何时使用哪一个。
我已经使用 Castle Windsor 大约半年了,总体上对它很满意。Spring.NET 我还没有看,但它看起来与配置系统密切相关,不支持编程注册,如果这是真的,那在我看来将是一个主要缺点。
Castle Windsor 和 Spring.NET 并不是唯一可用于 .NET 的 DI 容器。这是一个更大的列表:
我是 Castle 项目(包括 Windsor)的提交者之一,所以我可能有偏见,但是。
Windsor 非常可扩展,允许您根据需要调整和弯曲它。它提供了不错的流畅注册 API,因此您不必编写大量 XML。还有大量扩展可用于将 Windsor 与其他框架集成,例如 ORM 通信框架(WCF、NServiceBus)等。
此外,它拥有一个非常活跃且反应迅速的社区,因此如果您有任何问题,大多数情况下都会很快得到答复。
我想两者在配置方面都更好。没有太大区别,但都比 Unity 框架好。为什么在依赖控制中需要 marshalbyrefobject 关联。但是如果我们比较 spring.net 和 Castle Windsor 两者都很好。但是问题来了,哪一个是完整的容器框架。就像我们需要 Aspects 来验证依赖关系。所以winsor实用程序失败了。我想将 String.net 与 Castle Windsor 或类似的东西进行比较是愚蠢的,因为它们都是实用程序,而 spring 是完整的容器框架。所有说它很重的人请检查所有内存泄漏问题。这不是 spring 或 Castle Windsor ,这是编写代码的愚蠢方式。所以最后的答案是,如果您只需要 DI,请使用 Windsor,但如果您需要任何解决方案的完整框架,请使用 spring.net。