Skip to Content
总览

C#/.NET + Avalonia 上位机开发学习路线

这套文档的唯一主目标

这套文档首先服务于上位机桌面软件开发,不是先学 Web,也不是只学几个 Avalonia 控件。

学习顺序固定为:

先把 C# 语言基础学扎实 -> 再理解 .NET 的项目、运行时、异步、IO、异常和测试 -> 再熟练掌握 Avalonia、XAML 和 MVVM -> 再学习设备通信、实时采集、报警、趋势图和工业协议 -> 最后具备独立开发、调试、发布上位机软件的能力

Web 框架可以以后再学。C#、面向对象、集合、异步、网络、日志、测试和工程结构扎实以后,再学习 ASP.NET Core 会快很多,但它不是当前主线。

什么是上位机开发

上位机软件通常运行在 Windows、Linux 或工控机上,负责和设备通信、显示状态、发送控制命令、记录数据、展示趋势并处理报警。

一个合格的上位机开发者需要同时具备:

能力需要掌握什么在项目里解决什么问题
C# 语言类型、判断、循环、方法、类、接口、集合、泛型把业务规则正确写出来
.NET 基础项目、程序集、异常、Task、线程、IO、序列化让程序稳定运行并处理外部数据
桌面界面Avalonia、XAML、布局、控件、样式做出操作界面和状态页面
MVVMBinding、Command、ViewModel、DI避免界面代码和业务代码混成一团
数据处理LINQ、JSON、CSV、SQLite、缓存保存采集数据、配置和操作记录
设备通信串口、TCP/UDP、Modbus、OPC UA和 PLC、仪表、传感器等设备交换数据
实时能力后台任务、取消、超时、并发、队列持续采集数据且不让界面卡死
工业功能设备状态、报警、趋势图、权限、审计做出真正可用的上位机功能
工程交付日志、测试、配置、打包、升级、诊断把程序交给现场使用并能排查问题

21 周分成两个阶段

Week 01-12 是第一阶段:C#/.NET 基础 + Avalonia 桌面应用基础

完成以后应该能够:

  • 独立创建、运行和调试 C# 项目。
  • 使用类、接口、集合、LINQ、异常和异步组织业务代码。
  • 使用 Avalonia、XAML、Binding、Command 和 MVVM 开发桌面界面。
  • 完成表单、列表、搜索、增删改查和本地数据保存。
  • 加入日志、测试、配置、导入导出、打包和验收。

Week 13-21 是第二阶段:设备通信 + 实时采集 + 工业上位机项目。完成串口、TCP/UDP、Modbus、OPC UA、采集引擎、SQLite、趋势报警、工业界面和现场交付后,才形成完整的上位机基础能力。

每天怎么使用文档

  • 每天建议学习 2-4 小时,基础薄弱时不要追求速度。
  • 左侧目录按周、按天学习,不跳过 Week 01-04 的 C# 基础。
  • 每个例子亲手敲一遍,不能只复制,也不能只看。
  • 代码运行后必须对照输出,再主动修改一个值、条件或参数。
  • 每周完成阶段检查,不通过就回到对应 Day 页面补练。

每天固定闭环:

先理解“是什么”和“有几种” -> 敲最小例子并运行 -> 对照输出逐行理解 -> 再敲多个相似例子 -> 把知识组合成完整程序 -> 故意改错并阅读报错 -> 不看答案完成当天作业

文档里的例子必须达到什么标准

每个新知识点不能只有一段大代码,至少要包含:

  1. 一句大白话解释。
  2. 一个只展示当前知识点的最小例子。
  3. 两到三个不同输入或不同场景的相似例子。
  4. 完整可运行代码和明确文件名。
  5. 控制台输出、界面效果或数据变化说明。
  6. 一个主动修改参数的练习。
  7. 一个常见错误和对应修法。

先抓住 6 条主线

主线对应内容最终要会什么
C# 语法变量、类型、判断、循环、方法独立写出输入、校验、计算和输出
数据处理数组、集合、LINQ、泛型处理采集值、设备列表、搜索和统计
程序结构类、对象、接口、事件、异常把设备、通信、服务和界面职责拆开
.NET 能力文件、JSON、异步、日志、测试、DI处理配置、后台任务、排错和验证
AvaloniaXAML、控件、样式、MVVM开发稳定、可维护的桌面界面
上位机进阶通信、采集、报警、趋势、发布从普通桌面应用进入工业上位机项目

21 周总路线图

这套文档不是把知识点随便排成 21 周,而是按项目能力逐层加上去。

Week 01:会写最小 C# 程序 -> Week 02:会处理多条数据 -> Week 03:会把业务写成类和对象 -> Week 04:会处理等待、失败、取消和批量任务 -> Week 05:会把项目拆成可维护结构 -> Week 06:会打开桌面窗口并处理输入 -> Week 07:会用 MVVM 管理界面状态 -> Week 08:会整理界面重复和显示状态 -> Week 09:会保存文件、处理大列表、发布程序 -> Week 10:会做商品管理 MVP -> Week 11:会补权限、审计、导入导出、后台任务 -> Week 12:会测试、写文档、发布、验收和交付 -> Week 13:会分析字节报文并完成串口收发 -> Week 14:会处理 TCP/UDP、粘包拆包、心跳重连 -> Week 15:会读写 Modbus 线圈和寄存器 -> Week 16:会读写和订阅 OPC UA 节点 -> Week 17:会设计多设备实时采集引擎 -> Week 18:会用 SQLite 保存和查询历史数据 -> Week 19:会做实时趋势、历史趋势和报警中心 -> Week 20:会做可长期运行的 Avalonia 工业操作台 -> Week 21:会测试、诊断、升级、回滚和现场联调

如果某一周卡住,不要跳过去。先看这周最后的 阶段检查,确认卡住的是语法、数据、结构、界面、项目还是交付。

每天固定学习法

阶段建议时间要做什么
学概念20-30 分钟先弄懂是什么、有几种、为什么需要
敲小例子40-60 分钟每个最小例子亲手敲并运行
敲完整例子60-90 分钟把多个知识点组合成一个程序
改代码20-40 分钟改参数、条件、字段和输出再运行
排错误10-30 分钟故意制造一个错误并读懂报错
做作业30-60 分钟先不看答案独立完成,再检查

每天结束前必须能回答 3 个问题:

  1. 今天这个知识解决什么问题?
  2. 最小代码怎么写?
  3. 常见错误出现时先看哪里?

每周必须做一次验收

每天学完只是输入信息,每周验收才是确认能力。

每一周最后都有 阶段检查 页面,使用方法固定:

  1. 先看“本周学习地图”,确认这一周的主线。
  2. 再做“本周自测项目”,从空项目开始写。
  3. 写完后对照“通过标准”或“最低通过线”。
  4. 没通过就回到对应 Day 页面补,不要直接进入下一周。

每周自测项目对应的是一条递进路线:

自测项目证明的能力
Week 01控制台商品收银台C# 基础输入、校验、计算、输出
Week 02商品 CSV 清洗器集合、LINQ、异常、文本清洗
Week 03订单域模型类、封装、接口、事件
Week 04异步文件批处理器Task、并发、取消、异常汇总
Week 05工程化商品服务分层、DI、配置、日志、测试
Week 06Avalonia 商品窗口XAML、控件、表单、列表
Week 07MVVM 商品管理页面Binding、Command、ViewModel 状态
Week 08商品卡片组件Style、DataTemplate、UserControl
Week 09可发布的数据工具性能、文件、持久化、发布
Week 10商品管理 MVP需求、数据层、服务层、界面闭环
Week 11商品管理增强版权限、审计、导入导出、后台任务
Week 12最终交付包测试、文档、版本、验收、交付
Week 13串口调试助手字节、帧、校验、SerialPort、取消
Week 14网络调试助手TCP、UDP、拆包、心跳、重连
Week 15Modbus 监控器线圈、寄存器、字序、RTU/TCP
Week 16OPC UA 监控器节点、读写、订阅、质量码、安全
Week 17多设备采集服务驱动、调度、队列、缓存、UI 节流
Week 18历史数据库SQLite、批量写入、查询、备份
Week 19趋势与报警中心曲线、降采样、报警生命周期
Week 20工业操作台生命周期、UI 线程、联锁、安全写入
Week 21毕业项目测试、诊断、权限、升级、现场联调

Week 01-12 使用“商品管理”作为部分基础练习载体,是因为名称、价格、库存容易理解,可以把注意力放在 C# 和 Avalonia 本身。Week 13 开始直接进入设备、点位、通信和报警:

Product -> Device Price -> CurrentValue Stock -> DeviceStatus ProductService -> DeviceService JSON 保存 -> SQLite 采集记录 后台任务 -> 持续采集循环 普通提示 -> 设备报警 列表页面 -> 设备监控页面

因此第一阶段不是在学习“商品系统行业知识”,而是在训练以后做设备软件必须使用的程序结构。

不能跳的基础

重点过关标准
Week 01C# 基础语法能独立写控制台商品小程序
Week 02集合和数据处理能保存多条商品并搜索、排序、统计
Week 03类、接口、事件能把商品、仓储、服务拆成类
Week 04异步、任务、并发能写文件读取、批处理、取消和异常处理

如果 Week 01-04 没打牢,后面 Avalonia 会变成只是在抄界面代码。

Avalonia 和 MVVM 先看这条线

MainWindow.axaml -> 绑定 ViewModel 属性和命令 -> MainWindowViewModel.cs 处理状态和动作 -> Service 处理业务规则 -> Repository 处理数据保存

只要这条线清楚,Avalonia 就不是一堆陌生文件。

卡住时按这个顺序处理

  1. 看终端第一条错误,不要先看最后一条。
  2. 看错误里有没有文件名和行号。
  3. 如果是 C# 报错,先检查括号、分号、类型、命名。
  4. 如果是 XAML 报错,先检查标签闭合、属性名、命名空间。
  5. 如果是绑定没效果,先检查 ViewModel 属性名、DataContextCommand 名。
  6. 如果是运行结果不对,用 Console.WriteLine 或断点看变量值。
  7. 如果是保存失败,先打印文件路径,再检查权限和文件内容。

学到什么程度算过关

阶段过关项目
Week 01 后控制台商品总价计算器
Week 02 后控制台商品列表管理
Week 03 后分层商品服务小项目
Week 04 后异步文件批处理工具
Week 07 后Avalonia 商品表单和列表
Week 10 后商品管理 MVP
Week 12 后带文档、测试、发布说明的交付包
Week 15 后串口、TCP 和 Modbus 设备监控器
Week 19 后带历史趋势和完整报警生命周期的上位机
Week 21 后能测试、诊断、发布、升级和现场联调的毕业项目

Week 13-21:真正进入上位机开发

完成 Week 01-12 后,不先跳到 Web,继续按左侧 Week 13-21 学习:

串口基础 -> TCP/UDP 网络通信 -> Modbus RTU / Modbus TCP -> OPC UA 节点读写与订阅 -> 周期采集、超时、重连和取消 -> SQLite 历史数据 -> 实时曲线和历史趋势 -> 设备状态和报警 -> 权限、审计、日志和配置 -> 打包、部署、现场诊断

第二阶段已经按下面的项目递进加入文档:

阶段项目必须掌握的能力
通信入门串口调试助手COM 口、波特率、收发、十六进制显示
网络通信TCP 客户端调试工具连接、发送、接收、断线、重连
工业协议Modbus 设备监控器站号、功能码、寄存器、轮询、异常码
信息模型OPC UA 设备监控器节点、读写、订阅、质量码、证书
实时采集多设备采集服务后台循环、取消、超时、并发和队列
数据记录SQLite 历史数据库表设计、批量写入、时间范围查询
数据展示实时曲线和历史趋势采样、刷新频率、数据窗口、性能控制
报警系统设备报警中心阈值、级别、确认、恢复和记录
综合项目Avalonia 工业监控上位机MVVM、通信、采集、趋势、报警、日志、发布

判断能不能进入第二阶段:不看旧代码,独立完成一个 Avalonia CRUD 桌面应用,并能解释 View、ViewModel、Service、Repository、异步保存和异常处理各自负责什么。

Web 放在什么时候学

当你已经能独立完成本地上位机项目后,再学习 ASP.NET Core Web API,用于远程监控、数据上传、账号中心或多客户端共享。那时 C#、异步、DI、日志、序列化和分层已经熟悉,Web 只是在这些基础上增加 HTTP 和服务端运行方式。