MAS.Communication
1.2.0
dotnet add package MAS.Communication --version 1.2.0
NuGet\Install-Package MAS.Communication -Version 1.2.0
<PackageReference Include="MAS.Communication" Version="1.2.0" />
<PackageVersion Include="MAS.Communication" Version="1.2.0" />
<PackageReference Include="MAS.Communication" />
paket add MAS.Communication --version 1.2.0
#r "nuget: MAS.Communication, 1.2.0"
#:package MAS.Communication@1.2.0
#addin nuget:?package=MAS.Communication&version=1.2.0
#tool nuget:?package=MAS.Communication&version=1.2.0
MAS.Communication
✨ 项目特性
一个面向工业自动化场景的 多协议通信管理框架
- 多协议统一抽象:Modbus TCP、MC Protocol、S7、OPC UA、WebSocket 等协议采用一致的生命周期与实例管理模型
- 多实例管理:支持同协议多实例并存,适用于一机多 PLC / 多设备通信场景
- 统一生命周期控制:统一创建、复用、查询与释放通信实例,避免资源失控
- 依赖注入集成:基于
Microsoft.Extensions.DependencyInjection,便于工程化接入 - 易于扩展:可按统一规范扩展新的通信协议,而无需改动上层业务逻辑
- 面向工业项目落地:适用于 WPF、WinUI、后台服务等现代 .NET 应用
🎯 项目定位
MAS.Communication 是一个面向工业自动化的 .NET 通信框架,
用于在现代 .NET 应用中 统一接入、管理和复用多种工业通信协议实例
- 统一的通信抽象
- 多实例与多设备管理能力
- 一致的生命周期控制
- 面向依赖注入的工程化集成方式
适合构建中大型上位机系统中的通信基础设施层
🚀 快速开始
注册服务
在应用启动阶段注册通信服务:
using Microsoft.Extensions.DependencyInjection;
using MAS.Communication;
IServiceCollection services = new ServiceCollection();
services.AddCommunication();
通信配置
在使用具体协议前,需要先提供对应的通信配置对象
框架已经为不同协议提供了统一的配置接口,调用方无需自行定义新的协议配置接口,只需要根据实际项目实现对应接口即可
例如:
- MC 协议使用:
IMcCommunicationConfig - Modbus 协议使用:
IModbusCommunicationConfig - S7 协议使用:
IS7CommunicationConfig - OPC UA(Client)使用:
IOpcUaCommunicationConfig - WebSocket(Client)使用:
IWebSocketCommunicationConfig
以上接口均继承自 ICommunicationConfig,调用方实现对应接口后,即可将配置对象传入 IProtocolManager,用于创建或获取协议实例
OPC UA 保持自己的“节点、会话、订阅、安全”模型,业务能力通过专属接口
IOpcUaProtocol暴露,而非地址读写接口WebSocket 定位为通用传输层,通过专属接口
IWebSocketProtocol暴露文本/二进制消息收发、心跳与自动重连;消息序列化约定、请求-响应匹配等应用层能力由调用方实现
使用方式
通信框架通过IProtocolManager提供统一入口,推荐通过依赖注入方式获取并使用:
public class MainViewModel {
private readonly IProtocolManager _protocolManager;
public MainViewModel(IProtocolManager protocolManager) {
_protocolManager = protocolManager;
}
public async Task RunAsync() {
// 创建配置(示例:Modbus)
IModbusCommunicationConfig config = new ModbusCommunicationConfig {
// 填写你的实际配置
// 例如:Ip、Port、StationNumber 等
};
// 获取或创建协议实例
IProtocol protocol = _protocolManager.GetOrCreate(config);
// 建立连接
await protocol.ConnectAsync();
// 示例:执行读写(具体方法见 API 文档)
// await protocol.ReadAsync(...);
// await protocol.WriteAsync(...);
}
}
- 所有协议实例生命周期由
IProtocolManager统一管理 - 相同配置会自动复用已有连接实例(基于配置唯一标识)
- 支持创建多个不同配置的协议实例(例如多个 PLC)
- 当不再需要使用某个实例时,请调用
IProtocolManager.Remove(IProtocol)或IProtocol.Dispose()方法释放资源 - 不建议多个线程高并发共享一个实例做高频通信,虽然目前来说它们暂时是线程安全的
- 有关更多信息,请参阅API 文档
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Framework | net481 is compatible. |
-
.NETFramework 4.8.1
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.8)
- OPCFoundation.NetStandard.Opc.Ua.Client (>= 1.5.378.156)
- OPCFoundation.NetStandard.Opc.Ua.Configuration (>= 1.5.378.156)
- OPCFoundation.NetStandard.Opc.Ua.Core (>= 1.5.378.156)
- S7netplus (>= 0.20.0)
-
net10.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.8)
- OPCFoundation.NetStandard.Opc.Ua.Client (>= 1.5.378.156)
- OPCFoundation.NetStandard.Opc.Ua.Configuration (>= 1.5.378.156)
- OPCFoundation.NetStandard.Opc.Ua.Core (>= 1.5.378.156)
- S7netplus (>= 0.20.0)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.8)
- OPCFoundation.NetStandard.Opc.Ua.Client (>= 1.5.378.156)
- OPCFoundation.NetStandard.Opc.Ua.Configuration (>= 1.5.378.156)
- OPCFoundation.NetStandard.Opc.Ua.Core (>= 1.5.378.156)
- S7netplus (>= 0.20.0)
-
net9.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.8)
- OPCFoundation.NetStandard.Opc.Ua.Client (>= 1.5.378.156)
- OPCFoundation.NetStandard.Opc.Ua.Configuration (>= 1.5.378.156)
- OPCFoundation.NetStandard.Opc.Ua.Core (>= 1.5.378.156)
- S7netplus (>= 0.20.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
一个面向工业自动化场景的多协议通信管理框架