2020年总结:互联网思维下的工业软件开发
2020年的年终总结像往年一样如期而至,今年是个特殊的年份,疫情爆发,全国人民众志成城,支援武汉,把武汉疫情完美控制,接下来经历了一个整年的抗疫生活,见证了一个个门店的倒下、站起,一个个公司申请破产、又一个个公司申请登记注册。这一个年,见证了太多的悲伤、凄凉也感受到了太多的感动于欢乐,2020年注定在历史上留下浓墨重彩的一个纪年
2020年对于我,一个勤奋耕耘的小码农,也是意味深重的一年,因为经历的一些事,读了一些书,对我的认知发生了更改。
写下总结的时候,也给自己留个寄语
"希望十年后,我依然能够坚持在写博的这条路上
言归正传,总结一下今年在技术上学习的内容以及个人的心得
从Framework Winfrom 转型 .NET CORE5.0 WPF
背景
作为一个.NET起家的桌面应用程序员,常年的Winfrom开发,编码的日常就是,控件拖拽、CRUD等相关工作。 Winform一直是Microsoft的大本营,在网页端是被Java甩下十几条街了,但是随着 .Net Core的发布,GitHub上的 .NET CORE的开源,使得 .NET CORE 愈发强劲。在 .NET CORE5.0 发布中,增加了3.x之前一直没有的Winfrom 平台、WPF平台,追随Microsoft的脚步,早早在2019Preview内测的时候,转战到 .NET CORE5.0。
原因
从Winfrom转WPF的起因还是因为数字可视化概念的提升,传统的Winfrom虽然在功能性上无比优越,但是随着用户对视觉效果要求的日益增强,WPF平台下的开发成为了必然渠道。
WPF开发按照MVVM框架,将UI和业务逻辑分开,当然在Winfrom中同样适配,但是这个概念没有像WPF开发中提出的这么强烈
过程
1、设计规范
谈到数字可视化的概念,不得不提的就是设计规范,TOB虽然一直而言,对审美的要求不是太高,但是随着同类型产品的日益美化,在竞争的驱使下,美,成为了软件不可或缺的一环节
在市面上面对琳琅满目的设计规范,在这里推荐一款我应用的非常好用的设计规范
MaterialDesign,该设计规范提供的样式大气磅礴,实用性很强
GitHub开源链接
转场效果
细节动画
2、MVVM框架选择
市面上有多种的开源的MVVM框架,但是每个框架都有各自的特色,列出如下,本人在深入了解比较后使用MVVM Light Toolkit 和Microsoft Prism两种,MVVMLight 是轻量级应用,应对小型应用开发足以,Prism框架前身是Composite Application Guidance for WPF and Silverlight,网上大量资料说复杂,其实理解进去,很简单,这里有一篇关于Prism的介绍,看完基本可以入门了。
MVVM框架罗列如下:
- MVVM Light Toolkit
- Microsoft Prism
- Calcium SDK
- Caliburn
- Caliburn
- Silverlight.FX
- nRoute:
有了设计规范、MVVM框架,WPF的开发在属性Xaml语言的基础上,就可以扬帆起航了。
GUI胖客户端瓶颈问题解决
背景
应用于工业领域的GUI,从Winfrom转到WPF,在视觉效果上取得了很大成功,但是仅仅视觉效果的提升,那是远远不够的。熟悉工业领域的小伙伴们都知道,OPC是工业领域应用在广泛不过的自动化控制协定,OPCServer 点的订阅数量有瓶颈,客户端订阅数量的增加会影响到OPCServer的性能,过多的订阅会导致OPCServer宕机。同时,胖客户GUI应用于工业领域,对数据的刷新要去很高,意味着数据库轮询的频次较高(数据库主动推送的问题,我们可以放在其他地方讨论)
解决方案
传统的CS很少有像BS那样前后端分离明明白白的,传统CS中Client与Server部分分离,或者少分离的问题在这里就凸显尖锐化。
为解决这种情况,Server端分离,采用多个客户端访问一个Server,这个Server作为OPCServer的代理服务器,降低OPCServer点的订阅数成为了解决方案的核心。
做Server,常见的Webserver、WCF是可以选择的,但是当下大Web的趋势,使得我们按照Restful API的方式建立接口,更为值得推荐
使用 .NET CORE5.0 创建Web API 成了不二途径。而使用 .Net Core 做Server,数据的压力可以通过互联网常用的负载均衡、微服务、Grpc通讯、MQ、Dock、K8s等相关技术的引入,.NetCore 完美支持这些应用方式。
技术介绍
使用 .Net Core 创建Web API 和常用的CS创建工程还是有蛮多区别,通过下述两个文档说明基本可以入门 .NET CORE.
具备入门知识以后,.NET CORE 开发不得不提的一个框架ABP,ABP是ASP .NET Boilerplate的简称,ABP是一个开源且文档友好的应用程序框架。ABP不仅仅是一个框架,它还提供了一个最徍实践的基于领域驱动设计(DDD)的体系结构模型。
负载均衡、Dock、K8s涉及部署技术
微服务、Grpc、MQ编码实现技术,ABP提供了框架,为这些应用开发大大缩减了时间
通过如下的ABP基础知识,可以带你快速ABP入门
技术突破
在这边文章发表之前,技术介从来没有使用过 MaterialDesign + Prsim + ABP 三大框架结合的开发工作,作为尝螃蟹第一人,很开心将今年的技术融合在这里与大家分享,希望我的尝试,能够帮助到大家!