You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.8 KiB
7.8 KiB
CoreAgent.WebSocketTransport 项目结构说明
项目概述
CoreAgent.WebSocketTransport
是一个基于 .NET 8.0 的 WebSocket 传输层组件,主要负责转发协议数据给上层应用。该项目采用分层架构设计,提供高性能、可扩展的 WebSocket 通信能力。
核心设计理念
1. 单一职责原则
- IWebSocketTransport: 专注于连接管理
- IMessageChannel: 专注于消息队列操作
- IMessageSerializer: 专注于消息序列化
- IMessageMiddleware: 专注于消息处理逻辑
2. 依赖注入
- 所有组件都通过依赖注入容器管理
- 支持配置驱动的服务注册
- 提供灵活的中间件扩展机制
3. 异步编程
- 全异步 API 设计
- 支持取消令牌
- 高效的并发处理
项目结构
CoreAgent.WebSocketTransport/
├── Interfaces/ # 接口定义层
├── Services/ # 服务实现层
├── Models/ # 数据模型层
├── Middleware/ # 中间件层
├── Extensions/ # 扩展方法层
├── Examples/ # 使用示例
├── Dos/ # 文档目录
└── CoreAgent.WebSocketTransport.csproj
详细组件说明
1. Interfaces/ - 接口定义层
IWebSocketTransport.cs
- 职责: WebSocket 连接管理接口
- 功能:
- 连接状态管理
- 心跳监控
- 连接/断开操作
- 设计原则: 单一职责,只负责连接生命周期
IMessageChannel.cs
- 职责: 消息通道抽象接口
- 功能:
- 异步消息读写
- 非阻塞操作支持
- 队列状态监控
- 通道生命周期管理
- 设计原则: 提供统一的消息队列抽象
IMessageChannelManager.cs
- 职责: 消息通道管理器接口
- 功能:
- 多通道管理(发送、接收、优先级)
- 通道状态监控
- 批量操作支持
- 设计原则: 统一管理多个消息通道
IMessageSerializer.cs
- 职责: 消息序列化接口
- 功能:
- 消息序列化/反序列化
- 支持多种数据格式
- 设计原则: 解耦序列化逻辑
IWebSocketConnection.cs
- 职责: WebSocket 连接抽象接口
- 功能:
- 底层连接操作
- 消息发送/接收
- 连接状态管理
- 设计原则: 封装底层 WebSocket 操作
2. Services/ - 服务实现层
WebSocketTransport.cs
- 职责: WebSocket 传输核心实现
- 核心功能:
- 自动连接管理
- 消息批量发送
- 自动重连机制
- 心跳保活
- 中间件管道处理
- 技术特点:
- 多任务并发处理
- 信号量控制连接
- 异常恢复机制
- 性能优化(批量发送、内存池)
WebSocketConnection.cs
- 职责: WebSocket 连接实现
- 功能:
- 底层 WebSocket 操作封装
- 连接状态管理
- 消息收发处理
- 技术特点:
- 线程安全设计
- 异常处理机制
ChannelMessageChannel.cs
- 职责: 基于 Channel 的消息通道实现
- 功能:
- 高性能消息队列
- 异步读写操作
- 容量控制
- 技术特点:
- 使用 System.Threading.Channels
- 支持背压控制
- 内存高效
MessageChannelManager.cs
- 职责: 消息通道管理器实现
- 功能:
- 多通道协调管理
- 优先级消息处理
- 批量操作优化
- 技术特点:
- 通道池管理
- 动态容量调整
- 性能监控
JsonMessageSerializer.cs
- 职责: JSON 消息序列化实现
- 功能:
- JSON 序列化/反序列化
- 错误处理
- 类型安全
- 技术特点:
- 使用 System.Text.Json
- 支持自定义选项
3. Models/ - 数据模型层
WebSocketConfig.cs
- 职责: WebSocket 配置模型
- 配置项:
- 服务器地址
- 超时设置
- 批量处理参数
- 重连策略
- 队列容量
- 缓存设置
- 特点:
- 数据验证注解
- 合理的默认值
- 配置绑定支持
4. Middleware/ - 中间件层
IMessageMiddleware.cs
- 职责: 消息处理中间件接口
- 功能:
- 发送消息预处理
- 接收消息后处理
- 条件跳过支持
- 设计原则: 管道模式,支持链式处理
LoggingMiddleware.cs
- 职责: 日志记录中间件
- 功能:
- 消息发送日志
- 消息接收日志
- 性能监控
- 特点: 结构化日志,性能友好
CacheMiddleware.cs
- 职责: 缓存中间件
- 功能:
- 消息缓存
- 重复消息检测
- TTL 管理
- 特点: 内存缓存,可配置 TTL
5. Extensions/ - 扩展方法层
WebSocketTransportExtensions.cs
- 职责: 依赖注入扩展
- 功能:
- 服务注册
- 配置绑定
- 中间件注册
- 工厂模式支持
- 特点:
- 流式 API 设计
- 配置驱动
- 灵活的注册方式
6. Examples/ - 使用示例
CompositionPatternExample.cs
- 职责: 组合模式使用示例
- 展示内容:
- 基本使用流程
- 优先级消息处理
- 连接状态监控
- 价值: 提供最佳实践参考
ChannelManagerTestExample.cs
- 职责: 通道管理器测试示例
- 展示内容:
- 多通道操作
- 性能测试
- 异常处理
- 价值: 验证组件功能
数据流转架构
上层应用
↓
IMessageChannelManager (消息通道管理器)
↓
WebSocketTransport (传输层)
↓
IMessageMiddleware[] (中间件管道)
↓
IMessageSerializer (序列化)
↓
IWebSocketConnection (连接层)
↓
WebSocket 服务器
核心特性
1. 高性能设计
- 批量发送: 支持消息批量处理,减少网络开销
- 内存池: 使用 ArrayPool 减少内存分配
- 异步处理: 全异步 API,支持高并发
- 背压控制: 通过 Channel 实现背压机制
2. 可靠性保障
- 自动重连: 连接断开时自动重连
- 心跳保活: 定期发送心跳包
- 异常恢复: 完善的异常处理机制
- 状态监控: 实时连接状态监控
3. 可扩展性
- 中间件架构: 支持自定义消息处理逻辑
- 配置驱动: 灵活的配置管理
- 依赖注入: 松耦合的组件设计
- 接口抽象: 易于扩展和替换
4. 易用性
- 流式 API: 简洁的注册和使用方式
- 详细文档: 完整的代码注释和示例
- 类型安全: 强类型设计,编译时检查
- 错误处理: 友好的错误信息和处理
使用方式
1. 服务注册
// 使用配置文件
services.AddWebSocketTransport(configuration, "WebSocket");
// 使用委托配置
services.AddWebSocketTransport(options =>
{
options.Url = "wss://example.com/ws";
options.TimeoutMs = 30000;
options.MaxBatchSize = 100;
});
2. 基本使用
// 注入服务
var transport = serviceProvider.GetRequiredService<IWebSocketTransport>();
var channelManager = serviceProvider.GetRequiredService<IMessageChannelManager>();
// 连接服务器
await transport.ConnectAsync();
// 发送消息
await channelManager.SendChannel.WriteAsync("Hello World");
// 接收消息
while (channelManager.ReceiveChannel.TryRead(out var message))
{
Console.WriteLine($"收到消息: {message}");
}
技术栈
- .NET 8.0: 目标框架
- System.Threading.Channels: 高性能消息队列
- System.Text.Json: JSON 序列化
- Microsoft.Extensions.DependencyInjection: 依赖注入
- Microsoft.Extensions.Configuration: 配置管理
- Microsoft.Extensions.Logging: 日志记录
- Microsoft.Extensions.Caching.Memory: 内存缓存
总结
CoreAgent.WebSocketTransport
是一个设计精良的 WebSocket 传输层组件,通过分层架构、依赖注入、中间件模式等设计模式,提供了高性能、可靠、可扩展的 WebSocket 通信能力。该项目特别适合需要稳定 WebSocket 连接的应用场景,如实时通信、数据同步、消息推送等。