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

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

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

1、系统模块化

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

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

而有时候,以某个特定的业务来说,同时很多处理规则也是不变的,因此也可以以业务模块的方式来划分,从而类似通用模块的方式重复使用。

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

 

2、界面组件选择

在Winform内置的传统样式里面,虽然提供了很多很好的界面组件,不过整体效果还是比较古板。为了增强界面的处理效果,我们一般使用一些第三方的界面套件作为Winform开发的基础,这个除了可以提高整体界面的效果外,还在很多控件层面提供丰富的处理和响应。

以前尝试过各种类型的界面套件,最终还是对DevExpress情有独钟,不仅仅是因为它是大软件公司开发的界面套件,也是因为它在界面层次提供了很多丰富的界面组件和强大的属性设置,能够极大满足各种界面复杂的要求。

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

或者类似效果

 

3、业务模块的场景划分

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

一般系统界面中,大多数标准方式是展示业务数据的查询列表,然后在根据需要对特定记录进行编辑、查看、删除等操作。

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

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

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

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

 

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

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

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

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

 

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

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

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

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

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

 

7、其他

除了前面介绍的部分外,一般大的方面,我们还可以以业务方式做一些独立的组件模块,以方便重复使用,这个是大的方面。

模块化,一般需要构建好对应的框架架构,每个独立的模块,都是遵循统一的框架架构方式处理,可以极大提高代码的开发效率和降低维护的难度。

Winform开发架构如下所示。

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

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

 

专注于代码生成工具、.Net/.NetCore 框架架构及软件开发,以及各种Vue.js的前端技术应用。著有Winform开发框架/混合式开发框架、微信开发框架、Bootstrap开发框架、ABP开发框架、SqlSugar开发框架等框架产品。
 转载请注明出处:撰写人:伍华聪  http://www.iqidi.com
   

标签: Winform开发框架

相关文章
|
5月前
|
架构师 UED
让数字化转型奏效的五大秘诀
让数字化转型奏效的五大秘诀
|
数据采集 监控 安全
谈谈华为数据治理的五点启示
华为数据治理为华为数字化转型的成功提供了重要基础和保障,华为数据治理的成功也成为了业界学习的标杆。
谈谈华为数据治理的五点启示
|
运维 供应链 物联网
直击区块链技术调查报告:现阶段最大问题是“困难太多”
1月9日晚,朋友圈刷屏了徐小平的预言“区块链革命到来,这是一场顺我者昌,逆我者亡的伟大革命”,但我们想请大家注意,目前区块链技术热点,以及应用问题。
10279 0
|
运维 架构师 测试技术
从架构理解价值-我的软件世界观(转载)
程序员的迷茫-找寻不到价值 在浩大的软件世界里,作为一名普通程序员,显得十分渺小,甚至会感到迷茫。我们内心崇拜技术,却也对日新月异的技术抱有深深的恐惧。技术市场就像这喜怒不定的老天爷,今天下个大数据雨,明天挂个人工智能风,面对琳琅满目的技术浪潮的冲击,程序员难免深感无力,深怕错过了技术潮流从而失去了职场竞争力。
1242 0
《伟大的小细节:互联网产品设计中的微创新思维》——1.1 细节创新有没有门道?怎样借鉴创新?
本节书摘来自华章计算机《伟大的小细节:互联网产品设计中的微创新思维》一书中的第1章,第1.1节,作者:文哲著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1307 0
|
存储 数据安全/隐私保护
《伟大的小细节:互联网产品设计中的微创新思维》——1.2 “细节决定成败”还是“大行不顾细谨”
本节书摘来自华章计算机《伟大的小细节:互联网产品设计中的微创新思维》一书中的第1章,第1.2节,作者:文哲著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1490 0
|
测试技术 持续交付
《代码之殇》(原书第2版)——第2章 过程改进,没有灵丹妙药 2010年12月1日
本节书摘来自华章出版社《代码之殇》(原书第2版)——第2章 过程改进,没有灵丹妙药,22010年12月1日,作者:(美 )Eric Brechner 著 林锋 译.更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1459 0