Winform开发框架之混合型框架的剖析

我在随笔《Winform开发框架之框架演化》和《Winform开发框架之混合型框架的实现》都对Winform框架的变种,混合型框架进行了比较详细的介绍,本文继续上篇对混合型框架进行进一步的说明。

成都创新互联成立与2013年,是专业互联网技术服务公司,拥有项目网站制作、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元贞丰做网站,已为上家服务,为贞丰各地企业和个人服务,联系电话:18980820575

1、框架的扇出介绍

混合型框架为了支持WCF方式和传统访问数据库方式两种对数据操作的方式,有两个地方有扇出操作,一个是在界面上调用接口对象获取数据的时候有扇出操作,为了实现WCF方式和传统访问数据库方式的处理,如下所示。当然,如果必要,也可以扩展成支持更多的类型,如可能存在旧系统的WebService调用方式等。

另外,整个框架支持Oracle、SqlServer、MySql、Sqlite、Access等数据库的访问操作,因此在业务层调用具体数据访问类的时候,根据配置的不同,具体构造的数据库访问对象也不同,因此,这里也有一个扇出操作,而且扇出数量和支持的数据库一致,如下所示。

2、混合型框架的辅助性模块集成

混合型框架可以看成是Winform框架高级版本,除了它本身是一个完整的业务系统外,它外围的所有辅助性模块均(如通用权限、通用字典、通用附件管理、通用人员管理。。。。)都实现了这种混合型的框架,因此使用非常方便,整个框架如果简化来看,就是在原有的Winform界面层,用接口调用方式,避免和业务逻辑类的紧耦合关系。由于他是通过接口方式的调用方式,它本身又可以通过配置指定指向WCF的实现,因此也囊括了WCF框架的一切特点。

3、混合型框架的项目及配置分离

说到WCF的访问方式,混合型框架把业务系统的WCF服务和辅助性公用模块的WCF服务分开,首先是服务分开,然后是客户端配置文件分开。

客户端配置文件分开,是通过把他们的服务配置信息分别用不同的文件表示,如辅助性模块的WCF配置文件为BaseWcfConfig.config,业务系统的WCF配置文件为WcfConfig.config,通过这样的分离设置,我们在主配置文件app.Config文件里面,就清爽很多了,如下所示。

 
 
 
 
  1.   
  2.   
  3.   
  4.   
  5.   
  6.   
  7.   
  8.   
  9.   
  10.   
  11.   
  12.   
  13.   

这样我们通过修改CallerType的内容(WCF或者WIN),就可以实现两种不同方式的访问了。

整个项目工程的布局,除了刚才介绍的WCF服务模块,其实还有很多其他模块的,如下面图所示,包括业务逻辑模块,服务接口调用模块,Winform界面模块、WCF服务逻辑模块,整个系统的模块就包含这些,当然外围的辅助性模块,如字典、权限、人员等等,他们各自按照这个方式进行组织处理,系统调用的时候,不会具体关心它们的调用逻辑,因为它们的调用方式已经通过约定的CallerType的内容进行了指定。

4、混合型框架的调用介绍

对于混合型框架,不管它的数据调用逻辑是按照传统的Winform方式,还是分布式的WCF服务调用方式,实现代码都是一样的,因为它是基于接口层调用,如下所示是在框架系统中调用数据字典模块获取数据的代码实现。

 
 
 
 
  1. /// 
  2. /// 根据字典类型获取对应的CListItem集合
  3. /// 
  4. /// 
  5. /// 
  6. public static CListItem[] GetDictByDictType(string dictTypeName)
  7. {
  8.     List itemList = new List();
  9.     Dictionary dict = WHC.Dictionary.UI.CallerFactory.Instance.GetDictByDictType(dictTypeName);
  10.     foreach (string key in dict.Keys)
  11.     {
  12.         itemList.Add(new CListItem(key, dict[key]));
  13.     }
  14.     return itemList.ToArray();
  15. }

系统框架调用自己的接口获取数据,模式也和上面一样,与传统的Winform框架调用代码相比,并没有增加任何工作流,只是调用对象有点变化而已。

 
 
 
 
  1. private void winGridViewPager1_OnDeleteSelected(object sender, EventArgs e)
  2. {
  3.     if (MessageDxUtil.ShowYesNoAndTips("您确定删除选定的记录么?") == DialogResult.No)
  4.     {
  5.         return;
  6.     }
  7.     int[] rowSelected = this.winGridViewPager1.GridView1.GetSelectedRows();
  8.     foreach (int iRow in rowSelected)
  9.     {
  10.         string ID = this.winGridViewPager1.GridView1.GetRowCellDisplayText(iRow, "ID");
  11.         CallerFactory.Instance.Delete(ID);
  12.     }
  13.     BindData();
  14. }

如果是传统的Winform框架,它的删除操作的核心调用代码是如下所示,是不是很相似的呢?

 
 
 
 
  1. BLLFactory.Instance.Delete(ID);

5、混合式框架的代码生成工具支持

当然,虽然混合型框架比传统的Winform框架和WCF开发框架更为通用,不过由于它引入了多一层,而且为了实现更多模块的分离,增加了一些设计上的复杂性,整个项目工程看起来显得复杂了一点,如下面就是一个以字典模块为例的混合型框架的内部结构。

为了实现更简单化的开发,更快更高效的完成混合型框架的开发工作,我扩展了我的代码生成工具Database2Sharp,使其支持这种混合型框架的代码生成工作,这样开发混合型框架就和开发其他两种Winform开发框架、WCF开发框架一样,非常方便了。

生成混合型框架项目的步骤就是在【EnterpriseLibrary代码生成】的***一步进行勾选设置即可。

代码生成工具,生成整体性的混合型框架项目如下所示,只是没有下图的界面部分,这部分在实际开发过程中,结合我的混合型框架案例进行整合即可,另外也可以界使用Database2Sharp进行Winform界面的开发,这样整体性就非常方便操作了:

6、混合型框架的优化总结

虽然整体性的混合型框架比其他两种框架模块,总体增加了一些难度及复杂性,不过,为了使得整个混合型框架开发和使用更加方便,我已经在设计上做了很多相关的工作,力求更好、更高效的使用好这种混合型框架,下面是我对整体性的框架做了的优化改进工作。

1)把所有通用的模块开发好,方便更好的集成使用,更加高效利用通用模块,重复利用度更高;

2)把WCF服务发布和服务逻辑分开,更好管理和发布WCF服务,服务发布只需要svc文件,不含任何后台代码;

3)统一的业务调用规则和命名规则,所有模块的接口调用统一为CallerFactory方式,通用模块和框架的命名规则和机制完全一样。

4)WCF服务配置文件分离,通用性的辅助模块的配置文件为BaseWcfConfig.config,业务系统的WCF配置文件为WcfConfig.config,配置文件分离更方便管理和维护,减少主配置文件app.Config的复杂性。

5)***一条,也是最重要的一条,就是代码生成工具Database2Sharp的同步支持。通过代码生成工具,更好、更快的生成整个混合性框架的代码和项目工程,一键解决所有的烦恼。Winform界面,利用代码生成工具Database2Sharp进行生成,然后在项目中整合即可。

网页题目:Winform开发框架之混合型框架的剖析
新闻来源:http://www.shufengxianlan.com/qtweb/news28/111578.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联