提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:龚雪|2020-08-17 10:48:03.943|阅读 495 次
概述:本文将为大家介绍Winform开发中的困境及解决方案,DevExpress Winforms Controls 内置140多个UI控件和库,欢迎下载体验!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。DevExpress WinForm v20.1全新发布,想要体验?点击下载>>
在我们开发各种应用的时候,都会碰到很多不同的问题,这些问题涉及架构、模块组合、界面处理、共同部分抽象等方面,我们这里以Winform开发为例,从系统模块化、界面组件选择、业务模块场景划分、界面基类和辅助类处理、代码生成工具辅助开发等方面介绍在实际项目开发过程中碰到的困境和相关的解决方案,以便分析其中是如何逐步提高效率和整体用户体验的。
软件和建筑工程很类似,都是需要构建一个庞大而功能完整的一个系统,而工程化也意味着需要多人协作,那么就需要把一个庞大的系统横向或者纵向划分为各个可以独立施工完成的模块,虽然各个模块之间有所衔接或者交互,但是基本上可以以模块化的方式来构建,这个也是工程化开发的精髓所在。
以一个软件管理系统为例,我们尽可能把精力焦点放在客户的业务需求上,而对于常规的如权限控制、字典管理等一些常用的内容,由于它们的处理逻辑在特定领域上基本上比较固定一些,可以尽可能独立并重复使用,而有时候,以某个特定的业务来说,同时很多处理规则也是不变的,因此也可以以业务模块的方式来划分,从而类似通用模块的方式重复使用。
模块化类似小孩子搭积木的方式构建一个所要的形状,虽然软件和建筑在这方面肯定更加复杂化,但是模块化系统是大势所趋,也是简化开发、易于维护、提高系统健壮性的重要举措。
在Winform内置的传统样式里面,虽然提供了很多很好的界面组件,不过整体效果还是比较古板。为了增强界面的处理效果,我们一般使用一些第三方的界面套件作为Winform开发的基础,这个除了可以提高整体界面的效果外,还在很多控件层面提供丰富的处理和响应。
以前尝试过各种类型的界面套件,最终还是对DevExpress情有独钟,不仅仅是因为它是大软件公司开发的界面套件,也是因为它在界面层次提供了很多丰富的界面组件和强大的属性设置,能够极大满足各种界面复杂的要求。
使用DevExpress界面套件,可以使得我们开发的界面更加漂亮,用户体验也更好。
或者类似效果
前面说过,一个系统为了简化开发、易于维护、提高系统健壮性的可以把它按功能方式划分为各个独立模块进行开发或者重用,而对于业务模块来说,我们也还可以进一步细分。一般系统界面中,大多数标准方式是展示业务数据的查询列表,然后在根据需要对特定记录进行编辑、查看、删除等操作。我们把常规的列表界面,新增、编辑、查看、导入等界面放在一起,除了列表页面,其他内容以弹出层对话框的方式进行处理,如下界面示意所示。
如对于列表内容的展示,一般展示效果如下所示,主要展示数据库里面的二维表信息。
除了列表界面,另外一个就是对数据的明细展示界面了,这个界面内容可以更加多元化,如在里面承载各种控件,如文本、日期、图片、下拉列表、树形列表,以及我们自定义的一些控件,如对于附件的通过管理展示控件。
有了这些标准的展示效果,我们就可以参照这些,使用代码生成工具辅助页面内容的生成的了,生成规则以数据库元数据为参考即可。
我们以常规业务模块界面来分析,主要有明细查看或编辑界面、列表界面,那么这些界面为了方便使用,我们可以抽象一部分界面处理逻辑或者共有部分内容,放在界面基类BaseEdit或者BaseDock等基类里面,如下界面所示。
尽可能把一些涉及到业务数据的处理通用规则放到基类,而变化部分则在子类进行处理即可。这样可以简化生成界面的代码,以及提高可重用率,减少维护的难度和代码臃肿。 对于一般的业务系统,可能都会涉及到不同数据库的使用,如SQLServer、Oracle、Mysql、PostgreSQL等数据库,那么这部分,可以通过使用微软企业库或者其他ORM方式进行处理,以实现系统对多种数据库的良好支持。
通过上面的介绍,通用部分作为模块独立使用,业务模块的界面主要划分列表和编辑查看界面两部分,而各自又进行了一定的基类抽象处理,那么相对来说已经简化很多了,不过对于业务数据来说,我们还是需要做很多重复性的工作,如界面显示、界面赋值及调用接口处理等操作,这些对业务对象固定的话,其实也是规则类似的,那么这部分我们结合代码生成工具进行批量生成即可,生成后进行一定的微调,可以极大降低出错的几率,减少代码的编写量。
在我们开发软件的时候,解决方案项目基于一定的分层组织,每个项目分层中,各个类的关系也是确定的,借助辅助工具(结合模板引擎)可以快速生成我们所需要的代码,并极大提高我们软件的开发效率,Database2Sharp代码生成工具就是一款专门针对我们自己框架结构配套的开发工具。
Database2Sharp代码生成工具,主要是基于数据库提取的元数据信息,根据表的信息和关系,字段信息等内容,生成我们框架所需要分层的类代码。
对于Winform开发,可以根据Winform框架或者混合框架的窗体界面类,生成标准的界面代码,列表界面默认具有分页查询、导入导出、高级查询、编辑、删除事件绑定,编辑界面则具有获取数据并显示在控件,保存后执行更新或者写入的操作。
除了前面介绍的部分外,一般大的方面,我们还可以以业务方式做一些独立的组件模块,以方便重复使用,这个是大的方面。模块化,一般需要构建好对应的框架架构,每个独立的模块,都是遵循统一的框架架构方式处理,可以极大提高代码的开发效率和降低维护的难度。Winform开发架构如下所示。
而对于混合方式的Winform开发,那么还设计Web API模块的部署,以及客户端对Web API调用的封装,如下所示。
本文转载自
DevExpress技术交流群2:775869749 欢迎一起进群讨论
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
行业领先的界面控件开发包,帮助企业构建卓越应用!
DevExpress WinForms Subscription为Windows Forms平台创建具有影响力的业务解决方案,高性价比WinForms界面控件套包。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢