SQLCenter和IoC模式
在学习SQLCenter的时候,对老大说的Generators设计中用到了默认代理模式和Ioc模式有点问题。刚才晚上又重新看了下,哈哈,有点醍醐灌顶的感觉。确实如此。下面写写自己的体会。
默认代理模式就不多说了。主要看Ioc的体现,因为最近我正在学习Spring.Net,所以对Ioc,AOP这样的字眼特别敏感。
关于Ioc,园子里面有太多的好文章。我简单描述我的感觉,同时联系下SQLCenter.
Ioc的出现,是为了解耦。使类或组件尽可能的“不和陌生人说话”。但是他们又必须有这样的联系,怎么办呢?这就出现了Ioc容器。通过这样的容器来管理这些组件之间的联系。这样的容器在.Net下有Spring.Net,Castle,java下还有PicoContainer,Hiemind,XWork等。在Ioc中这些framework成了主程序的角色,负责协调事件和应用的活动,还有生命周期等。
在SqlCenter中GeneratorService在一定程度上扮演了这样一个角色。它通过配置文件获得组件之间的关系,负责创建和调度。当然目前还没有全部完成这样一个容器的功能,但是思想上已经充分体现了Ioc模式。
看下部分配置:
配置信息
然后主要通过这个NativeGetCalculator方法实现了容器的基本功能:
简单容器
通过这样的实现,就能够实现组件的“热插拔”和组件关系的容器管理。
今天终于调试通过了自己的基于Spring.Net的一个简单demo.再回头看看SQLCenter,我对自己说:这就是Ioc精神!
对了,还有一个需要注意的。当然这个注意点很小,也许是因为我对配置写程序的不熟悉。调试自己demo的时候,总是有问题。最后在老大的指导下,才发现原来是对这个配置的错误理解:
<item target="SqlCenter.Entities.FromTable, SqlCenter.Entities" type="default" generator="SqlCenter.Generators.FromTableGenerator, SqlCenter.Generators"/>
这里面的generator怎么写? ====> NameSpace.ClassName, Assembly
默认代理模式就不多说了。主要看Ioc的体现,因为最近我正在学习Spring.Net,所以对Ioc,AOP这样的字眼特别敏感。
关于Ioc,园子里面有太多的好文章。我简单描述我的感觉,同时联系下SQLCenter.
Ioc的出现,是为了解耦。使类或组件尽可能的“不和陌生人说话”。但是他们又必须有这样的联系,怎么办呢?这就出现了Ioc容器。通过这样的容器来管理这些组件之间的联系。这样的容器在.Net下有Spring.Net,Castle,java下还有PicoContainer,Hiemind,XWork等。在Ioc中这些framework成了主程序的角色,负责协调事件和应用的活动,还有生命周期等。
在SqlCenter中GeneratorService在一定程度上扮演了这样一个角色。它通过配置文件获得组件之间的关系,负责创建和调度。当然目前还没有全部完成这样一个容器的功能,但是思想上已经充分体现了Ioc模式。
看下部分配置:
![](/Images/OutliningIndicators/ContractedBlock.gif)
然后主要通过这个NativeGetCalculator方法实现了容器的基本功能:
![](/Images/OutliningIndicators/ContractedBlock.gif)
通过这样的实现,就能够实现组件的“热插拔”和组件关系的容器管理。
今天终于调试通过了自己的基于Spring.Net的一个简单demo.再回头看看SQLCenter,我对自己说:这就是Ioc精神!
对了,还有一个需要注意的。当然这个注意点很小,也许是因为我对配置写程序的不熟悉。调试自己demo的时候,总是有问题。最后在老大的指导下,才发现原来是对这个配置的错误理解:
<item target="SqlCenter.Entities.FromTable, SqlCenter.Entities" type="default" generator="SqlCenter.Generators.FromTableGenerator, SqlCenter.Generators"/>
这里面的generator怎么写? ====> NameSpace.ClassName, Assembly
posted on 2006-10-18 21:38 flyingchen 阅读(1359) 评论(2) 编辑 收藏 举报