很多工控开发者做了多年项目,始终停留在「拖控件 + 写事件 + 堆业务代码」的 WinForm 传统模式,项目越大越难维护,改一个功能牵一发动全身。本文从工控场景出发,系统讲透 C# 上位机开发的三大核心架构思想:MVVM 模式、模块化设计、依赖注入解耦。
一、为什么工控上位机一定要做架构设计?
1. 传统开发模式的四大痛点
绝大多数工控上位机项目都逃不过这样的恶性循环:
-
UI 与业务强耦合:所有逻辑写在窗体后台代码里,改个界面要动业务,改个通信要动界面,bug 越改越多
-
代码复用性极差:换个项目、换个 PLC 品牌,通信、业务、UI 全部要重写,积累不下通用资产
-
无法多人协作:一个窗体文件多人改必冲突,新人接手要读几千行代码,上手周期极长
-
测试与维护困难:业务逻辑和 UI 绑死,无法做单元测试,出了问题只能现场断点调试
2. 好架构带来的核心收益
一套优秀的上位机架构,本质是用「分层 + 解耦 + 模块化」解决上述问题:
-
可维护性:分层清晰,改 UI 不影响业务,换设备不影响核心逻辑
-
可扩展性:新增功能通过加模块实现,不改动原有稳定代码
-
可测试性:业务逻辑独立于 UI,可编写单元测试,提前发现问题
-
可复用性:通信、算法、工具类沉淀为通用组件,新项目直接复用
-
可协作性:模块独立拆分,多人并行开发互不干扰
工控项目的核心架构思想,可以总结为三句话:
用 MVVM 分离 UI 与业务,用模块化拆分复杂系统,用依赖注入实现解耦。
二、核心思想一:MVVM 模式,彻底分离 UI 与业务逻辑
1. MVVM 三层结构与职责
MVVM 是 Model-View-ViewModel 的缩写,是 WPF 上位机的标准架构模式,核心是通过数据绑定让 UI 与逻辑自动同步,彻底告别「给控件赋值、读控件值」的传统写法。

核心原则:ViewModel 绝对不能引用任何 UI 控件,View 里尽量不写业务代码。
2. 两大核心机制
(1)属性通知:INotifyPropertyChanged
ViewModel 的属性值变化时,自动通知 UI 刷新,不需要手动去给控件 Text 赋值。
(2)命令绑定:ICommand
把按钮点击、菜单操作等 UI 事件绑定到 ViewModel 里的命令对象,不需要在后台写 Click 事件。
3. 基础基类封装(可直接复用)
ViewModelBase 基类
所有 ViewModel 的父类,封装属性通知机制:


558

被折叠的 条评论
为什么被折叠?



