底层架构的搭建
2015-06-29 22:01
471 查看
ITOO3.0服务端框架
WCF->B层->D层->Model(EF)
WCF的结构实现,接口(这里指所谓的契约),svc
当我们通过右键新建一个wcf服务的时候,,我们可以看到现有项目中同时增加了三个文件如下图,IService中定义的是我们常用的契约,
Service1.svc.cs定义的是契约的实现,
Service1.svc中定义的是服务的位置。
右击Service.svc,选择打开方式中的带编码的web服务器编辑器。可以看到
codeBehind定义的实现位置
我们将IService放到另一个项目中,将实现分离处理,就得到了我们见到的服务端的WCF。
接下来,我们谈谈,WCF层,调用B层,B层调用D层,中的调用机制的改变。
上一层调用下一层的时候必须声明下一层的具体对象,我们之前采用的方法是利用工厂+反射,现在利用的是AOP池+反射。相比之前简单了很多。
B层: publicclass BaseService<T>:CoreBaseService<T> where T:class,new()
这句话的意思是泛型,泛型必须是一个类,而且必须具有构造函数。
(B层和D层都利用了大量的泛型来写具体的类)
WCF调用B层:通过AOP池+反射,成功声明B层具体的对象,然后进行方法调用。
ITeacherBll teacherBll =SpringHelper.GetObject<ITeacherBll>("TeacherBll");
B层调用D层的方法,底层框架的更新,使得我们可以不用利用工厂声明具体的D层的类了,
通过配置文件获得dbsession中定义的dbsession类,
为每个B层实现类,声明具体的D层对象获得dbSession类中已定义的类
调用D层具体对象的方法。
D层并没有具体的实现方法,而是使用已有的EF中的方法。
说说我们的web.config文件中是怎样使得SpringHelper.GetObject<ITeacherBll>("TeacherBll")成功声明对象的。
<spring>
<context>
<resourceuri="config://spring/objects"/>
</context>
<objectsxmlns="http://www.springframework.net">
<!--Model层的注解-->
<object id="ITOOHREntities"type="ITOO.BasicHR.Model.ITOOHREntities,ITOO.BasicHR.Model"singleton="false"></object>
<!--DbSession层的注解-->
<object id="DBSession"type="ITOO.BasicHR.DAL.DbSession,ITOO.BasicHR.DAL"singleton="false">
<!--加入属性注入,指向D层的注入-->
<propertyname="TeacherDal" ref="TeacherDal"/>
<property name="JobDal"ref="JobDal"/>
<property name="TitleDal"ref="TitleDal"/>
</object>
<!--D层的注解-->
<object id="TeacherDal"type="ITOO.BasicHR.DAL.TeacherDal,ITOO.BasicHR.DAL" singleton="false"/>
<object id="JobDal"type="ITOO.BasicHR.DAL.JobDal,ITOO.BasicHR.DAL" singleton="false"/>
<object id="TitleDal"type="ITOO.BasicHR.DAL.TitleDal,ITOO.BasicHR.DAL" singleton="false"/>
<!--D层的注解-->
<!--B层的注解-->
<object id="TeacherBll"type="ITOO.BasicHR.BLL.TeacherBll,ITOO.BasicHR.BLL" singleton="false"/>
<object id="JobBll"type="ITOO.BasicHR.BLL.JobBll,ITOO.BasicHR.BLL" singleton="false"/>
<object id="TitleBll"type="ITOO.BasicHR.BLL.TitleBll,ITOO.BasicHR.BLL" singleton="false"/>
<!--B层的注解-->
</objects>
</spring>
type定义类型(连上命名空间)和程序集(也就是dll)
框架搭起来后,总感觉,B,D,WCF层都空空的,只有我们不知道的EF层很充实。
WCF->B层->D层->Model(EF)
WCF的结构实现,接口(这里指所谓的契约),svc
当我们通过右键新建一个wcf服务的时候,,我们可以看到现有项目中同时增加了三个文件如下图,IService中定义的是我们常用的契约,
Service1.svc.cs定义的是契约的实现,
Service1.svc中定义的是服务的位置。
右击Service.svc,选择打开方式中的带编码的web服务器编辑器。可以看到
codeBehind定义的实现位置
我们将IService放到另一个项目中,将实现分离处理,就得到了我们见到的服务端的WCF。
接下来,我们谈谈,WCF层,调用B层,B层调用D层,中的调用机制的改变。
上一层调用下一层的时候必须声明下一层的具体对象,我们之前采用的方法是利用工厂+反射,现在利用的是AOP池+反射。相比之前简单了很多。
B层: publicclass BaseService<T>:CoreBaseService<T> where T:class,new()
这句话的意思是泛型,泛型必须是一个类,而且必须具有构造函数。
(B层和D层都利用了大量的泛型来写具体的类)
WCF调用B层:通过AOP池+反射,成功声明B层具体的对象,然后进行方法调用。
ITeacherBll teacherBll =SpringHelper.GetObject<ITeacherBll>("TeacherBll");
B层调用D层的方法,底层框架的更新,使得我们可以不用利用工厂声明具体的D层的类了,
通过配置文件获得dbsession中定义的dbsession类,
为每个B层实现类,声明具体的D层对象获得dbSession类中已定义的类
调用D层具体对象的方法。
D层并没有具体的实现方法,而是使用已有的EF中的方法。
说说我们的web.config文件中是怎样使得SpringHelper.GetObject<ITeacherBll>("TeacherBll")成功声明对象的。
<spring>
<context>
<resourceuri="config://spring/objects"/>
</context>
<objectsxmlns="http://www.springframework.net">
<!--Model层的注解-->
<object id="ITOOHREntities"type="ITOO.BasicHR.Model.ITOOHREntities,ITOO.BasicHR.Model"singleton="false"></object>
<!--DbSession层的注解-->
<object id="DBSession"type="ITOO.BasicHR.DAL.DbSession,ITOO.BasicHR.DAL"singleton="false">
<!--加入属性注入,指向D层的注入-->
<propertyname="TeacherDal" ref="TeacherDal"/>
<property name="JobDal"ref="JobDal"/>
<property name="TitleDal"ref="TitleDal"/>
</object>
<!--D层的注解-->
<object id="TeacherDal"type="ITOO.BasicHR.DAL.TeacherDal,ITOO.BasicHR.DAL" singleton="false"/>
<object id="JobDal"type="ITOO.BasicHR.DAL.JobDal,ITOO.BasicHR.DAL" singleton="false"/>
<object id="TitleDal"type="ITOO.BasicHR.DAL.TitleDal,ITOO.BasicHR.DAL" singleton="false"/>
<!--D层的注解-->
<!--B层的注解-->
<object id="TeacherBll"type="ITOO.BasicHR.BLL.TeacherBll,ITOO.BasicHR.BLL" singleton="false"/>
<object id="JobBll"type="ITOO.BasicHR.BLL.JobBll,ITOO.BasicHR.BLL" singleton="false"/>
<object id="TitleBll"type="ITOO.BasicHR.BLL.TitleBll,ITOO.BasicHR.BLL" singleton="false"/>
<!--B层的注解-->
</objects>
</spring>
type定义类型(连上命名空间)和程序集(也就是dll)
框架搭起来后,总感觉,B,D,WCF层都空空的,只有我们不知道的EF层很充实。
相关文章推荐
- 架构纵横谈之二 ---- 架构的模式与要点
- BS项目中的CSS架构_仅加载自己需要的CSS
- 插件管理框架 for Delphi(一)
- 关于三种主流WEB架构的思考
- 使用CSS框架布局的缺点和优点小结
- Android操作系统的架构设计分析
- Windows窗体的.Net框架绘图技术实现方法
- 浅谈JavaScript 框架分类
- JS刷新框架外页面七种实现代码
- w3c技术架构介绍
- linux学习笔记 linux目录架构
- asp.net4.0框架下验证机制失效的原因及处理办法
- 插件管理框架 for Delphi(二)
- 零基础学习AJAX之AJAX框架
- Ajax 框架学习笔记
- Flex中最好的MVC框架Mate框架
- JavaScript 异步调用框架 (Part 4 - 链式调用)
- JavaScript 异步调用框架 (Part 2 - 用例设计)
- 为什么使用框架 使用框架的优缺点
- JavaScript 异步调用框架 (Part 3 - 代码实现)