IOC框架(.net)适合初学者?

时间:2011-02-25 19:11:30

标签: .net dependency-injection castle-windsor ioc-container

我昨天刚刚开始学习Unity,放弃了缺乏实例的b / c。我搬到温莎城堡,因为他们似乎拥有最多的文件/活动。但是,我在他们的教程上达到了一个他们没有解释的地步。对我来说,这意味着他们已经假定我拥有这方面的知识。不仅如此,但他们的可下载示例项目与VS2010不兼容 - 我不得不破解.csproj文件才能使其正常工作。

我在.net IOC容器上看过很多文章,但我的问题是'哪个对初学者最好?'。我想学习这一点,但是当一个完整的教程似乎不存在时,却发现它令人沮丧。

要抛出另一个令人沮丧的方面 - 我只使用过vb.net,所有的例子都使用c#。我知道它们基本上是相同的语言,但是不得不继续使用代码转换器,然后在它不起作用时计算出来。我不能使用可能在未来更改代码的同事的c#b / c。

编辑:我会按照偏好顺序定义'易于学习':教程/文档/邮件列表或论坛

4 个答案:

答案 0 :(得分:2)

似乎这个问题总是出现......这是一个偏好问题,团结快速,肮脏,但文档很薄。但是,大多数MS文档都很薄。

我过去曾经使用过Unity,它已经完成了我需要的所有工作。

如果您正在寻找替代方案,Scott Hanselman有blog通过它们

答案 1 :(得分:1)

如果你解释你的问题是什么可能会有所帮助;社区更容易解决具体问题,而不是回答“是否有一个更简单的解决方案,不需要我理解我没有表达的东西”。但是,确保您对Fowler关于该主题的文章(http://martinfowler.com/articles/injection.htmlhttp://martinfowler.com/bliki/InversionOfControl.html)感到满意是一个好主意。如果您理解这些文章,那么您可以更好地提出特定于您的问题域的问题。

然而,为了直接回答你的问题,我发现Ninject是最直观的依赖注入框架,主要归功于一个相当令人愉快的流畅的绑定界面。 StructureMap几乎同样令人愉快。我对Castle Windsor的经验有限,通常只在其他项目中偶然使用。我在SharpArchitecture项目样本中工作,并在之前的项目中用Ninject取代了Windsor。

至于DI库的使用,根据我的经验,最重要的是将DI框架的控制范围限制在相对较小的空间内。例如,我发现在Web应用程序中,DI容器通常最好只能由ControllerFactory调用。

我使用过的最繁琐的DI容器是在Spring(尽管我确定它比我上次使用它时更好),但是有一些非常好的例子可以使用它,因为它已经如此在Java和.Net社区都有影响力。

修改 假设你的目标是学习如何将DI应用于一个不完全无关紧要的示例项目,请考虑查看SharpArchitecture附带的示例项目(可能在阅读了SharpArchitecture网站上的教程之后)。见http://www.sharparchitecture.net/

示例项目在C#中,而SharpArchitecture的工具包不仅仅包含依赖注入,但是这比我在网上看到的大多数简单的示例项目都要多得多。

答案 2 :(得分:0)

我认为你需要首先考虑的是DI的概念以及它给你的东西。一旦你明白学习不同的实现就容易多了。

所以我对你的问题的回答是:“你自己的”这是最容易学习的DI框架。

了解DI的基础知识,然后构建自己的简单容器,它将使IMO变得更加清晰。您可以在一两个小时内构建自己的DI框架。

James Kovacs对DI有很好的介绍 http://msdn.microsoft.com/en-ca/magazine/cc337885.aspx

Martin Fowler有两篇很棒的文章解释了这些概念 http://martinfowler.com/bliki/InversionOfControl.html

http://martinfowler.com/articles/injection.html

答案 3 :(得分:-1)

我使用的是来自Microsoft的Unity和企业库的一部分。它提供基于配置和基于代码的映射。

这里有一个很好的介绍:

http://msdn.microsoft.com/en-us/library/ff650320.aspx