【工业自动化平台】 工程设计-项目分层目录设计(1)
【工业自动化平台】 工程设计-项目分层目录设计1总想做点什么方向UIWPF/WinFormsMVVMApplication只负责插件生命周期和应用协调设备Domain按插件拆分Infrastructure基础服务Driver底层通信驱动EventBus / CommandBus / DataBusCore定义契约Common工具程序集设计工程目录如下Industrial.Platform.sln │ ├── 01.Core 核心契约层 │ │ │ └── Platform.Core │ │ │ ├── Interfaces 接口定义 │ │ ├── IPlugin.cs │ │ ├── IPluginManager.cs │ │ ├── IEventBus.cs │ │ ├── ICommandBus.cs │ │ ├── IDataBus.cs │ │ ├── IRepository.cs │ │ └── IDriver.cs │ │ │ ├── Messages 消息契约 │ │ ├── EventMessage.cs │ │ ├── CommandMessage.cs │ │ └── DataMessage.cs │ │ │ ├── Events 系统事件 │ │ ├── DeviceStateEvent.cs │ │ ├── AlarmEvent.cs │ │ └── PluginStateEvent.cs │ │ │ ├── Models 基础模型 │ │ ├── DeviceInfo.cs │ │ ├── PluginInfo.cs │ │ └── StateInfo.cs │ │ │ └── Exceptions │ │ ├── 02.Common 通用工具层 │ │ │ └── Platform.Common │ │ │ ├── Extensions │ │ ├── StringExtensions.cs │ │ └── ObjectExtensions.cs │ │ │ ├── Helpers │ │ ├── JsonHelper.cs │ │ ├── ReflectionHelper.cs │ │ └── DateTimeHelper.cs │ │ │ ├── Serialization │ │ │ ├── Threading │ │ │ └── Result │ │ ├── 03.Application 应用协调层 │ │ │ └── Platform.Application │ │ │ ├── Services │ │ ├── PluginApplicationService.cs │ │ └── DeviceApplicationService.cs │ │ │ ├── Commands │ │ │ └── DTO │ │ ├── 04.Runtime 平台运行时 │ │ │ └── Platform.Runtime │ │ │ ├── PluginManager │ │ ├── PluginLoader.cs │ │ └── PluginContainer.cs │ │ │ ├── ServiceManager │ │ │ ├── AssemblyLoader │ │ │ └── Lifecycle │ │ ├── 05.Infrastructure 基础设施层 │ │ │ └── Platform.Infrastructure │ │ │ ├── EventBus │ │ ├── LocalEventBus.cs │ │ └── RabbitMQEventBus.cs │ │ │ ├── CommandBus │ │ │ ├── DataBus │ │ │ ├── Persistence │ │ ├── SQLite │ │ ├── EFCore │ │ └── Repository │ │ │ ├── Logging │ │ │ ├── Configuration │ │ │ ├── Cache │ │ │ └── FileStorage │ │ ├── 06.Driver 底层驱动层 │ │ │ └── Platform.Driver │ │ │ ├── Abstractions │ │ ├── IPlcDriver.cs │ │ ├── ICameraDriver.cs │ │ └── IMotionDriver.cs │ │ │ ├── PLC │ │ ├── Siemens │ │ ├── Mitsubishi │ │ ├── Omron │ │ └── Modbus │ │ │ ├── Motion │ │ ├── Servo │ │ └── Robot │ │ │ ├── Camera │ │ ├── Basler │ │ └── Hikvision │ │ │ ├── SECS │ │ ├── HSMS │ │ ├── SECS-II │ │ └── GEM │ │ │ └── Network │ ├── TCP │ ├── UDP │ └── SerialPort │ │ ├── 07.Domain.Plugin 设备领域插件层 │ │ │ ├── Tester.Plugin │ │ │ │ │ ├── Domain │ │ ├── StateMachine │ │ ├── Process │ │ ├── Recipe │ │ ├── Alarm │ │ └── PluginEntry.cs │ │ │ │ │ ├── Robot.Plugin │ │ │ ├── SMT.Plugin │ │ │ ├── Vision.Plugin │ │ │ └── SECS.Plugin │ │ ├── 08.UI 表现层 │ │ │ ├── Platform.UI.WPF │ │ │ │ │ ├── Views │ │ ├── Controls │ │ ├── Themes │ │ └── Resources │ │ │ │ │ └── Platform.UI.WinForms │ │ ├── 09.ViewModels MVVM层 │ │ │ └── Platform.ViewModels │ │ │ ├── MainViewModel.cs │ ├── DeviceViewModel.cs │ ├── AlarmViewModel.cs │ └── PluginViewModel.cs │ │ └── 10.Host 主程序 Platform.Client.exe │ ├── Startup ├── DI注册 ├── Configuration └── App.xaml依赖方向严格控制Host | ↓ UI | ↓ ViewModel | ↓ Application | ↓ Domain.Plugin | ↓ Core Infrastructure ─────→ Core Driver ─────────────→ Core Runtime ────────────→ Core Common ← 所有层引用各层最终职责层职责示例Core定义规则IPlugin、IEventBusCommon通用工具Json、反射Application应用协调启动插件Runtime运行管理加载DLLInfrastructure公共能力SQLite、日志Driver硬件通信PLC、SECSDomain.Plugin设备大脑状态机、工艺ViewModel界面逻辑Command、BindingUI显示WPF/WinFormsHost组装启动DI、配置这个结构更适合你的目标“工业设备上位机平台化开发”后续增加新设备 → 新 Domain.Plugin新PLC → 新 Driver新通信 → 新 Infrastructure新界面 → 新 UI主程序无需修改。下面对每一层进行详细说明。整体定位Host负责组装系统Runtime负责运行插件Application负责协调Domain Plugin负责设备逻辑Driver负责硬件通信Infrastructure提供平台能力Core定义契约。1. Core 核心契约层定位Core是整个系统的公共协议层。它不包含任何业务实现只定义谁和谁通信模块之间遵循什么规则数据如何传递类似操作系统的 API 定义。主要内容项目Platform.Core结构Core ├── Interfaces ├── Messages ├── Events ├── Commands ├── Models └── Exceptions1.1 Interfaces接口定义系统能力。例如插件publicinterfaceIPlugin{stringId{get;}stringName{get;}TaskInitializeAsync();TaskStartAsync();TaskStopAsync();}所有设备插件实现PLC.Plugin Robot.Plugin Vision.Plugin1.2 EventBus接口publicinterfaceIEventBus{voidPublishT(Tmessage);voidSubscribeT(ActionThandler);}Core只定义“有消息机制”不关心内存事件RabbitMQMQTT1.3 Driver接口例如publicinterfaceIPlcDriver{TaskConnect();TaskDisconnect();TaskWrite(stringaddress,objectvalue);}实现SiemensDriver MitsubishiDriver1.4 消息模型例如设备状态publicclassDeviceStateChangedEvent{publicstringDeviceId{get;set;}publicstringState{get;set;}}用于PLC Plugin 发布 ↓ UI显示2. Common 通用工具层定位开发辅助库。原则谁都可以使用但不能包含业务。项目Platform.Common内容2.1 扩展方法例如publicstaticclassStringExtensions{publicstaticboolIsNull(thisstringvalue){returnstring.IsNullOrEmpty(value);}}2.2 序列化例如JsonHelper XmlHelper BinarySerializer用途配置文件通信数据缓存2.3 反射工具插件加载AssemblyHelper.Load()用于扫描Plugins目录 加载DLL2.4 Result统一返回ResultT统一成功 失败 错误信息 数据3. Application 应用协调层定位Application不是设备业务。你的设计只负责插件开启、关闭、协调。项目Platform.Application职责3.1 插件管理调用例如用户点击启动设备流程ViewModel ↓ ApplicationService ↓ PluginManager ↓ Plugin.Start()代码publicclassPluginApplicationService{privatereadonlyIPluginManagermanager;publicTaskStart(stringplugin){returnmanager.Start(plugin);}}3.2 应用状态管理例如系统启动 插件加载 插件运行 插件停止3.3 不包含❌ PLC逻辑❌ Recipe流程❌ 设备状态机这些属于 Domain Plugin。4. Runtime 运行时层定位整个软件的操作系统。负责DLL加载插件生命周期DI容器服务管理项目Platform.Runtime4.1 PluginManager核心publicclassPluginManager{Load();Start();Stop();}流程启动程序 ↓ 扫描 Plugins ↓ 找到 xxx.Plugin.dll ↓ 反射创建对象 ↓ 注册DI ↓ 启动插件4.2 AssemblyLoader负责Assembly.Load()支持动态加载插件隔离升级5. Infrastructure 基础设施层定位提供技术能力。不包含设备业务。项目Platform.Infrastructure5.1 EventBus实现Core:IEventBusInfrastructure:LocalEventBus RabbitMQEventBus例如单机内存事件分布式RabbitMQ5.2 SQLite负责数据保存查询ORM例如保存报警记录 运行日志 Recipe参数结构Persistence ├── DbContext ├── Repository └── Migration5.3 Logger例如Serilog NLog统一Debug Info Error5.4 Configuration负责设备配置 系统配置 插件配置例如{PLC:{IP:192.168.1.10}}6. Driver 驱动层定位连接真实硬件。属于软件到设备的最后一公里。项目Platform.DriverPLC结构Driver.PLC ├── Siemens ├── Mitsubishi ├── Omron └── Modbus负责TCP 协议 数据转换 读写Camera例如Basler SDK Hikvision SDK Cognex SDKMotion例如Servo Robot AxisSECS拆分HSMS SECS-II GEM7. Domain.Plugin 设备领域插件层定位这是设备的“大脑”。每一种设备一个插件。例如Tester.Plugin.dll Robot.Plugin.dll内部Tester.Plugin ├── Domain ├── StateMachine ├── Process ├── Recipe ├── Alarm └── PluginEntryDomain定义设备对象Tester Wafer CarrierStateMachine例如Idle ↓ Ready ↓ Run ↓ Complete ↓ ErrorProcess工艺流程例如Load Align Test UnloadRecipe参数温度 速度 时间8. ViewModel层定位MVVM中的VM。连接UI ↓ ViewModel ↓ Application负责数据绑定CommandUI状态例如StartCommand StopCommand ResetCommand不负责❌ PLC通信❌ 数据库❌ 设备控制9. UI层定位显示。支持WPF WinForms负责页面控件样式用户操作不包含业务代码 PLC代码 数据库代码10. Host主程序定位系统入口。负责启动所有模块。流程Main() ↓ 创建DI ↓ 加载配置 ↓ 初始化Runtime ↓ 加载插件 ↓ 显示UI最终数据流控制流用户 ↓ UI ↓ ViewModel ↓ Application ↓ Runtime ↓ Domain Plugin ↓ Driver ↓ 设备状态流设备 ↓ Driver ↓ Domain Plugin ↓ EventBus ↓ ViewModel ↓ UI数据保存设备 ↓ Plugin ↓ Repository ↓ SQLite最终架构定位总结层一句话Core定义规则Common提供工具UI显示界面ViewModel连接界面和系统Application协调应用Runtime管理插件运行Domain Plugin设备大脑Infrastructure提供平台能力Driver连接硬件Host启动系统这个分层适合构建EAP、SCADA、半导体设备控制软件、智能制造上位机平台。

相关新闻

流放之路交易助手终极指南:Awakened PoE Trade 5分钟快速上手

流放之路交易助手终极指南:Awakened PoE Trade 5分钟快速上手

流放之路交易助手终极指南:Awakened PoE Trade 5分钟快速上手 【免费下载链接】awakened-poe-trade :heavy_dollar_sign: :hammer: Path of Exile app for price checking 项目地址: https://gitcode.com/gh_mirrors/aw/awakened-poe-trade Awakened PoE Tra…

2026/8/1 17:14:44阅读更多 →
告别重复操作:MAA明日方舟自动化助手5分钟上手指南

告别重复操作:MAA明日方舟自动化助手5分钟上手指南

告别重复操作:MAA明日方舟自动化助手5分钟上手指南 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcod…

2026/8/1 17:14:44阅读更多 →
Vazirmatn终极指南:掌握波斯语/阿拉伯语开源字体开发与应用

Vazirmatn终极指南:掌握波斯语/阿拉伯语开源字体开发与应用

Vazirmatn终极指南:掌握波斯语/阿拉伯语开源字体开发与应用 【免费下载链接】vazirmatn Vazirmatn is a Persian/Arabic font. وزیرمتن یک فونت فارسی/عربی است 项目地址: https://gitcode.com/gh_mirrors/va/vazirmatn 在跨语言数…

2026/8/1 17:14:44阅读更多 →
魔兽争霸3帧率解锁与性能优化全攻略:告别60FPS限制,畅享300FPS流畅体验

魔兽争霸3帧率解锁与性能优化全攻略:告别60FPS限制,畅享300FPS流畅体验

魔兽争霸3帧率解锁与性能优化全攻略:告别60FPS限制,畅享300FPS流畅体验 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为…

2026/8/1 18:27:56阅读更多 →
论文降AI率工具对比:千笔与锐智的实测分析

论文降AI率工具对比:千笔与锐智的实测分析

1. 项目背景与核心需求 作为一名经历过论文写作全流程的过来人,我深刻理解本科生在论文定稿阶段最焦虑的两个问题:查重率和AI检测率。去年帮学弟学妹修改论文时,发现市面上突然涌现出大量"降AI率"工具,其中"千笔降…

2026/8/1 18:27:56阅读更多 →
G-Helper终极指南:彻底告别华硕官方臃肿控制软件

G-Helper终极指南:彻底告别华硕官方臃肿控制软件

G-Helper终极指南:彻底告别华硕官方臃肿控制软件 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertb…

2026/8/1 18:27:56阅读更多 →
AI推动工业智能化转型~系列文章05:特征工程:工业 AI 的第一生产力

AI推动工业智能化转型~系列文章05:特征工程:工业 AI 的第一生产力

第 5 期 | 特征工程:工业 AI 的第一生产力工业 AI 界有一句被反复验证的箴言:“特征决定模型上限,算法只是逼近这个上限。” 在工业表格数据上,一个精心设计的特征体系可以让线性回归跑赢草率建模的深度网络。本期给出工业特征工程…

2026/8/1 18:27:56阅读更多 →
如何在5分钟内让Mac运行Windows应用:Whisky终极指南

如何在5分钟内让Mac运行Windows应用:Whisky终极指南

如何在5分钟内让Mac运行Windows应用:Whisky终极指南 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 还在为Mac无法运行Windows专属软件而烦恼吗?&#x1f914…

2026/8/1 18:27:56阅读更多 →
Python赛车数据解析与可视化:从IMSA车载视频到交互式仪表盘

Python赛车数据解析与可视化:从IMSA车载视频到交互式仪表盘

在赛车模拟和游戏开发领域,车载视频的数据解析与可视化是一个极具挑战性的技术方向。本文将以IMSA赛事中冠军车雷克萨斯RC F GT3的全场车载视频为案例背景,完整讲解如何通过Python实现赛车数据的提取、分析与可视化展示。无论你是赛车游戏开发者、数据分…

2026/8/1 18:25:55阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →