在22日,我在公众号上发布了一条短文字,内容如下:
其实在.NET开发大军中,还有一股力量,那就是桌面程序的开发者们。他们很少发声,可能技术成熟,可能太企业化了,也可能我没关注到。最近也在思考,是不是应该也分享一下这方面的技术。不知道大家是否关注?或你有什么好的建议,可以留言给我,谢谢🙏
到现在(24日早)收到了30多个公众号朋友的留言,内容虽然形形色色,但从语义和字数上来看,这是大家真实心理写照,大家对桌面技术热爱,希望社区对桌面技术的分享还是很强烈的。
还有一部分人希望在上位机方面分享技术,但由于本人没有从事过相关工作,所以很遗憾,不能给大家带来实践分享,虽然业务场景不熟,如果有什么技术问题,可以交流,如果有代表性,可以形成一篇技术文章,一起记录下来,联名发布在公众号上,为他人的类似问题提供一点帮助。
我自己做过10多年的CS开发,虽然现在一直从事web开发和架构工作,但对桌面开发仍情有独钟。近期也一直在思考,桌面开发方面的事情,主要有以下几个方面:
技术层面:.NET的桌面开发一直是以WinForm,WPF为主,虽然之后推出UWP以及最近推出的MAUI,但与WPF的基调雷同。在传统行业,桌面开发应该还是WinForm占有量比较多一些,也有相当的传统应用在向WPF迁移(这只是个人从身边的信息感觉,没有真实的调查)。不管WinForm还是WPF,推出也有相当长的时间了,技术都相对成熟,近期最大的变化就是从.NET Framework转到.NET(core),这不意味着他们可以跨平台到Linux下了,只是为了统一.NET的基础框架库而已。MAUI反倒可以在跨平台上更得心应手一些。与日新月异的web技术不同,.NET桌面的这两个框架没有发生大的改变,但这不代表CS架构没有改变,WinForm和WPF更多的是UI层,展示层,CS架构的程序不只有UI,后面有与数据打交道的ORM,与三方API交流的http通信,与资源打交通的IO等,随着.NET的进化而在进化着。举简单的例子,比如访问数据,IO和Http的异步化(虽然不是近几天的升级),就是一个重要的改变;还有HttpClient的不断优化,也证明了.NET类库的演进和提升。所以说,我们广义说的WinForm和WPF是老技术,是说在UI层次上没有更多的新东西,比较控制,UI渲染机制,以及UI性能提升等方面没有太多的变化。
人力层面:.NET本身在高等院校教育中的课程占比比较低,从大学里面出来的真正爱好和使用者就寥寥无几了,那分到.NET桌面开发上的人,就凤毛麟角了,所以期待从大学生这个稳定的人力资源市场招到合适的人是难上加难。通常情况企业都是让一些有开发经验的程序员转或兼做桌面开发,毕竟WinForm和WPF"拖拖拽拽"就开发完了。
基于这两个层面,想把WinForm和WPF这两个老瓶,装上新酒,和大家小酌一杯。一是把传统的面面UI和日新月异的Web技术的结合,让它们互相借鉴,相互搭配,来提升桌面系统的性能和降低开发成本。二是希望与您联合署名推出一些系列性的文章(比如上位机),来为新人提供一些力所能及的帮助,让.NET桌面后继有更优秀的人。
我也知道,我的能力和时间也很有限,毕竟也要养家糊口,不可能把全部精力投入到社区,但本着“不积跬步无以至千里”的精神,还是希望记录下来,让需要之人取所需。
对CS架构,或相关领域有想法的您,可以加我微信,线下交流。
千里之行,始于足下,近期会写一些基础的,并且有自己拙笨见解的WinForm文章,以开始对CS框架的探讨。