.NET桌面开发的一些思考

在22日,我在公众号上发布了一条短文字,内容如下:

其实在.NET开发大军中,还有一股力量,那就是桌面程序的开发者们。他们很少发声,可能技术成熟,可能太企业化了,也可能我没关注到。最近也在思考,是不是应该也分享一下这方面的技术。不知道大家是否关注?或你有什么好的建议,可以留言给我,谢谢🙏

到现在(24日早)收到了30多个公众号朋友的留言,内容虽然形形色色,但从语义和字数上来看,这是大家真实心理写照,大家对桌面技术热爱,希望社区对桌面技术的分享还是很强烈的。

还有一部分人希望在上位机方面分享技术,但由于本人没有从事过相关工作,所以很遗憾,不能给大家带来实践分享,虽然业务场景不熟,如果有什么技术问题,可以交流,如果有代表性,可以形成一篇技术文章,一起记录下来,联名发布在公众号上,为他人的类似问题提供一点帮助。

202b235a32dcd71258f3488da1363e24.jpeg

我自己做过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框架的探讨。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ArcGIS错误异常100问】之003:属性表中文乱码解决办法总结

测试环境: 操作系统:windows7ArcGIS版本:10.X、Pro结果:通过测试 文章目录1. 错误提示2. 原因分析3. 解决方法4. 问题验证1. 错误提示 如图所示,安装完ArcGIS Pro后,由于计算机系统和应用软件字符编码的问…

大型网站架构演化(二)——应用服务和数据服务分离

随着网站业务的发展,一台服务器逐渐不能满足需求:越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这时就需要将应用和数据分离。应用和数据分离后整个网站使用三台服务器:应用服务器、文件服务器和数据库服…

再不自动化就晚啦!优云教你4步打造基于CentOS的产品镜像

随着Linux程序的增多,软件的安装过程中经常出现如下问题: 1、硬件配置类似或者相同时,批量安装系统和软件,希望实现自动化安装,减少安装时间和人为出错。 2、工程实施人员在不同客户现场进行系统和软件安装(硬件配置不…

【ArcGIS错误异常100问】之004:ArcGIS表转Excel超了65535限制解决办法

测试环境: 操作系统:windows7ArcGIS版本:10.2 文章目录1. 错误提示2. 原因分析3. 解决方法1. 错误提示 如下图,当矢量shp图斑数目过多,文件超过了65535条记录时,利用ArcGIS的表转Excel工具处理成Excel文件…

[转]硬核 | Redis 布隆(Bloom Filter)过滤器原理与实战

在Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?中我们说到可以使用布隆过滤器避免「缓存穿透」。 码哥,布隆过滤器还能在哪些场景使用呀? 比如我们使用「码哥跳动」开发的「明日头条」APP 看新闻,如…

Senparc.Weixin.Sample.MP源码剖析

Senparc.Weixin.Sample.MP是微信公众号样例的.NET6源码,项目配置文件appsettings.json的修改和微信公众号测试环境的搭建参考:微信公众号调试与Natapp环境搭建。接下来从项目结构,项目应用和项目源码3个角度来进行讲解。一.项目结构角度项目代…

解决java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor问题

hibernate整合spring当在spring配置文件中加入如下代码 <!--2.配置事务属性,需要事务管理器--><tx:advice id"txAdvice" transaction-manager"transactionManager"><tx:attributes><tx:method name"get*" read-only"t…

Packagist / Composer 中国全量镜像

Packagist / Composer中国全量镜像 本镜像共缓存了 186695 个项目(package)、Millions 个(zip)安装包。最后同步时间&#xff1a;2018/1/28 上午11:01:13 。Composer 最新版本&#xff1a;1.6.2 立即使用 赞助 Packagist 镜像使用方法 还没安装 Composer 吗&#xff1f;请往…

mock.js使用

一、Mock.js入门 1&#xff0e; 什么是mock.js? Mock.js &#xff08;官网http://mockjs.com/&#xff09;是一款模拟数据生成器&#xff0c;旨在帮助前端攻城狮独立 于后端进行开发&#xff0c;帮助编写单元测试。提供了以下模拟功能&#xff1a; 1,根据数据模板生成模拟数据…

面向对象——概念(成员变量、静态变量、成员方法、静态方法、垃圾回收机制、重载、包)...

静态变量和成员变量的区别&#xff1a; 1、成员变量描述的是对象的特征&#xff0c;包含在对象之中。不同的对象成员变量彼此独立。一个对象成员变量的改变&#xff0c;不会影响其他对象。 静态变量独立在对象之外&#xff0c;是所有对象共享的变量。静态变量改变后会影响所有对…

【ArcGIS微课1000例】0042:ArcGIS自带取色器工具的妙用

在ArcGIS中作图时,通常要进行颜色对照填充,输入特定的RGB值,本文介绍ArcGIS自带取色器工具的妙用,及第三方颜色拾取工具。 文章目录 一、ArcGIS自带取色器二、第三方取色器工具一、ArcGIS自带取色器 很多人可能不知道,ArcGIS中自带取色器工具,如下图所示。 当然了,自带…

第一轮复习完毕,kmp走起

//代码via:http://blog.csdn.net/v_JULY_v/article/details/6111565 //简单思路via:http://study.163.com/course/courseLearn.htm?courseId468002#/learn/video?lessonId1024414&courseId468002 1 #include<iostream>2 #include<string>3 #include<vecto…

微信.NET SDK-Senparc资料整理

微信生态系统包括微信公众号、小程序、微信支付、微信开放平台、企业微信、小游戏等&#xff0c;官方提供了很多的API接口。Senparc是目前使用最广泛的微信.NET SDK&#xff0c;同时支持支持.NET Framework 4.5/.NET Core 2.x/.NET Core 3.x/.NET 5/.NET 6。由于在微信生态开发…

7 种提升 Spring Boot 吞吐量神技

目录 二、增加内嵌Tomcat的最大连接数 三、使用ComponentScan()定位扫包比SpringBootApplication扫包更快 四、默认tomcat容器改为Undertow&#xff08;Jboss下的服务器&#xff0c;Tomcat吞吐量5000&#xff0c;Undertow吞吐量8000&#xff09; 五、使用 BufferedWriter 进…

Atitit.ati orm的设计and架构总结 适用于java c# php版

Atitit.ati orm的设计and架构总结 适用于java c# php版 1. Orm的目标 1 1.1. 动态obj 1 1.2. Hb的api(meger,save,update,del) 1 2. Orm的概念 1 3. 动态obj 2 4. 參考 4 1. Orm的目标 1.1. 动态obj 1.2. Hb的api(meger,save,update,del) 2. Orm的概念 saveOrUpdate后的对象会纳…

【ArcGIS微课1000例】0043:ArcGIS缩略图的创建及应用

缩略图通常出现在地图文档中&#xff0c;便于在启动页面中快速打开指定的地图文档&#xff0c;提高效率。 文章目录一、缩略图预览二、缩略图创建一、缩略图预览 打开ArcMap软件&#xff0c;弹出启动窗口&#xff0c;在最近打开的文档中&#xff0c;可以看到两类&#xff0c;一…

JSP简单登录系统

Login登陆界面 <body> 登陆 <% session.invalidate();%> <form action"TestPW.jsp" method"post">用户名<input type"text" name"username"> 密码<input type"password" name"password&quo…

手动从0搭建ABP框架-ABP官方完整解决方案和手动搭建简化解决方案实践

本文主要讲解了如何把ABP官方的在线生成解决方案运行起来&#xff0c;并说明了解决方案中项目间的依赖关系。然后手动实践了如何从0搭建了一个简化的解决方案。ABP官方的在线生成解决方案源码下载参考[3]&#xff0c;手动搭建的简化的解决方案源码下载参考[4]。一.ABP官方在线生…

Java捕获并处理线程失败抛出的异常

使用 UncaughtExceptionHandler 示例代码如下&#xff1a; Thread.UncaughtExceptionHandler handler new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread th, Throwable ex) {System.out.println("Uncaught exception: " ex);} }; Th…

【ArcGIS微课1000例】0044:ArcGIS使用山体阴影显示DEM的3种方法

本文讲解了ArcGIS使用山体阴影显示DEM的3种方法:“影像分析”窗口、使用山体阴影效果和山体阴影效果工具的不同之处。 文章目录 一、“影像分析”窗口二、使用山体阴影效果三、山体阴影工具一、“影像分析”窗口 使用山体阴影显示 DEM 的方法有两种。最简单并且最具交互效果的…