新足迹

 找回密码
 注册

精华好帖回顾

· 悲剧了: 提醒有小宝宝的妈妈,注意宝宝发育性髋关节脱位 3 楼更新, 手术回来 (2010-8-21) JuliaBear88 · 一道简单的鱼肉菜谱 - 金玉满堂 (2005-1-19) JACK
· 从孩子的阅读谈起 (2009-5-12) meigui · 女儿的演出 (2007-5-25) Eating
Advertisement
Advertisement
查看: 1299|回复: 6

-------------- 请问什么是Windsor Container?-------------- [复制链接]

发表于 2012-6-7 18:04 |显示全部楼层
此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
最好不要是很玄乎的解释,新人一听也能明白的。


谢谢各位大哥大姐了!
Advertisement
Advertisement

发表于 2012-6-7 20:17 |显示全部楼层
此文章由 huaxianz 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huaxianz 所有!转贴必须注明作者、出处和本声明,并保持内容完整
是和硬盘技术有关吗?

发表于 2012-6-7 20:33 |显示全部楼层
此文章由 showen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 showen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我来抛砖引玉,这个因该就是Dependency Injection Container
针对Inversion of Control (IOC) 或者 dependency injection (DI) 这个概念

类似的还有unity, ninject

发表于 2012-6-7 20:34 |显示全部楼层
此文章由 micvzw 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 micvzw 所有!转贴必须注明作者、出处和本声明,并保持内容完整
One of IoC Container, too hard to explain~~
GOOGLE it!

发表于 2012-6-7 23:29 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
从9万英尺的高空看windsor container就是一个instance factory。

factory内部控制interface之间的依赖关系(必须是constructor级别的依赖,而且不能有无参数的constructor),形成一个依赖的树。这个factory可以有不同的方式控制instance的life cycle,所以性能考虑的使用static class不被推荐。

实际用比较典型的是mvc,用windsor container作核心来替代默认的controller factory,在controller instantiate的时候,它会对windsor controller factory说:hey,give me instances of dependency interfaces (注意这是必须的,否则controller不能被instantiate,因为它没有默认的无参contructor),windsor controller factory就会根据application start时候注册的interface依赖数来给他一个家族的instance,直到leaf level,供controller用,如果其中任何一个环节的interface没有被注册,都会跳death of yellow page.

它的最大优点:

1. code to interface(可能算是前提),DI成为可能。
2. Unit test/isolation 可以实现的很优雅。
3. 把instance life cycle的控制权推给framework,省掉很多精力(当然framework的bug也很可怕,我们就有这种经历,但通过perwebrequest解决了)

再往深里说就说Multitenancy,一个interface有N种implementation,这也是windsor相对其他小点framework的强项,就不多说了,需要的再交流吧。

评分

参与人数 1积分 +5 收起 理由
梦呓人 + 5 你永远是小弟的大哥!

查看全部评分

发表于 2012-6-8 16:12 |显示全部楼层

回复 无视 5# 帖子

此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
码兄, 是不是可以把Windsor container理解为MVC做unit test时候instantiate controller的一个好的framewoek?
Advertisement
Advertisement

发表于 2012-6-8 16:59 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 梦呓人 于 2012-6-8 15:12 发表
码兄, 是不是可以把Windsor container理解为MVC做unit test时候instantiate controller的一个好的framewoek?


作unit test的时候,controller还是要自己new.但它的contructor中的denpendency可以通过isolation framework来生成。

winsdor container让这种solution成为可能,可以说它是unit test的几个重要前提之一。

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部