Winform开发框架之混合型框架的实现

简介:

我在之前一篇文章《Winform开发框架之框架演化》中,介绍了传统Winform开发框架、传统WCF开发框架、离线式WCF开发框架、混合式WCF开发框架,其中前面两种就是大家比较熟悉的框架了,后面的离线式WCF开发框架,我在《Winform开发之离线式WCF开发框架的实现介绍》一文中也做了阐述,离线式的WCF开发框架,可以看做为传统Winform开发框架+WCF同步模块而成,本文继续探讨这方面的框架设计和实现,重点介绍混合式WCF开发框架的设计思路及具体实现。

Winform开发框架之混合型框架,可以看成是传统winform开发框架和WCF开发框架之间能自由切换的一种双重框架,这种框架的特点是,就是把系统划分为很多万能模块(既适应WInform集成,也适应WCF集成),在不同的场合进行不同的切换,而且只需通过配置参数的变化就可以实现的跳转,这样非常有利于模块的集成封装。

1、混合型框架的特点

混合型框架具有下面几个特点:

   1)环境适应性强,模块可重用性高。由于混合型框架,既可以用于传统Winform系统开发,也可以用于WCF分布式系统开发,因此环境适应性强;而且由于模块具有这些特点,可重用性更高,特别对于通用性的模块,更是具有无可替代的优越性。

   2)响应性能更好。如果是Winform程序,那么就使用直接访问数据库方式,如果是WCF调用方式,就使用WCF的专有通道进行数据处理,更好利用系统资源,高效进行数据处理。

   3)独立配置,更少的代码修改。所有通用模块,全部通过独立配置文件进行配置WCF的连接,减少主配置文件的复杂性;WCF服务逻辑独立类库,可采用多种服务寄宿方式。

2、混合型框架总体设计思路

Winform开发框架之混合型框架,还是秉承模块化的思路,可以把这个框架分为两大块,一块是主要业务系统模块(如备件管理系统),一块是各种辅助性模块(如通用权限、通用字典、通用附件管理、通用人员管理。。。。),这种两块组合,就是一个完美的系统了。

从以上图可以看到,整个系统的业务系统模块和辅助性模块,都是基于一个思路,通过接口调用开关,决定调用的是WCF服务层,还是Winform业务层(直接访问数据库),当然界面层的调用不管是调用WCF服务层还是Winform业务层,都是基于相同的接口,我们可以把它称为Facade层。辅助性模块则是多种常用模块的组合,他们可能是下面几种的常见模块:通用权限模块、通用字典模块、通用附件管理模块、通用人员管理模块等等。

 

3、混合型框架具体实现

为了更具体化演绎混合型的Winform开发框架,下面我通过辅助性模块之一的通用字典模块进行介绍这个混合型框架的具体实现。字典模块的内部结构如下所示。

 

 上图的解读如下:

1)共用类库和实体类贯穿整个框架。

2)数据库通过泛型继承方式,实现更少的代码,更丰富的API实现。

3)多数据库支持,通过利用EnterpriseLibrary企业类库,支持多种数据库的集成处理。

4)内置Winform和WCF两种调用实现,通过配置文件,方便自由切换。

5)UI层通过接口调用层的工厂类,实现基于Facade的接口调用(而非具体实现类)。

6)共用UI层,UI层的界面在Winform和WCF调用方式下,均为一致,只有一个UI层。

7)各层均有相应的基类,更少的代码,更多的支持。

8)每个独立模块,构造整个框架的生态体系。

4、项目文件的组成

整个混合型框架的字典模块,按照上面的架构设计,会有不少项目工程产生,由于人的目标识别管理数目有限,因此就单个模块而言,不宜产生过多的项目DLL,否则集成会比较困难,也不适宜更好的维护。因此,基于最少DLL的原则,我设计了下面的模块目录,基本上,每个目录代表一个分层。

  

由于是上述框架也集成了基于WCF方式的调用方式,那么还需要创建一个WCF的字典服务,我们为了使得WCF支持更多种的寄宿方式,可以建立WCF服务库项目,如下所示这种项目。

创建了相应的分层和逻辑类后,具体的项目工程如下(部分文件由于多个项目中使用到,于是通过引用方式避免拷贝,又能集中管理,如Facade层的接口文件)。

当然还会有一个WCF服务的寄宿方式,这里通过IIS方式发布,如果必要也可以通过其他方式部署WCF服务,由于把逻辑隔离了,因此部署非常方便。

IIS部署方式的WCF服务工程如下所示。

 对于IIS方式的部署,其实基本上也是在svc文件中两行代码即可(注意这个SVC文件没有后台.cs文件)

当然,还有一种方式,只需要配置Web.Config,不需要增加svc文件,也能实现WCF服务的部署的哦。

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true">
      <serviceActivations>
        <add service="WHC.Dictionary.WCFLibrary.DictTypeService" relativeAddress="test.svc"/>
      </serviceActivations>
    </serviceHostingEnvironment>

以上就是我对于混合型开发框架的演绎过程,整个框架目前已近全部完成,包括完成了通用权限管理系统模块,通用字典模块,通用附件管理模块,通用人员管理模块等这些外围通用的模块,因此框架的设计是进过实践验证过的,这样的混合型框架,非常适合用于重用性非常高的项目场景中,相比其他类型的框架,更具有高附加值,高可用性的特点。

希望通过我的混合型的框架设计思路和实现逻辑等方面的介绍,抛砖引玉,能和大家做更深的沟通和分析。 

本文转自博客园伍华聪的博客,原文链接:Winform开发框架之混合型框架的实现,如需转载请自行联系原博主。



目录
相关文章
|
前端开发 jenkins 测试技术
自动化测试介绍,为何 Apifox 是进行自动化测试的最佳工具
自动化测试利用专用软件执行测试用例,比手动测试更高效准确。Apifox是一款集API文档、调试与自动化测试于一体的工具,提供一体化解决方案,简化API变更管理。其强大的测试功能支持丰富的断言及测试场景组合,便于模拟真实业务流程。Apifox还提供详尽的测试报告与分析功能,有助于快速定位问题。此外,它能轻松集成到CI/CD流程中,并支持定时任务及多分支管理,极大提升了测试效率和团队协作。相较于其他工具,Apifox以其全面的功能和友好的界面脱颖而出。
|
9月前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
248 5
Java 并发编程——volatile 关键字解析
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(1)
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(1)
|
9月前
|
开发者
阿里云开发者社区入选 2024 中国技术品牌影响力企业榜
阿里云开发者社区入选 2024 中国技术品牌影响力企业榜。
深度解析:短信号码都有那些?他们之间有什么区别?
您的手机上常见的短信号码都有哪些呢,他们直接有什么区别呢,本文将带您一起学习了解哦。
深度解析:短信号码都有那些?他们之间有什么区别?
153Echarts - 旭日图(Sunburst VisualMap)
153Echarts - 旭日图(Sunburst VisualMap)
178 0
|
Web App开发 Android开发 iOS开发
阿里云无影APP客户端下载_无影云电脑下载
阿里云无影APP客户端下载_无影云电脑下载,阿里云无影云电脑APP下载链接入口,支持iOS、Android、Windows、macOS和Web客户端,阿里云百科分享阿里云无影云电脑APP下载链接
1842 0
|
移动开发 小程序 安全
DingTalk「开发者说」钉钉酷应用&斗栱云:赋能产品创新,加速企业数字化
酷应用概念问世后,斗拱云如获至宝。工程行业的数据大多来自于一线人员,用户平时既要在现场进行管理,又要在沟通中确认各种事项,还要登录不同的软件,录入数据。而酷应用的理念很好地解决了协同和数据的打通问题,工作沟通和业务数据实现一体化,不再分离,让系统真正实现数字化。
2369 0
DingTalk「开发者说」钉钉酷应用&斗栱云:赋能产品创新,加速企业数字化
|
网络协议 Ubuntu Linux
一键安装最新内核并开启 BBR 脚本
1、本脚本已在 [**蓝易云**](https://www.tsyvps.com/) 上的 VPS 全部测试通过。 2、当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。 3、脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。 4、由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。
689 0
|
存储 Oracle NoSQL
阿里云服务器ESSD系统盘性能级别PL0、PL1、PL2和PL3详解
阿里云服务器ESSD云盘性能级别PL0、PL1、PL2和PL3,性能级别PL不同云盘容量、单盘最大IOPS、吞吐量及使用业务场景也不同,阿里云百科分享ESSD云盘性能级别PL详解
1338 0
阿里云服务器ESSD系统盘性能级别PL0、PL1、PL2和PL3详解

热门文章

最新文章