首页 新闻 会员 周边

Castle和Spring.net比较?

0
悬赏园豆:5 [已解决问题] 解决于 2010-09-02 12:56

近来想研究一下Castle和Spring.net,便于在项目中使用。现在希望了解一下,这个两个框架各有什么优缺点?哪个框架成熟?用的最多?多谢!

问题补充: 谢谢各位回答!我想知道,各位可在实际项目中使用了,还是仅仅停留在了解?包括ms unity,在实际项目中,各个框架表现的如何?
深潭的主页 深潭 | 初学一级 | 园豆:187
提问于:2010-08-25 13:31
< >
分享
最佳答案
0

推荐用Castle,注册程序需要对象就几行代码搞定,最新发布了2.5正式版。

spring.net配置太多了,写xml配置写死人了,实在不方便....

收获园豆:1
李永京 | 老鸟四级 |园豆:3114 | 2010-08-25 16:15
其他回答(4)
0

Castle与Spring.Net在用法和配置上的区别 用法: Castle Castle通过使用Windsor容器,或者直接使用MicroKernel来管理应用中对象的连接: IWindsorContainer container = new WindsorContainer(); container.AddComponent( "key1", typeof(IMyService), typeof(ServiceImpl) ); container.AddComponent( "key2", typeof(MyMailService) ); Spring.Net Spring.Net的世界以IObjectFactory为中心。你可以自己实现IObjectFactory也可以使用已经实现了的。但是,无论怎样,这一切都是围绕着XML来实现的。例如,你可能存在下面的代码,目的是从XML中获取应用中的对象的连接: Stream input = new FileStream ("objects.xml", FileMode.Open); XmlObjectFactory factory = new XmlObjectFactory(input); 对象连接处理: Castle认为使用XML配置文件配置对象连接的信息过于复杂和繁琐,因此Castle使用自动连接。但是,尽管Castle使用自动连接,并非表明Castle完全抛弃了XML配置文件。Castle把主要注意力放在对象连接的处理上,而XML配置文件则配置非对象的连接。例如下面的一个例子,Spring.NET和Castle的处理方式上大不相同: 例: public class ExampleObject { private AnotherObject myObjectOne; private YetAnotherObject myObjectTwo; private int i; public ExampleObject(AnotherObject anotherObject, YetAnotherObject yetAnotherObject, int i) { myObjectOne = anotherObject; myObjectTwo = yetAnotherObject; this.i = i; } } Spring.Net的处理: Sprint.Net用下面的XML配置文件来达到对象的连接。1 Castle的处理: 前面说了,Castle并没有放弃XML的配置文件,因此Castle的配置文件如下: 1 Castle的配置文件中并没有说明对象的连接,那么Castle如何处理呢?Castle通过Windsor处理:WindsorContainer container = new WindsorContainer( new XmlConfigurationStore("myfile.xml") ); container.AddComponent( "exampleObject", typeof(ExampleObject) ); container.AddComponent( "anotherExampleObject", typeof(AnotherObject) ); container.AddComponent( "yetAnotherObject", typeof(YetAnotherObject) ); 比较: Spring.Net需要在配置配置文件中详细的描述每一个对象对其他对象的依赖。而Castle则是通过Windsor容器自动处理对象之间的依赖关系。那么Castle需要配置文件作什么呢?上面我们可以看到Castle用配置文件配置了一个参数i,这个i恰好就是ExampleObject的构造函数的一个不存在对象依赖关系的参数的名称,所以,如果构造函数的参数不是i,而是其它的,例如smtpPort,那么参数的Tag名称也就是smtpPort。从上面的例子可以看出,Castle认为Spring.Net的XML配置文件过于复杂,在对象依赖关系复杂,对象多,开发人员人数多的情况下,XML配置文件会带来不必要的麻烦和不可预料的错误。因此,Castle根据对象的依赖关系,自动连接对象,不需要XML的描述,所以,为了符合构造注入和属性注入,Castle的配置文件没有像Spring.Net那样区分构造函数还是其他的方法,同时,直接使用Parameters,而不是使用构造函数参数之类的区分。 

 

http://www.cnblogs.com/jiamu/archive/2007/11/18/963348.html

收获园豆:2
jowo | 园豆:2834 (老鸟四级) | 2010-08-25 13:48
0

百度知道哦。

收获园豆:1
Astar | 园豆:40805 (高人七级) | 2010-08-25 14:26
谢谢!百度搜索了,并没有找到我想要的答案。
支持(0) 反对(0) 深潭 | 园豆:187 (初学一级) | 2010-08-25 20:26
0


你可以试试看ms unity

收获园豆:1
浪客Dandy | 园豆:479 (菜鸟二级) | 2010-08-25 16:35
0

ZHUANJIA

jasen.kin | 园豆:248 (菜鸟二级) | 2010-08-30 12:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册