Winform开发中的困境及解决方案

在咱们开发各类应用的时候,都会碰到不少不一样的问题,这些问题涉及架构、模块组合、界面处理、共同部分抽象等方面,咱们这里以Winform开发为例,从系统模块化、界面组件选择、业务模块场景划分、界面基类和辅助类处理、代码生成工具辅助开发等方面介绍在实际项目开发过程当中碰到的困境和相关的解决方案,以便分析其中是如何逐步提升效率和总体用户体验的。html

一、系统模块化

软件和建筑工程很相似,都是须要构建一个庞大而功能完整的一个系统,而工程化也意味着须要多人协做,那么就须要把一个庞大的系统横向或者纵向划分为各个能够独立施工完成的模块,虽然各个模块之间有所衔接或者交互,可是基本上能够以模块化的方式来构建,这个也是工程化开发的精髓所在。sql

以一个软件管理系统为例,咱们尽量把精力焦点放在客户的业务需求上,而对于常规的如权限控制、字典管理等一些经常使用的内容,因为它们的处理逻辑在特定领域上基本上比较固定一些,能够尽量独立并重复使用,数据库

而有时候,以某个特定的业务来讲,同时不少处理规则也是不变的,所以也能够以业务模块的方式来划分,从而相似通用模块的方式重复使用。架构

模块化相似小孩子搭积木的方式构建一个所要的形状,虽然软件和建筑在这方面确定更加复杂化,可是模块化系统是大势所趋,也是简化开发、易于维护、提升系统健壮性的重要举措。框架

 

二、界面组件选择

在Winform内置的传统样式里面,虽然提供了不少很好的界面组件,不过总体效果仍是比较古板。为了加强界面的处理效果,咱们通常使用一些第三方的界面套件做为Winform开发的基础,这个除了能够提升总体界面的效果外,还在不少控件层面提供丰富的处理和响应。模块化

之前尝试过各类类型的界面套件,最终仍是对DevExpress情有独钟,不只仅是由于它是大软件公司开发的界面套件,也是由于它在界面层次提供了不少丰富的界面组件和强大的属性设置,可以极大知足各类界面复杂的要求。工具

使用DevExpress界面套件,可使得咱们开发的界面更加漂亮,用户体验也更好。布局

 

或者相似效果post

 

三、业务模块的场景划分

前面说过,一个系统为了简化开发、易于维护、提升系统健壮性的能够把它按功能方式划分为各个独立模块进行开发或者重用,而对于业务模块来讲,咱们也还能够进一步细分。开发工具

通常系统界面中,大多数标准方式是展现业务数据的查询列表,而后在根据须要对特定记录进行编辑、查看、删除等操做。

咱们把常规的列表界面,新增、编辑、查看、导入等界面放在一块儿,除了列表页面,其余内容以弹出层对话框的方式进行处理,以下界面示意所示。

如对于列表内容的展现,通常展现效果以下所示,主要展现数据库里面的二维表信息。

除了列表界面,另一个就是对数据的明细展现界面了,这个界面内容能够更加多元化,如在里面承载各类控件,如文本、日期、图片、下拉列表、树形列表,以及咱们自定义的一些控件,如对于附件的经过管理展现控件。

 

 有了这些标准的展现效果,咱们就能够参照这些,使用代码生成工具辅助页面内容的生成的了,生成规则以数据库元数据为参考便可。

 

四、界面基类和辅助类的处理

咱们以常规业务模块界面来分析,主要有明细查看或编辑界面、列表界面,那么这些界面为了方便使用,咱们能够抽象一部分界面处理逻辑或者共有部份内容,放在界面基类BaseEdit或者BaseDock等基类里面,以下界面所示。

尽量把一些涉及到业务数据的处理通用规则放到基类,而变化部分则在子类进行处理便可。这样能够简化生成界面的代码,以及提升可重用率,减小维护的难度和代码臃肿。 

对于通常的业务系统,可能都会涉及到不一样数据库的使用,如SQLServer、Oracle、Mysql、PostgreSQL等数据库,那么这部分,能够经过使用微软企业库或者其余ORM方式进行处理,以实现系统对多种数据库的良好支持。

 

五、代码生成工具辅助开发

经过上面的介绍,通用部分做为模块独立使用,业务模块的界面主要划分列表和编辑查看界面两部分,而各自又进行了必定的基类抽象处理,那么相对来讲已经简化不少了,不过对于业务数据来讲,咱们仍是须要作不少重复性的工做,如界面显示、界面赋值及调用接口处理等操做,这些对业务对象固定的话,其实也是规则相似的,那么这部分咱们结合代码生成工具进行批量生成便可,生成后进行必定的微调,能够极大下降出错的概率,减小代码的编写量。

 在咱们开发软件的时候,解决方案项目基于必定的分层组织,每一个项目分层中,各个类的关系也是肯定的,借助辅助工具(结合模板引擎)能够快速生成咱们所须要的代码,并极大提升咱们软件的开发效率,Database2Sharp代码生成工具就是一款专门针对咱们本身框架结构配套的开发工具。

Database2Sharp代码生成工具,主要是基于数据库提取的元数据信息,根据表的信息和关系,字段信息等内容,生成咱们框架所须要分层的类代码。

对于Winform开发,能够根据Winform框架或者混合框架的窗体界面类,生成标准的界面代码,列表界面默认具备分页查询、导入导出、高级查询、编辑、删除事件绑定,编辑界面则具备获取数据并显示在控件,保存后执行更新或者写入的操做。

 

 

 

七、其余

除了前面介绍的部分外,通常大的方面,咱们还能够以业务方式作一些独立的组件模块,以方便重复使用,这个是大的方面。

模块化,通常须要构建好对应的框架架构,每一个独立的模块,都是遵循统一的框架架构方式处理,能够极大提升代码的开发效率和下降维护的难度。

Winform开发架构以下所示。

 而对于混合方式的Winform开发,那么还设计Web API模块的部署,以及客户端对Web API调用的封装,以下所示。

 小的方面,还能够进一步划分一些经常使用的界面处理元素,如自定义控件的方式进行特殊组件的开发工做。如随笔《在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件》、《在Winform系统界面中对进展阶段的动态展现和处理》。

相关文章
相关标签/搜索