2007-7-17 13:17:06
基于DotNet开发WebService应用的快速开发框架
WebService是在DotNet开发中常用的分布式开发技术.但是如何提高分布式系统的开发效率是我们经常要考虑的问题.因此改框架第一考虑点是整个开发的效率问题,第二点是重点考虑系统需要的一些扩展性.整个系统开发框架如下图描述.
整个框架中大量使用CodeDom技术来生成需要的各层数据访问组件.同时整套框架基于存储过程的使用(一些业务逻辑也可以放在存储过程中),所有的sql全部在存储过程中,整个框架不提供O/R
Mapping的相关功能.具体整个框架中动态生成的组件有:
1.RAD.PUB.SqlDataAccess.dll SqlServer的数据访问组件
2.RAD.PUB.IDataAccess.dll 数据访问接口
3.RAD.PUB.WebService.dll 提供Web服务的组件
4.RAD.PUB.WebServiceClient.dll 客户端的调用接口组件
5.RAD.PUB.DataEntity.dll 数据实体组件,类型化数据集
对于数据访问层,主要是对数据库的存储过程进行逆向生成数据访问组件,为了支持多数据库,抽象出IDataAccess数据访问接口组件,实现动态的反射调用.为了提供统一的数据访问接口方法,需要通过一个配置文件的配置来生成数据访问组件,如在配置文件中可以配置生成哪些数据访问类,每一个类中包含哪些存储过程,这些存储过程将生成类中的方法.
数据配置文件中支持自定义实体的配置和定义,自定义实体类似于Duwamish7.0的例子中的实体,每一个实体可以包含多张数据库表,每张数据库表都需要单独配置跟其对应的查询,更新,删除和插入存储过程.配置完成后将生成一个数据实体类,该类中仅包含了SaveInfo和LoadInfo两个方法.LoadInfo返回包含了多个DataTable的DataSet数据.这个数据完全是离线的数据,当我们在前台修改后,调用SaveInfo(dsChange)来保存修改.支持自定义实体是该数据层的最大特色,当定义了数据实体后,除了生成Load和Save方法外,数据实体的Schema信息还会生成到RAD.PUB.DataEntity.dll组件中,形成类型化数据集,以方便在客户端进行可视化设计.
数据层组件生成后,会生成WebService层组件,WebService层组件将数据层组件和方法暴露为WebMethod方法,生成的WebService层组件可以直接发布为虚拟目录而直接形成远程服务代理.这样整个分布式框架的服务器端就全部生成完毕了.我们对于服务器端不需要做任何处理,只需要直接部署为虚拟目录即可.
手工开发WebService应用的时候需要在客户端手工添加WebSerivce引用,形成专门的服务代理层.而这一层在整个框架中也可以通过组件来自动生成.生成原理式首先通过调用wsdl.exe工具生成web引用类,然后再和和工具生成的客户端访问类一起进行编译生成RAD.PUB.WebServiceClient.dll客户端调用组件.在整个WebService和WebServiceClient生成中引入了WSE来实现web
service访问的安全性.
另外对于客户端WinMain和CommonUitl项目都是公用的项目,在具体模块开发中一般也不会涉及到公用项目的修改.因此对于分布式系统的开发完全简化为了对WinUI1,WinUI2,WinUI3等各个子系统单独建立的项目文件的开发,在这些项目中直接添加对WebServiceClient,DataEntity,CommonUtil等几个dll的引用即可.在CommonUtil中封装了公用组件,公用类,客户端缓存管理,异常和日志管理等基础的功能.
0
推荐到鲜果:




评论