在Winform开发领域开发过十多年的项目中,见证着形形色色的架构和官方技术的应用,从最早类似Winform模式的WebForm技术,到接着的JQuery+界面组件,再到Asp.net Core的技术应用,以及后来的纯前端技术出现,Angular、React、Vue等前端技术和语言的广泛应用,Web应用越来越多,也越来越精细化,从最初的单服务,到单服务+分布式缓存,再到微服务集群的各种服务架构,Web开发的体系越来越庞大和复杂化,虽然引入更多先进技术、更多优秀架构,但同时也意味着更高的技术门槛,以及全栈式的开发需求或要求,Winform开发依旧占领一席之地。本文针对Winform开发的技术特点,针对自己多年的开发经验,对Winform开发的快速、健壮、解耦的一些领域提出几点微薄建议,抛砖引玉,希望大家多加指正。
Winform的技术概括
另一方面,作为Winform的替代者,Silverlight的盛行以及没落,WPF的逐步应用并重用,以及统一的通用 Windows 平台 (UWP),都充当着Winform的终结者的大任,不过即使应用范围缩减,Winform依旧很顽强,即使.netcore的大环境下,也依旧保留在Visual Studio 2022中,可见Winform开发的生命力之顽强。
Winform开发对比其他有不少优点,主要的特点还是开发方便,基于一定的框架,可以快速开发特定的业务管理系统。下面就WInform这个技术应用做一个个人的概括。
1. 用户体验
在Winform应用里面,和其他Web系统比起来,它的用户体验是最好的,而且界面响应速度也比Web界面来的快捷一些,由于很多情况下,用户考虑使用方便性,如一些报表的展示、打印、导入导出文件的处理等常规的操作,都还是习惯使用Winform这种定制型非常好的界面来处理,毕竟大多数情况下,单位都有一套业务和数据的管理系统来处理这些业务。
2. 数据敏感
另外很多情况下,如一些事业单位、机构什么,他们的数据是比较敏感的,不希望对外公开,网络的引入会提供数据外泄的可能,另外它们也是经常处于内网的环境下,因此一个单机版的程序就可以搞定他们的日常业务处理了,这种特别的业务环境,注定了使用Winform来处理会更胜一筹。
3. 开发便利
Winform开发的程序,发布共享比较容易,直接安装就可以使用,可以不需要部署在云端(虽然我的混合框架方式可以访问Web API、WCF等服务获取数据,透明的数据处理);而且Winform的界面开发起来非常方便,结合界面套件,可以做出非常棒的界面效果。另外从开发角度上讲,Web前端的技术淘汰非常快,Winform的技术积累反而是在逐步加固的过程,因此对于一些开发人员来说,迭代Winform开发的应用会更加方便,也更加熟练,因此只要客户在用,系统兼容,这种Winform的程序会一直保留下去。
4. 应用广泛
Winform开发的程序,其应用领域真的是覆盖方方面面,包括常规的数据库应用,以及Socket套接字的处理,底层硬件串口或者Modbus协议对接,基础打印、读卡器、射频开发、USB、摄像头的控制处理等,可以说Web能做的Winform基本都能做,而Winform能做的Web不一定能做到。
如何实现Winform的模块化开发?
对于如何实现Winform应用的模块化开发,其实本身Winform来源于早期Delphi、VB时代,它们已经是在控件的拖动处理、事件驱动方面都已经完善至极,对一些简单的应用,拖动一些控件,再增加一些事件响应处理即可完成主要的功能,这个也是很多早期共享软件盛行的重要原因。
随着程序功能的日益复杂化,Winform程序呈现模块化,把一些功能处理、UI界面等按照横向或者竖向划分,进行界面性、功能性的不同程度的分离,如出现了很多界面组件,如ActiveSkin/Skin++、DotNetBar、DevExpress等等,它们负责界面的渲染和简单的功能响应,对于业务性的界面则只能由开发者完成处理,但是已经实现一定程度的横向功能分离了。
通过利用这些UI组件,使得我们的Winform界面更加丰富,就像穿上了很高贵的服饰,面目一新,不过它还是不能解决程序复杂度的问题,有时候因为界面特性的原因,可能引入更多的复杂性难题,提供更多更精细难懂的事件来处理。
在我们开发一个应用的时候,往往需要集成一些应用场景,如基础的用户、角色、机构、权限、日志等权限管理系统,以及字典参考,附件管理等内容,以及一些封装好的分页处理控件,公用类库等支持类库等。
因此我们在这个基础上开发Winform项目,会更加高效快速。
Winform开发的相关业务逻辑(包括界面UI),都可以封装在一个简单的DLL文件中,需要的时候进行引用和调用即可,使用起来非常方便,这种方便也使得Winform程序的模块化更加简单和高效。
通过在解决方案中引入相关开发好的模块,直接调用使用即可,非常快速简单。
开发程序模块,除了一些业务模块外,大多数都是类似拼积木的方式,把它们在主界面中引入即可。
而Winform模块的调用,只需要简单的调用或者带入相关参数即可。
我们Winform框架通过多年积累,也提供了很多基础的模块来给我们新业务开发提供便利,如公用类库、分页控件、字典管理、权限管理系统、自动升级、附件管理、人员管理、工作流管理等可以反复重用的模块。
有了这些模块的加持,我们开发项目很多基础的处理就不用所有的东西都从头来过。
软件和建筑工程很类似,都是需要构建一个庞大而功能完整的一个系统,而工程化也意味着需要多人协作,那么就需要把一个庞大的系统横向或者纵向划分为各个可以独立施工完成的模块,虽然各个模块之间有所衔接或者交互,但是基本上可以以模块化的方式来构建,这个也是工程化开发的精髓所在。
以一个软件管理系统为例,我们尽可能把精力焦点放在客户的业务需求上,而对于常规的如权限控制、字典管理等一些常用的内容,由于它们的处理逻辑在特定领域上基本上比较固定一些,可以尽可能独立并重复使用。
DevExpress Universal 10月正式发布今年第二个重大版本——v21.2,此版本正式官宣支持Visual Studio 2022 & .NET6,同时与微软最新发布的Windows 11完美兼容,全面解决用户各种使用场景问题。 与时俱进,从未止步!DevExpress 2021最新版本v21.2已正式发布,慧都独家抢先解析最新功能、新控件预览与应用,带您解锁2021最强UI控件,助您构建出色的应用程序!
本文转载自:博客园 - 伍华聪
DevExpress技术交流群5:742234706 欢迎一起进群讨论
更多DevExpress线上公开课、中文教程资讯请上中文网获取
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:DevExpress控件中文网 [https://www.devexpresscn.com/]
本文地址:https://www.devexpresscn.com/post/2804.html