核心架构 (Core Architecture)
约 558 字大约 2 分钟
2026-05-19
概述
Core 模块是 UniCon 的心脏,定义了系统的全部契约、模型结构、基础自愈服务、统一缓存与 IOC 注册入口。
关键功能
- 接口定义 (
IUniconDriver): 统一南向驱动契约,涵盖即时读写、批量读写、探活、异步订阅、状态变更事件与运行统计查询。 - 消息模型:
UniconRequest/UniconResponse<T>实现结构化交互;DataValue<T>携带SourceTimestamp(PLC 时间)、ServerTimestamp(网关到达时间)、DataStatus与QualityCode(OPC UA 兼容质量码)。 - 驱动注册中心 (
IDriverRegistry): 全系统内驱动实例的统一共享、动态查询与状态轮询。 - 连接自愈管理器 (
IConnectionManager): 全生命周期托管所有驱动的物理连接,与驱动内置 Watchdog 指数退避重连机制联动。 - 对象-设备映射引擎 (
OdmEngine): 类 ORM 设计,通过强类型特性将业务实体属性自动映射到设备寄存器地址,免硬编码动态读写。 - 扫描调度引擎 (v2):
ScanGroupRegistry: 订阅注册时按(ScanRate, ScanMode)预分组,完成地址去重。ScanScheduler: 基于最小等待时间动态调度到期ScanGroup,替代while(true)+Delay(50)全量扫描。NotificationDispatcher:Channel<T>异步分发,独立线程消费,Callback 异常隔离不影响扫描线程。IScanStrategy: 策略模式替代if(ScanMode==...)分支,内置ExceptionBased(死区支持)与Polled两种实现。
- Tag 元数据 (
TagMetadata): 描述 Tag 的数据类型、读写权限、工程单位、线性缩放与死区阈值。 - 运行统计 (
ScanStatistics): 以Interlocked无锁方式采集每个ScanGroup的扫描次数、通知次数、平均读取耗时与错误率。 - 传输层抽象 (
ITransport): 将字节收发与协议解析分离,支持并发读/独占写,锁粒度下沉至 Transport 层。 - 可插拔缓存 (
IUniconCacheProvider): DI 注入(非 static),内置MemoryCacheProvider,可替换为 Redis 等分布式实现。 - 开箱即用集成 (
ServiceCollectionExtensions): 一键式AddUniCon()扩展,以单例模式将注册中心、连接管理器、缓存等接入 IOC 容器。 - 连接构建器 (
ConnectionStringBuilder): 强类型、流式 API 动态组装各协议连接字符串。
