题记:
这是一篇译文,出自Castle的官方站点的文档中心,围绕着IOC的基本概念介绍了Castle里面的MicroKernel 和Facility等,对于想学习Castle.Windsor的朋友来说,仔细阅读本文将让之后的学习有个较为清晰的轮廓.E文好的朋友可以直接去看原文,地址是:http://www.castleproject.org/index.php/IoC:Main_concepts 上面还有许多的好文章,如果有朋友需要,我将陆续的再翻译一些:)(翻译的不好就请包涵了,呵呵)
IoC:主要概念
对容器,尤其是MicroKernel的概念的深刻理解将有助于你对它的熟练使用尤其是扩展。
内容结构:
1,什么是控制反转的容器?
1.1 什么是Castle的MicroKernel
2,概念
2.1服务/组件
2.2子系统
2.3Facilities
2.3.1 新的语义
2.3.2 集成
什么是控制反转的容器?
所谓的控制反转的容器是种可以注册类,并在适当的时候对它们作用的工具—通常是要执行一些有用的工作,否则就没有意义了.
在非常底层的地方,容器将通过类之间的依赖关系将它们联系起来,通常被称做自动装配.但你这么做的理由是什么呢?这只在你需要设计一个松耦合的应用程序时才是有意义的.如果你的设计方案是标准的意大利面条似的设计,那控制反转的容器帮不了你太多.
不过,这篇文章并不是要尽力说服你来相信IOC概念的益处.
什么是Castle的MicroKernel
MicroKernel是IOC容器在Castle上的一个具体实现.它将有益于提供一组"特色"的交集,这个交集将对一系列组件起作用而不让他们互相影响
例如,你可以为你的组件使用AOP,日志和事务处理.你的组件并不需要关心有什么作用在他们上面,同时,AOP也不会干扰日志和事务等等.我们把这些包装好的"特色"称为Facilities.以后我们将更多的讨论它们.
概念
从最开始,我们就不打算创建一个可以支持开发者们所遇到的每个场景的容器.相反,我们把精力都投入在创建一个轻量级并且高可扩展性的容器上.
这里所说的扩展并不是像你创建子类来丰富父类那样的垂直扩展.虽然你可以那么干,但是MicroKernel是被设计成你可以通过替换关键块或者向里注册Facilities来达到垂直或水平扩展的效果.
在深入更具体的细节前,认可这个关键概念对于余下的文档的理解将是非常重要的.
服务/组件
一个组件,就是一个小小的可重用的代码单元.它只暴露和实现一个服务.在实际应用中,一个组件就是一个从服务(接口)实现出来的类.这个接口就是服务的契约,通过它们我们可以构建一个抽象层,当我们替换服务的具体实现时,将不产生任何的错误.
子系统
子系统被MicroKernel用于操作它外部的一些东西.比如,配置和类型转换被子系统操作,它们可以轻易的被替换或者扩展以适应某个需求,只需要遵守契约即可.
Facilities
Facilities是单元的扩展.它增强了容器的功能,提供了新的语义并且常常与外部工具或框架集成到一起.我们当前就拥有一组Facilities,你可以使用它们尤其是通过观察它们的实现方式来学习更多的知识.
新语义
以下的Facilities是加入到MicroKernel的新语义的例子:
集成
以下的Facilities是加入到MicroKernel的集成方案的示例