如何快速开发Winform应用系统

在实际的业务中,每每还有不少须要使用Winform来开发应用系统的,如一些HIS、MIS、MES等系统,因为Winform开发出来的系统界面友好,响应快速,开发效率高等各方面缘由,还有一些缘由是独立的WInform应用系统方便部署使用,能够快速的在内部系统中安装使用,小型的系统每每不须要涉及到云服务等分布式的处理,那么界面的流畅使用、友好呈现、快速的开发响应等特色就有很是明显的优点了。html

本篇不针对性的讨论Winform开发的优缺点,只是让你们了解常规Winform开发的一些处理场景,在知足需求的状况下,如何快速的开发Winform的应用系统。sql

一、基于某个特定的主体界面布局

采用一个特定的界面布局方式,这样能够快速搭建各个模块的应用,也是给客户第一好印象的开始,毕竟如今界面的处理愈来愈丰富,不过整体原则仍是要以实用为主,易于找到功能入口。数据库

如基于Ribbon的工具条的组织方式界面布局后端

 

 或者基于树形列表的左侧处理方式设计模式

 

 或者一个兼顾经典菜单模式和常规列表处理的方式布局架构

  以上这些对于功能点比较多,并且须要分来管理的界面是很是不错的,而对应窗体,通常都是采用多文档窗口的方式,方便管理不一样的界面数据。框架

而这些模块中,每每由咱们本身的Winform开发框架、混合开发框架来统一提供,能够根据须要进行调整便可。并且对于菜单,通常在后端权限系统中配置便可,运行系统的时候就会动态加载,这种就是插件化管理的概念了,能够动态增长、维护某个模块的加载和展现。数据库设计

 

二、设计数据库表

数据库设计基本上上咱们开发者的基本功吧,通常就是根据须要设计好表的字段、备注、约束、索引等信息,虽然如今不少系统要求支持多种数据库,但通常状况下是用在一个类型数据库之上的,咱们能够以常规方便使用的Sqlserver来设计数据库信息,如须要其余数据库支持的,到时候使用转换方式生成其余数据库设计文件便可。分布式

通常数据库设计工具,咱们采用的是使用比较普遍、又很是方便的PowerDesigner进行处理,咱们使用它的好处就是能够随时进行调整数据库表信息,而且数据库脚本生成很是方便;另外咱们能够先生成Sqlserver的数据库设计文件,如须要还能够转换为其余数据库的设计文件。模块化

咱们能够生成没有外键关系的数据表

可是每一个表的字段,咱们都建议加上中文备注信息,不只仅是由于这样能够好理解表的关系,也方便代码生成的时候,附带上说明信息,以及界面生成的时候,做为中文标签处理。

 

 也能够为了系统完整性,生成一些外键关系的表。

 

这样处理好系统表或者业务表后,咱们能够利用PowerDesigner工具的功能快速的生成SQL脚本,用于在MS SQLServer上执行生成表。

 

若是咱们之后有须要迁移到MySql数据库里面,那么能够利用Navicat Premium进行转义到Mysql数据库便可。

详细过程能够参考我以前的一篇随笔《ABP框架使用Mysql数据库,以及基于SQLServer建立Mysql数据库的架构和数据》 

 

  

三、结合代码生成工具快速常规操做接口代码

 对于一个新建的业务表,咱们须要开发的须要底层的实现和界面层的展现,这些工做量也是很是巨大的,若是基于控件细粒度的处理,也是很是繁琐的工做,所以基于这些开发过程的考虑,咱们引入了提升效率开发的代码生成工具Database2Sharp,专门为咱们基于开发框架基础上的框架实现代码开发,和业务界面展现的快速开发。

代码生成工具,不只可以让它生成咱们常规开发的界面层如下的实现代码(包括BLL、DAL、Entity、IDAL等层,以及混合框架的WCF、Web API的实现层和调用封装层),以及界面层的调用代码。

有了这些的处理,咱们可极大减轻工做量。

咱们开发新业务表的处理没有发生变化,须要设计好本身的业务表,而后利用代码生成工具生成对应代码,最后合并到项目里面并调整界面为合适的展现方式。

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

这些,咱们利用代码生成工具来开发后端代码,已经对这些不一样数据库的处理进行了相应的支持,使用起来就更加方便了。

 

Winform开发架构以下所示。

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

四、结合代码生成工具快速生成界面代码并整合

 利用代码生成,根据咱们数据库的字段信息,能够快速生成相应的列表、编辑界面等常规界面,生成后进行相应的微调便可。

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

通常状况下,咱们利用代码生成工具生成的界面都是须要调整的,可是界面的控件名称已经根据字段进行了对应,后台的数据显示、输入验证、数据保存等须要控件和实体类一一对应的关系,也已经作好了,所作的只须要把界面调整的更加好看便可。

因此,生成的界面大体状况以下所示。

首先,咱们知道,DevExpress的LayoutControl布局控件,对于其中的控件位置,均可以在设计模式进行动态拖动调整的,以下所示。

另外,咱们能够在设计模式下,控件的右上角上,调整控件为本身但愿的类型,以下所示。

这样咱们能够把生成的文本框,调整为下来列表,而后能够经过后端代码一行代码,进行字典的绑定。

 

 这样就很是简化了咱们对字典数据源的绑定操做了,很是方便易读,下面是其中一个功能界面的下拉列表展现。

根据须要调整控件、拖动位置,增长一些特殊的控件等,能够把界面整理的比较规范化、美观一些。

或者更多数据的人员信息的数据编辑界面效果以下所示,经过分门别类,咱们能够有效管理看似很凌乱的数据内容了。

生成好后端代码和Winform界面代码,就须要根据框架的特色进行增量式的整合使用了

详细能够参考一下《按部就班开发WinForm项目(4)--Winform界面模块的集成使用

三、整合一些常有的项目模块 

因为咱们框架提供了不少基础的模块来给咱们新业务开发提供便利,如公用类库、分页控件、字典管理、权限管理系统、自动升级、附件管理、人员管理、工做流管理等能够反复重用的模块。

有了这些模块的加持,咱们开发项目不少基础的处理就不用全部的东西都从头来过。

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

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

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

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

相关文章
相关标签/搜索