Gar*_*ghi 6 architecture dependency-injection ninject ioc-container
我从哪里开始?
在学习程序的过程中,一个人会遇到设计模式,架构选择等.对于我来说,我从概念上理解DI,IoC以及它们为什么需要/好.模块化,低耦合高内聚 - 我明白了.
例如,我正在使用MVP模式构建一个小型测试网站,其中演示者没有具体的视图,但使用了View实现的接口.它还有一个服务层(位于演示者和BLL之间)的引用,同样没有什么具体的,使用一个接口.所有好东西.
(手动)IoC正在向上推动具体对象的实例化,以至于对象需要在某个地方注入.换句话说,依赖性仍然存在,它只是更高.输入IoC容器.并进入沮丧.
我知道他们在那里,我知道他们用的是什么.我选择使用ninject.凉.所以,我开始寻找.在我的下载中,我有一堆文件:
另一个文件夹,称为扩展
好的...一堆文件.哪个用?我不知道.我在哪里放置它们?我需要所有这些吗?问题问题......
也许看一些手册.Ninject wiki @ github.对.我开始阅读 - 为什么要使用Ninject?手动依赖注入,使用Ninject依赖注入 - 关于剑和匕首等的好例子.但我没有在任何地方阅读如何实际使用它.我在哪里将它放在Visual Studio中?怎么称呼它?怎么样?
此外,它提供了以下代码:
Bind<IWeapon>().To<Sword>();
Run Code Online (Sandbox Code Playgroud)
它说每次调用IWeapon时都会给出剑的实现.呃......好吧,还有一把匕首 - 也许我不想每次都得到一把剑,例如IWeapon在我的构造函数中作为参数,但是怎么做?它没有说!我每次使用IWeapon时都会被一把剑困住吗?如果没有,那么改变的代码是什么呢?如何?
它说当你拥有一堆构造函数时,它只会占用参数最多的构造函数.好的.如果构造函数的参数比构造函数少,那么它的作用是什么呢?我不能将ninject与这些构造函数一起使用吗?或者......它是如何工作的?再一次 - 它没有在任何地方说.诅咒!
在wiki中,有一个指向SO上最具争议的帖子的链接.这是关于一个名叫乔尔的人如何说出一些关于IoC的事情,它能够引发火焰战争/书呆子.但你知道吗?我敢说我对这个人来说是个根本.为什么?也许IoC的概念很简单,但是通过上帝 - 最终知道如何使用它,在某些情况下如何做等等真的非常令人沮丧.搜索谷歌大多没有任何用处,或者确实需要阅读其中很复杂的内容.我发现这个人在某种意义上可能是正确的 - 因为很难理解概念并向那些不理解你认为简单的事情的人解释.
为什么不能把它更像"下载文件 - 获得该文件,并将其置于方便的位置,然后去到Visual Studio,使一个新的地图和基准的DLL要使用它做这些步骤",然后解释每一步有一个非常好的和详细的原因.没有代码片段.这令人沮丧.
所以,有人可能想知道我的问题是什么.好吧,我想使用Ninject.我需要什么?我在哪里放置它?我如何让它工作?在我拥有IWeapon的任何地方,我都必须被卡住吗?当太阳在外面照耀时,我在工作中做什么?
我有一套非常简单的ninject示例代码,当我们将它们引入项目时,我为我们的一些开发人员编写了这些代码.它只是涵盖了基本的绑定等等.与其如何使用MVC或更高级的主题(如上下文绑定)无关.这一切都是作为nUnit测试完成的,所以我希望它很容易理解.它没有显示的是如何正确地将其用于您的项目.我希望很快能做一个真实的MVC项目示例.
https://github.com/ryber/Ninject-Examples
希望有所帮助.
对于 Web 项目,我建议使用 MVC3。有关使其与 Ninject 配合使用的信息,请参阅https://github.com/ninject/ninject.web.mvc/wiki/MVC3 。
归档时间: |
|
查看次数: |
1057 次 |
最近记录: |