前面几篇WCF框架的文章,一直是介绍我的WCF框架的形成中的知识,期间虽然我在工作项目中已经成功运用各种WCF的概念及特性,而且是多个部门之间的数据管理系统,基本上WCF框架的雏形已经形成了,不过我一直想把我成熟的Winform开发框架,提炼整合到WCF框架上,这样在成熟的Winform框架基础上应用的WCF技术,才是我整个WCF开发框架的终极形式,虽然项目时间很紧,但业余空闲时间我一直未曾停步,前阵子通宵达旦完成,并经过多番测试,今天有幸和大家分享一下这个WCF框架的真面目及其中的一些经验总结。
整个终极的WCF框架和Winform一样,整合了权限控制管理、字典管理模块、公用类库、通用程序自动更新等模块,具备良好的界面布局和分布式服务应用的特点,支持数据分页、数据导入、Excel导出、支持多界面样式、支持闪屏、热键控制、多数据库支持,并且和代码生成工具Database2Sharp紧密结合等等特点,不一一尽数。
前面几篇介绍了WCF相关的开发知识,如果有兴趣可以浏览下:
基于Winform框架改造而成的WCF框架分层结构如下所示,首先我们在界面UI层和业务逻辑BLL层插入一层WCF服务层,界面层UI不再业务层BLL打交道,而是代之以WCF服务层的客户端代理类打交道,而WCF服务层则是BLL层更进一步的包装,设计图如下所示。
整个WCF框架的项目工程如下所示,其中展开的是服务层,把所有项目中涉及到的业务类,公布为WCF服务层,如果系统设计数据比较敏感,可以采用证书加密传输,或者通过其他加密方式,具体可以参考我的随笔《WCF开发框架形成之旅--如何实现X509证书加密》:
上图把数据合约类(或者实体类)放到一个独立的层,这个是无奈之举,因为我的业务类之间有一些公用的实体类信息需要传输,如果把他整合到服务层,那么就会发生命名冲突的问题,这样把数据合约类(或者实体类)独立成工程项目作为引用,就能够解决该问题。
本WCF框架中的WHC.WareHouseMis层是业务逻辑层,包含业务逻辑、数据访问层在内的整个模块,其中支持SQLServer数据库、Access数据库两种数据库访问,由于构造通过工厂方式,因此通过配置参数即可实现切换,当然扩展下即可实现更多的数据库接入。
另外本WCF框架提供两种常见的界面框架,一种是传统的界面框架(采用Weifenluo布局空间),一种采用DevExpress界面组件形成,均具有一定的代表性,WCF框架的界面层,虽然其获取数据的方式不同,但和Winform框架具备相同的功能,如数据分页,数据导入、数据导出、权限控制、字典管理等等。
下面的图示界面层工程项目展开的截图,我们可以看到,在Winform框架中独立的通用权限管理模块、通用字典管理模块,在这里做了一个整合,不再是独立应用的程序集模块,所谓合久必分,分久必合,就是这样的道理。其中红色部分就是字典和权限管理的控制界面模块,这里把它作为界面的一部分,方便服务层的统一部署,统一使用或者统一修改配置等。 另外绿色部分是界面层的基类,这个和Winform框架是一样的,都是为了达到统一、合理封装的目的。
我们来看看两种不同的界面效果,如下所示:
1)传统的界面布局效果如下所示。
2)基于漂亮的界面控件DevExpress的界面效果如下所示
3)由于WCF框架整合了字典模块和权限模块的界面,因此同时更新了界面效果,其中DevExpress界面效果的字典模块如下所示
4)其中DevExpess界面效果的权限控制模块如下所示
另外包含的WCF框架模块自动更新模块,由于采用了图片的背景界面效果。Winform开发框架和WCF开发框架的效果一样,而且都是采用独立的自动更新模块,通过配置更新地址和配置文件即可实现,不再赘述。
本文主要介绍WCF开发框架的总体内容,不设计代码,这可能给一切代码至上的朋友有些失望,不过却可以作为给大家进行分布式部署应用的一个思路及参考,如果您有好的建议或者问题,希望大家一起沟通,共同进步。