v1.8.0
约 1169 字大约 4 分钟
2026-05-19
[v1.8.0] - 2026-05-17
变更类型
- Feature (新功能): 动态通讯驱动生命周期管理、通用强类型 RESTful 网关、一键 IoC 依赖注入以及高灵活性物联网对象-设备映射引擎 (UniCon ODM)。
更新内容
- 对象-设备映射引擎 (UniCon ODM - Object-Device Mapper):
- 元数据 Attribute 契约: 设计了
UniconDeviceAttribute(标记实体类,绑定驱动类型、配置及 ID)与UniconAddressAttribute(标记属性,配置物理地址、强类型 Hint 及读写控制)自定义特性。 - 场景 1 (点位表元数据自动扫描生成): 实现了
OdmEngine.GenerateTags<T>()引擎方法,能够自动扫描实体的特性配置,输出属性与工控物理地址的映射架构,消除冗余的手动硬编码映射。 - 场景 2 (实体自适应读写与自愈联动): 实现了
ReadEntityAsync<T>()与WriteEntityAsync<T>()反射读写方法。读取时能自适应检测驱动运行状态,若驱动未加载则可自动从 Attribute 读取物理连接信息并由连接自愈管理器拉起,随后反射批量读取点位值并自动转换为属性类型回填实体。写入时能反射读取非只读属性,强类型转换后物理下发写入。 - 反射动态解耦工厂: 在
OdmEngine中设计了静态委托DriverFactory,外部主程序在启动时自动挂载本地驱动反射实例器(CreateDriverInstance),保证了 Core 核心库对南向具体驱动程序集的零偶合。 - 演示实体与 REST 端点组: 创建了生产级工业实体示例 [ProductionLineEntity.cs](file:///Users/entity/Desktop/Language/CSharp/UniGateway/UniCon/src/UniCon.WebServer/Models/ProductionLineEntity.cs),并在 [Program.cs](file:///Users/entity/Desktop/Language/CSharp/UniGateway/UniCon/src/UniCon.WebServer/Program.cs) 中暴露了
/api/odm/schema及/api/odm/data的 RESTful APIs 进行直观的功能交互。
- 元数据 Attribute 契约: 设计了
- 一键 IoC 依赖注入与契约解耦 (IoC & DI Bootstrapping):
- DIP 依赖倒置重构: 引入了
IConnectionManager契约,将ConnectionManager进行接口级解耦,使其全面符合 Clean Architecture 规范。 - 轻量级 DI 抽象: 核心库引入了
Microsoft.Extensions.DependencyInjection.Abstractions依赖,确保包的轻量级与通用依赖注入的契约完备性。 - 开箱即用扩展: 编写了
ServiceCollectionExtensions.AddUniCon扩展方法,使外部应用(NuGet 消费者)能够通过单行代码一键注入IDriverRegistry、IConnectionManager与OdmEngine(全局单例托管,保障物理 Socket 与自愈 Watchdog 线程的全局唯一性)。 - 解耦构造注入: 重构了
CommunicationService,使其彻底通过构造函数注入IConnectionManager,完全消除了原本在类内部手动new创建物理管理器的紧耦合缺陷。
- DIP 依赖倒置重构: 引入了
- 动态驱动生命周期管理 (Dynamic Driver Management):
- 去除了
CommunicationService中模拟硬编码 PLC 初始化逻辑,实现完全由北向 RESTful API 动态驱动实例化及托管的机制。 - 支持动态添加并拉起
S7、Modbus、OpcUa、Mqtt与OpcUaPubSub五大协议的独立驱动实例,并为其开启自愈守护进程 (Watchdog)。 - 提供了动态注销、断开并销毁驱动的生命周期管理能力,实现完整的物理资源回收。
- 去除了
- 通用强类型反射读写 (Generic Reflective IO):
- 扩展了
IUniconDriver与DriverBase接口,支持暴露ConnectionString属性。 - 开发了基于 C# 反射及泛型推导的高性能通用即时读写引擎,能够自适应北向传入的
typeHint(如int,float,double,bool,string)并映射到对应驱动泛型方法中,无须为每种数据类型重复编写 API。
- 扩展了
- 高性能订阅值事件缓存 (Unified In-Memory Subscription Cache):
- 在
CommunicationService中实现了线程安全的北向数据事件回调缓存字典,订阅事件触发时自动捕获质量戳 (Quality) 和源时间戳 (SourceTimestamp) 并暂存内存。 - 提供了即时获取单个订阅值、或批量拉取全部活动订阅项缓存的 REST 接口。
- 在
与上一版本区别
- 工业 ODM 对象映射能力: 新增了类似 Entity Framework 的工业实体自动映射器,彻底改变了传统通过硬编码点位地址与手动数据转换的工控开发模式,极大地提升了系统的拓展性。
- 高阶解耦与可测性: 通过引入
IConnectionManager接口,外部项目和单元测试能够对连接管理器进行 Mock 测试,极大提升了测试覆盖能力和架构韧性。 - 集成敏捷性: 外部集成人员无须手动配置复杂的单例关系,只需一行
services.AddUniCon()即可拉起全套高性能工业网关核心服务。 - 配置与生命周期自治: 从静态的配置硬编码演化为由 IoC 容器和北向 REST APIs 共同驱动的高容错、动态热插拔网关。
