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开发框架之混合型框架的实现,如需转载请自行联系原博主。

时间: 2024-10-22 19:29:58

Winform开发框架之混合型框架的实现的相关文章

Winform开发框架之客户关系管理系统(CRM)的开发总结系列2-基于框架的开发过程

在上篇随笔<Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示>中介绍了我的整个CRM系统的概貌,本篇继续本系列的文章,介绍如何基于我的<winform开发框架>的基础上进行CRM系统模块的开发工作,希望对大家在系统模块开发有所启示或者帮助. 在我整个开发框架的体系结构中,我都希望开发的业务模块尽可能重用,因此遵循这个要求,所有的模块除了一些基础模块外,尽可能和其他业务模块没有任何耦合关系,同时也可以动态对模块进行加载使用,和我在<Winform

Winform开发框架之插件化应用框架实现

支持插件化应用的开发框架能给程序带来无穷的生命力,也是目前很多系统.程序追求的重要方向之一,插件化的模块,在遵循一定的接口标准的基础上,可以实现快速集成,也就是所谓的热插拔操作,可以无限对已经开发好系统进行扩展,而且不会影响已有的功能,不在需要的模块,通过修改配置移除即可.我的Winform开发框架一直以来,来源于多年的项目积累以及客户的反馈,已经具备了众多很好的特性以及相关的模块组合,为了更好拥抱变化,提高基于Winform开发框架基础上开发新系统的效率,以及为框架融入更多好的特性,故此把我的

Winform开发框架之框架演化

国庆去了一趟北京,回来一直忙着各种各样的事情,有公司的,有个人的,就没停过来,所以很久没有写博客了,写博客要有一个好的心情及一个好的思路,否则宁愿不写,这是我的准则.虽然这段时间没有写博客分享各种经验,不过一直还在做一些框架相关的事情,很多东西沉淀下来,慢慢有空就继续分享,与大家做一些探讨研究了. Winform开发框架方面的文章我介绍很多了,有宏观介绍,也有部分技术细节的交流,每次我希望能从不同角度,不同方面来介绍我的WInform开发框架,这些其实都是来源于客户的需求,真实的项目场景.本文主

Winform开发框架重构总结

最近一直致力于Winform开发框架的重构工作,因为发现要维护传统Winform开发框架.WCF开发框架.混合式开发框架,以及相关的模块,包括权限管理.字典管理模块.附件管理.人员管理等一些辅助模块,很多代码都会有重复的部分,优化的框架是想提高效率,减少冗余重复代码,本文总结Winform开发框架重构工作中的一些经验总结,以飨读者,希望能够对大家有一定的参考作用. 1.公用类库的分离处理 我的公用类库是自己开发这么多年的总结.收集和整理,对大多数的类库均进行优化整理过,公用类库的本意是对.NET

Winform开发框架之权限管理系统改进经验总结(3)系统登录黑白名单的实现

在一般的权限系统里面,可能经常会看到系统的黑名单或者白名单的拦截功能.在一般权限系统里面 ,常见的黑名单就是禁止用户在某些IP上登录系统,白名单就是允许用户只在某些IP上登录系统.本随 笔主要介绍在我的权限系统里面,如何实现这个黑白名单的功能,以及介绍在其中应用到的IP对比操作 ,IP段判断等操作代码. 1.黑白名单的配置 要完成黑名单的拦截和白名单的放行,我们需要进行名单的配置操作,我们把相关的配置放到列表里 面进行展示,可以添加多个黑名单或者白名单,如下界面所示. 开发框架之权限管理系统改进

Winform开发框架之权限管理系统功能介绍

权限管理系统的重要特性总结: 1) 高度集成的权限系统.独立模块,能快速整合使用. 2) 符合权限的国际通用标准,基于RBAC(基于角色的访问控制)的角色权限控制. 3) 多数据库架构支 持,内置支持SqlServer.Oracle.MySql.SQLite.Access数据库. 4) 用户管理基于分级管理理念 ,集团分子公司.事业单位处室/局级可独立管理人员/角色等数据. 5) 用户接入的各种应用系统, 均可实现用户登陆日志.操作日志的记录. 6) 管理员可以控制登陆用户的黑白名单列表,实现严

Winform开发框架的业务对象统一调用方式

在这个纷繁的社会里面,统一性的特点能够带来很多高效的产出.牢固的记忆,这种特征无论对于企 业.个人的开发工作,知识的传承都有着非常重要的作用,Winfrom框架本身就是基于这个理念而生,从 统一的数据库设计规则开始,统一的项目格局,统一的业务类.数据访问类.实体类继承关系,再到统 一的公用类库,统一的权限管理模块,统一的字典管理模块,统一的附件管理...,理解这些理念和规则 后,再来个终极的统一,框架代码快速生成--Database2Sharp代码生成工具.所有的框架(包括传统 Winform开

Winform开发框架之权限管理系统改进的经验总结(5) 用户分级管理

在实际的系统应用环境中,用户的分级管理一般也是比较常见的功能,小的业务系统可以不需要,但 是一般涉及到集团.分子公司.或者是事业单位里面的各个处室或者某某局的人员管理,这些分级管理 就显得比较必要,否则单靠管理员来处理账号的事情,是比较麻烦一点的.分级管理就是让不同层次. 不同机构的人员实现一定的自治管理,如分公司的人员有专门的管理员,各地区的处室或者某某局实现 内部人员的创建.调整.角色分配等工作.本篇随笔主要介绍在我的权限系统中如何实现人员的分级管 理的,给大家提供相应的思路和样例参考. 1

Winform开发框架之权限管理系统改进的经验总结(4)

一行代码实现表操作日志记录 在前面介绍了几篇关于我的权限系统改进的一些经验总结,本篇继续这一系列主体,介绍如何一行代 码实现重要表的操作日志记录.我们知道,在很多业务系统里面,数据是很敏感的,特别对于一些增加 .修改.删除等关键的操作,如果能在框架层面的支持基础上,以最少的代码实现重要表的日志记录, 那么是一件非常值得庆贺的事情,也能够为我们客户的数据提供重要的日志跟踪,甚至是数据恢复的参 考. 1.数据访问层的对象继承关系 首先,为了减少重复代码的编写,合理的继承关系是必要的,我们需要在数据访