|
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 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的强项,就不多说了,需要的再交流吧。 |
评分
-
查看全部评分
|