2.0 KiB
.NET 8 WebSocket 中间件提示词(IMessageMiddleware.cs) 定义并实现 WebSocket 消息处理中间件接口,支持多种处理逻辑(日志、压缩、条件跳过、缓存、加密),增强扩展性和可维护性。文件建议控制在 200 行以内(预计 ~150 行,含示例实现)。 要求
接口定义:
定义 IMessageMiddleware 接口: Task ProcessSendAsync(T message, CancellationToken cancellationToken): 处理发送消息,支持泛型。 Task ProcessReceiveAsync(T message, CancellationToken cancellationToken): 处理接收消息,支持泛型。
支持条件跳过:返回 null 表示跳过后续处理。
中间件功能:
日志中间件:记录发送/接收消息(跳过心跳消息如 PING/PONG),使用结构化日志(含事件 ID)。 压缩中间件:使用 GZip 压缩/解压消息(仅对非二进制消息)。 缓存中间件:使用 IMemoryCache 缓存静态消息(如 CONFIG_ 消息),支持 TTL(默认 5 分钟,可配置)。 加密中间件(可选):对敏感消息加密/解密。 支持二进制消息处理(通过中间件序列化/反序列化)。
生产环境优化:
支持异步操作,集成 CancellationToken。 条件跳过:根据消息类型或内容跳过(如 PING/PONG 或小消息跳过压缩)。 缓存:记录命中率(通过 ILogger),支持配置 TTL。 错误处理:捕获异常(如解压缩失败),记录结构化日志。
设计原则:
单一职责:每个中间件处理单一功能。 开闭原则:支持动态添加中间件。 可观察性:日志记录事件,缓存记录命中率。
输出要求:
文件名为 IMessageMiddleware.cs,位于 Middleware 目录。 建议 < 200 行,包含接口和至少两个实现(日志、缓存)。 依赖 ILogger, IMemoryCache, WebSocketConfig。 包含详细注释,说明跳过、缓存逻辑和泛型支持。 示例实现:LoggingMiddleware(跳过 PING/PONG),CacheMiddleware(缓存 CONFIG_ 消息)。