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个能力
技术人修炼之道阅读笔记(一)让自己更值钱的5个能力
|
6月前
|
存储 人工智能 安全
尽管存在疑虑,但CIO仍在继续发掘和利用AIGC的优势
尽管存在疑虑,但CIO仍在继续发掘和利用AIGC的优势
|
6月前
|
运维 安全 测试技术
DevSecOps来袭,传统软件安全模式OUT了?新思维让你眼界大开,看完这篇秒变专家!
【8月更文挑战第6天】近期深入探索了DevSecOps,这是一种革新软件安全的开发运维模式。它将“安全”全面融入“开发”与“运维”,构建自动化安全体系。不同于传统事后安全检测的方式,DevSecOps强调安全贯穿软件生命周期始终。借助CI/CD管道集成安全扫描工具,确保每次代码提交均符合安全标准。例如,在CI管道中加入静态代码分析工具SonarQube,自动执行安全检查。DevSecOps不仅是技术实践,更代表文化与管理的变革,促进跨职能团队协作,共同保障软件安全与质量。未来,DevSecOps有望成为软件开发领域的主流实践。
50 1
|
6月前
|
存储 分布式计算 大数据
惊了!大数据时代来袭,传统数据处理OUT了?创新应用让你眼界大开,看完这篇秒变专家!
【8月更文挑战第6天】在数据爆炸的时代,高效利用大数据成为关键挑战与机遇。传统数据处理手段难以胜任现今海量数据的需求。新兴的大数据技术,如HDFS、NoSQL及MapReduce、Spark等框架,为大规模数据存储与处理提供了高效解决方案。例如,Spark能通过分布式计算极大提升处理速度。这些技术不仅革新了数据处理方式,还在金融、电商等领域催生了风险识别、市场预测及个性化推荐等创新应用。
145 1
|
6月前
|
Java 数据库连接 数据库
携手前行:在Java世界中深入挖掘Hibernate与JPA的协同效应
【8月更文挑战第31天】Java持久化API(JPA)是一种Java规范,为数据库数据持久化提供对象关系映射(ORM)方法。JPA定义了实体类与数据库表的映射及数据查询和事务控制方式,确保不同实现间的兼容性。Hibernate是JPA规范的一种实现,提供了二级缓存、延迟加载等丰富特性,提升应用性能和可维护性。通过结合JPA和Hibernate,开发者能编写符合规范且具有高度可移植性的代码,并利用Hibernate的额外功能优化数据持久化操作。
58 0
|
8月前
|
算法
探索技术之巅:我的编程之旅
【6月更文挑战第15天】在这篇文章中,我将分享我在编程领域的旅程和感悟。从最初的困惑到逐渐掌握技能,再到深入理解技术的精髓,我将带你了解我如何在这个充满挑战和机遇的领域中不断成长。
|
9月前
|
自然语言处理 搜索推荐 程序员
【创意坊】​ChatDev震撼登场!开源狂潮席卷​​,释放无限可能!
【创意坊】​ChatDev震撼登场!开源狂潮席卷​​,释放无限可能!
153 2
|
存储 分布式计算 监控
专访骨灰级开源爱好者吴晟:开源没有黑魔法,两年后泡沫将会破灭
在刚结束的 2020 年,国内先后有超过 11 家开源软件领域企业获得了新一轮的资本助力,融资纪录创下近年来开源赛道最高。开源的热潮,已然兴起。然而,当越来越多的资本、企业等产业界人士开始越来越关注开源之时,一些隐藏在开源光鲜外衣背面的阴暗,也随之而来。
399 0
专访骨灰级开源爱好者吴晟:开源没有黑魔法,两年后泡沫将会破灭
带你读《果壳中的5G:新网络时代的技术内涵与商业思维》前言
《果壳中的5G:新网络时代的技术内涵与商业思维》前言
|
数据安全/隐私保护 安全
《安全说道》第四期 | 数据安全的“真爱”,你找到了吗?
“敏感数据”的保护是重中之重,可谓是数据安全中的“真爱”,要是敏感数据出了问题,后果可能会更严重。
1609 0