博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF开发框架形成之旅---终极WCF框架是什么样子的
阅读量:6364 次
发布时间:2019-06-23

本文共 1641 字,大约阅读时间需要 5 分钟。

前面几篇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框架中的WHC.WareHouseMis层是业务逻辑层,包含业务逻辑、数据访问层在内的整个模块,其中支持SQLServer数据库、Access数据库两种数据库访问,由于构造通过工厂方式,因此通过配置参数即可实现切换,当然扩展下即可实现更多的数据库接入。

另外本WCF框架提供两种常见的界面框架,一种是传统的界面框架(采用Weifenluo布局空间),一种采用DevExpress界面组件形成,均具有一定的代表性,WCF框架的界面层,虽然其获取数据的方式不同,但和Winform框架具备相同的功能,如数据分页,数据导入、数据导出、权限控制、字典管理等等。

 

下面的图示界面层工程项目展开的截图,我们可以看到,在Winform框架中独立的通用权限管理模块、通用字典管理模块,在这里做了一个整合,不再是独立应用的程序集模块,所谓合久必分,分久必合,就是这样的道理。其中红色部分就是字典和权限管理的控制界面模块,这里把它作为界面的一部分,方便服务层的统一部署,统一使用或者统一修改配置等。 另外绿色部分是界面层的基类,这个和Winform框架是一样的,都是为了达到统一、合理封装的目的。

 

我们来看看两种不同的界面效果,如下所示:

1)传统的界面布局效果如下所示。

 

2)基于漂亮的界面控件DevExpress的界面效果如下所示

 

3)由于WCF框架整合了字典模块和权限模块的界面,因此同时更新了界面效果,其中DevExpress界面效果的字典模块如下所示

 

4)其中DevExpess界面效果的权限控制模块如下所示 

 

另外包含的WCF框架模块自动更新模块,由于采用了图片的背景界面效果。Winform开发框架和WCF开发框架的效果一样,而且都是采用独立的自动更新模块,通过配置更新地址和配置文件即可实现,不再赘述。

 

本文主要介绍WCF开发框架的总体内容,不设计代码,这可能给一切代码至上的朋友有些失望,不过却可以作为给大家进行分布式部署应用的一个思路及参考,如果您有好的建议或者问题,希望大家一起沟通,共同进步。 

转载地址:http://zjama.baihongyu.com/

你可能感兴趣的文章
(转)postman中 form-data、x-www-form-urlencoded、raw、binary的区别
查看>>
js Date操作
查看>>
判断用户密码是否在警告期内(学习练习)
查看>>
sp_executesql的执行计划会被重用(转载)
查看>>
禅道项目管理软件插件开发
查看>>
Linux系统各发行版镜像下载
查看>>
JS获取键盘按下的键值event.keyCode,event.charCode,event.which的兼容性
查看>>
查看ORACLE 数据库及表信息
查看>>
腾讯、百度、阿里面试经验—(1) 腾讯面经
查看>>
Codeforces Round #374 (Div. 2) D. Maxim and Array 贪心
查看>>
HTML DOM 教程Part1
查看>>
GBDT的基本原理
查看>>
MySQL修改root密码的多种方法(转)
查看>>
MongoDB 基础命令——数据库表的增删改查——遍历操作表中的记录
查看>>
.NET Core 跨平台发布(dotnet publish)
查看>>
Activity入门(一)
查看>>
CentOS下如何从vi编辑器插入模式退出到命令模式
查看>>
Mysql索引的类型
查看>>
Eclipse debug模式 总是进入processWorkerExit
查看>>
Nginx的https配置记录以及http强制跳转到https的方法梳理
查看>>