c# /。NET依赖注入框架值得一看? 你对它们的复杂性和速度有什么看法?
当前回答
我是卡塞尔的超级粉丝。我喜欢它提供的IoC容器之外的功能。它真的简化了使用NHibernate,日志,AOP等。我还使用Binsor来配置Boo,并因此真正爱上了Boo这门语言。
其他回答
我是卡塞尔的超级粉丝。我喜欢它提供的IoC容器之外的功能。它真的简化了使用NHibernate,日志,AOP等。我还使用Binsor来配置Boo,并因此真正爱上了Boo这门语言。
这取决于你在寻找什么,因为它们都有各自的优点和缺点。
Spring.NET is the most mature as it comes out of Spring from the Java world. Spring has a very rich set of framework libraries that extend it to support Web, Windows, etc. Castle Windsor is one of the most widely used in the .NET platform and has the largest ecosystem, is highly configurable / extensible, has custom lifetime management, AOP support, has inherent NHibernate support and is an all around awesome container. Windsor is part of an entire stack which includes Monorail, Active Record, etc. NHibernate itself builds on top of Windsor. Structure Map has very rich and fine grained configuration through an internal DSL. Autofac is an IoC container of the new age with all of it's inherent functional programming support. It also takes a different approach on managing lifetime than the others. Autofac is still very new, but it pushes the bar on what is possible with IoC. Ninject I have heard is more bare bones with a less is more approach (heard not experienced). The biggest discriminator of Unity is: it's from and supported by Microsoft (p&p). Unity has very good performance, and great documentation. It is also highly configurable. It doesn't have all the bells and whistles of say Castle / Structure Map.
总之,这取决于什么对你来说是重要的。我同意其他人的看法,去评估,看看哪一个合适。好处是你有很多甜甜圈可以选择,而不仅仅是果冻甜甜圈。
我可以推荐Ninject。它非常快速且易于使用,但仅当您不需要XML配置时,否则您应该使用Windsor。
c#的伟大之处在于,它遵循了多年来Java开发人员所走过的道路。所以,我的建议是,一般来说,在寻找这种性质的工具时,寻找可靠的Java答案,看看是否存在。net的改编。
因此,当涉及到DI时(有很多选择,这真的是一个品味问题)是Spring.NET。此外,研究项目背后的人总是明智的。我建议使用SourceGear产品进行源代码控制(在使用它们之外),因为我尊重Eric Sink。我看过马克·波拉克的演讲,我能说什么呢,他就是懂。
最后,有很多依赖注入框架,您最好的选择是使用其中的一些做一些示例项目,并做出明智的选择。
好运!
我用过Spring。NET,并取得了巨大的成功。我从未注意到它有任何实质性的开销,尽管我们使用它的项目本身相当繁重。只需要花一点时间阅读文档就可以设置它。
推荐文章
- Linq-to-Entities Join vs GroupJoin
- 为什么字符串类型的默认值是null而不是空字符串?
- 在list中获取不同值的列表
- 组合框:向项目添加文本和值(无绑定源)
- AutoMapper:“忽略剩下的?”
- 如何为ASP.net/C#应用程序配置文件值中的值添加&号
- 从System.Drawing.Bitmap中加载WPF BitmapImage
- 如何找出一个文件存在于c# / .NET?
- 为什么更快地检查字典是否包含键,而不是捕捉异常,以防它不?
- [DataContract]的命名空间
- string. isnullorempty (string) vs. string. isnullowhitespace (string)
- 完全外部连接
- 如何使用。net 4运行时运行PowerShell ?
- 在foreach循环中编辑字典值
- 如何在xml文档中引用泛型类和方法