当前位置: 首页 > news >正文

做兼职的网站都有哪些企业管理培训课程网课

做兼职的网站都有哪些,企业管理培训课程网课,怎么做系统网站,外卖网站怎么做我本人对于Spring.NET并不了解,本文只是通过一个简单的例子来比较一下两者配置之间的区别。在Castle IOC容器中,提出了自动装配(Auto-Wiring)的概念,即由容器自动管理组件之间的依赖关系,我们无需自己编写X…

我本人对于Spring.NET并不了解,本文只是通过一个简单的例子来比较一下两者配置之间的区别。在Castle IOC容器中,提出了自动装配(Auto-Wiring)的概念,即由容器自动管理组件之间的依赖关系,我们无需自己编写XML配置文件来配置组件之间的依赖关系。在Spring.NET中也是支持自动装配的,但是并不推荐使用,它贯穿着一种思想就是一切皆为XML配置,这是两者之间最大的一个区别。

关于自动装配,来自于Spring.NET的支持者认为让容器自动管理,会让我们无法控制组件的依赖关系,如果该为XML配置,可以让我们知道自己在做什么,我们指定了哪些依赖关系,方便进行控制和管理;而来自于Castle IOC的支持者认为如果不让容器自动管理,手工配置会变得非常之复杂,配置文件也会变得非常繁冗,如果系统中的组件非常之多的时候,管理工作会变得很困难。

我们来看一个简单的例子,有这样一个组件MyMainComponent,它依赖于MyComponent1MyComponent2,并且它在构造函数中还需要接收一个整型的参数。

None.gif//出处:http://terrylee.cnblogs.com
None.gif

None.gif
public class MyMainComponent
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    MyComponent1 _com1;
InBlock.gif
InBlock.gif    MyComponent2 _com2;
InBlock.gif
InBlock.gif    
int _i;
InBlock.gif
InBlock.gif    
public MyMainComponent(MyComponent1 com1,MyComponent2 com2,int i)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
this._com1 = com1;
InBlock.gif
InBlock.gif        
this._com2 = com2;
InBlock.gif
InBlock.gif        
this._i = i;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
None.gif
public class MyComponent1
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
public MyComponent1()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//dot.gifdot.gif
ExpandedSubBlockEnd.gif
    }

ExpandedBlockEnd.gif}

None.gif
None.gif
public class MyComponent2
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
public MyComponent2()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//dot.gifdot.gif
ExpandedSubBlockEnd.gif
    }

ExpandedBlockEnd.gif}


如果用采用Spring.NET,它采用XML进行组件之间的连接,配置文件如下,需要在配置文件中指定每一个对象及其它们之间的依赖,同时在配置文件中区分是构造函数还是其他方法:

None.gif<!--出处:http://terrylee.cnblogs.com-->
None.gif
None.gif
<?xml version="1.0" encoding="utf-8" ?>
None.gif
None.gif
<configuration>
None.gif
None.gif    
<object id="myManComponent" class="CastleDemo.MyMainComponent, CastleDemo">
None.gif
None.gif        
<constructor-arg>
None.gif
None.gif            
<ref object="mycomponent1" />
None.gif
None.gif        
</constructor-arg>
None.gif
None.gif        
<constructor-arg>
None.gif
None.gif            
<ref object="mycomponent2" />
None.gif
None.gif        
</constructor-arg>
None.gif
None.gif        
<constructor-arg>
None.gif
None.gif            
<value>1</value>
None.gif
None.gif        
</constructor-arg>
None.gif
None.gif    
</object>
None.gif
None.gif    
<object id="mycomponent1" class="CastleDemo.MyComponent1, CastleDemo" />
None.gif
None.gif    
<object id="mycomponent2" class="CastleDemo.MyComponent2, CastleDemo" />
None.gif
None.gif
</configuration>


Castle IOC中同样需要配置文件,但相比之下,就简单了很多:

None.gif<!--出处:http://terrylee.cnblogs.com-->
None.gif
None.gif
<?xml version="1.0" encoding="utf-8" ?>
None.gif
None.gif
<configuration>
None.gif
None.gif    
<components>
None.gif
None.gif        
<component id="myMainComponent">
None.gif
None.gif            
<parameters>
None.gif
None.gif                
<i>1</i>
None.gif
None.gif            
</parameters>
None.gif
None.gif        
</component>
None.gif
None.gif    
</components>
None.gif
None.gif
</configuration>


Castle IOC中的配置并不需要指定组件之间的关联,它会自动通过Windsor来处理;我们只是配置了一个参数i,这个iMyMainComponent中的构造函数中不存在依赖关系的那个参数。

None.gif//出处:http://terrylee.cnblogs.com
None.gif

None.gif
public class App
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
public static void Main()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        IWindsorContainer container 
= new WindsorContainer(new XmlInterpreter("../../BasicUsage.xml") );
InBlock.gif
InBlock.gif        container.AddComponent( 
"myMainComponent"
InBlock.gif
InBlock.gif            
typeof(MyMainComponent));
InBlock.gif
InBlock.gif        container.AddComponent( 
"myComponent1"
InBlock.gif
InBlock.gif            
typeof(MyComponent1));
InBlock.gif
InBlock.gif        container.AddComponent( 
"myComponent2"
InBlock.gif
InBlock.gif            
typeof(MyComponent2));          
InBlock.gif
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

这样添加组件后,

WindsorContainer会自动调用MicroKernel中的ConstructorDependenciesModelInspector来处理组件的构造函数依赖。

通过上面的这个简单例子比较可以看出,如果我们想要增加一个组件之间的依赖关系或者增加一个组件使用Castle要比使用Spring.NET容易很多,Spring.NET复杂的配置文件会给我们开发带来很来不可预料的错误;Castle根据对象的依赖关系,采用自动装配,不需要配置组件的依赖,另外为了符合构造注入和属性注入,Castle的配置文件并没有像Spring.Net那样区分构造函数还是其他的方法,同时直接使用Parameters,而不是使用构造函数参数之类的区分。

 

参考资料

Castle的官方网站http://www.castleproject.org

转载于:https://www.cnblogs.com/Terrylee/archive/2006/04/25/384149.html

http://www.lbrq.cn/news/2671291.html

相关文章:

  • 高端网站建设天软科技关键词优化按天计费
  • 银川住房和城乡建设部网站济南网站优化排名推广
  • 哪些做任务可以赚钱的网站网站怎么推广
  • 网站空间香港今天的重要新闻
  • 祥云网站建设百度关键词排名怎么做
  • 在网上找做设计是什么网站企业网站排名优化公司
  • 怎么买域名建网站广告位招商怎么找客户
  • 番禺市桥网站建设太原网站优化
  • 90设计网站终身会员网站排名优化快速
  • 动感十足的网站东莞网络推广公司
  • 任县网站建设网络公司深圳网站优化推广方案
  • 2021年十大购物网站排名win7优化教程
  • 番禺网站开发技术网络推广方法怎么做
  • 做彩票网站需要什么济南网站建设哪家好
  • 新加坡网站开发公司百度公司排名
  • 怎样用jsp做网站惠州seo关键字排名
  • 建设商城网站的网站出售
  • wordpress常见插件seo推广排名软件
  • 绵阳网络公司网站建设百度网盘会员
  • 夸克作文网站站长工具seo优化
  • 网站建设维护面试专业seo外包
  • 开发运营一个app要多少钱网站seo排名优化工具在线
  • 点网站出图片怎么做优化网站排名需要多少钱
  • wordpress博客申请seo代理
  • 工作室起名大全免费取名广州seo技术优化网站seo
  • 通化县住房和城乡建设局网站各大引擎搜索入口
  • 中国建设银行网站网上银行青岛谷歌推广
  • iis 5 如何添加网站seo网络推广经理
  • 免费网站开发公司郑州网络营销策划
  • 教育网站制作定制网络营销的概念与含义
  • 面试实战 问题二十三 如何判断索引是否生效,什么样的sql会导致索引失效
  • 服务器配置实战:从 “密码锁” 到 “分工协作” 的知识点详解
  • 缓存的三大问题分析与解决
  • 【递归、搜索与回溯算法】递归算法
  • 【排序算法】④堆排序
  • Kotlin反射详解