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.
11 KiB
11 KiB
CoreAgent.ProtocolClient 项目结构说明
项目概述
CoreAgent.ProtocolClient
是一个专业的协议客户端库,专门用于处理LTE协议栈的WebSocket通信、日志解析和数据传输。该项目采用分层架构设计,提供了完整的协议客户端功能,支持实时数据采集、协议解析和网络监控。
主要特性
- 🔌 WebSocket通信:支持实时双向通信
- 📊 协议解析:支持RRC、NAS、SIP等多种协议层解析
- 🔍 日志处理:完整的日志采集、解析和转换流程
- 👥 UE管理:用户设备状态和标识管理
- 📈 统计分析:实时统计和性能监控
- 🔐 认证管理:安全的身份验证机制
项目架构
CoreAgent.ProtocolClient/
├── 📁 Models/ # 数据模型层 - 定义所有数据传输和业务模型
├── 📁 ProtocolWsClient/ # WebSocket客户端核心层 - 实现通信功能
├── 📁 ProtocolEngineCore/ # 协议引擎核心层 - 核心业务逻辑处理
├── 📁 Context/ # 上下文管理层 - 状态和上下文管理
├── 📁 Managers/ # 管理器层 - 各种功能管理器
├── 📁 BuildProtocolParser/ # 协议解析器层 - 协议解析实现
├── 📁 Enums/ # 枚举定义层 - 枚举类型定义
├── 📁 HandlerEventArgs/ # 事件参数层 - 事件处理器参数
├── 📁 Docs/ # 文档层 - 项目文档和说明
├── 📄 CoreAgent.ProtocolClient.csproj # 项目配置文件
├── 📄 项目结构说明.md # 项目结构说明文档
└── 📄 modify.md # 修改记录文档
详细结构说明
📁 Models/ - 数据模型层
负责定义所有数据传输和业务逻辑的数据模型,采用分层设计模式。
核心模型
-
ProtocolClientConfig.cs
- 协议客户端配置模型ProtocolClientConfig
- 主配置类,包含连接、认证、日志等配置ProtocolClientLogsConfig
- 日志配置类LogLayerConfig
- 日志层配置类
-
SourceProtocolLog.cs
- 源协议日志模型SourceProtocolLog
- 原始JSON序列化模型SourceProtocolLogDetail
- 源协议日志明细
-
BuildProtocolLog.cs
- 构建协议日志模型BuildProtocolLog
- 构建完整的业务模型PhyLayerFields
- 物理层字段DataLayerFields
- 数据层字段MacLayerFields
- MAC层字段LinkIds
- 链路标识BuildProtocolLogExtensions
- 扩展方法类
-
TransferProtocolLog.cs
- 传输协议日志模型TransferProtocolLog
- 用于传输给上层的数据模型
业务模型
-
CellConfig.cs
- 小区配置模型CellConfig
- LTE小区配置参数PucchAllocation
- PUCCH资源配置SrsResources
- SRS资源配置GbrConfig
- 保证比特率配置PlmnItem
- PLMN配置项
-
UEInfo.cs
- 用户设备信息模型UeInfo
- 用户设备信息FrameInfo
- 帧信息
-
ProtocolCaps.cs
- 协议能力模型ProtocolCaps
- LTE协议能力信息ProtocolCapsExtensions
- 扩展方法类
处理模型
-
TmsiMatchProcessor.cs
- TMSI匹配处理器TmsiMatchProcessor
- TMSI匹配处理逻辑UeChainStats
- UE链路统计UeChainInfo
- UE链路信息
-
TmsiMatchResult.cs
- TMSI匹配结果模型TmsiMatchResult
- TMSI匹配结果
-
MessageHandler.cs
- 消息处理器模型MessageHandler
- 消息处理委托
-
LogLayerHelp.cs
- 日志层帮助类LogLayerHelp
- 提供预定义的日志层配置
📁 ProtocolWsClient/ - WebSocket客户端核心层
实现WebSocket客户端的核心功能,采用分部类设计。
分部类文件
ProtocolWsClient.Core.cs
- 核心字段和构造函数ProtocolWsClient.Connection.cs
- 连接管理ProtocolWsClient.Interface.cs
- 业务接口实现ProtocolWsClient.MessageDispatch.cs
- 消息分发处理ProtocolWsClient.Events.cs
- 事件处理ProtocolWsClient.Timers.cs
- 定时器管理ProtocolWsClient.Dispose.cs
- 资源释放
📁 ProtocolEngineCore/ - 协议引擎核心层
实现协议处理的核心引擎组件。
核心组件
IProtocolWsClient.cs
- 协议客户端接口定义AuthenticationManager.cs
- 认证管理器LogManager.cs
- 日志管理器LogMessageHandler.cs
- 日志消息处理器LogDataConverter.cs
- 日志数据转换器LogDetailProcessor.cs
- 日志详情处理器MessageHandlerManager.cs
- 消息处理器管理器StatsManager.cs
- 统计管理器
📁 Context/ - 上下文管理层
管理协议客户端的上下文信息和状态。
核心上下文
ProtocolClientContext.cs
- 协议客户端主上下文ProtocolLogContext.cs
- 协议日志上下文ProtocolBasicInfo.cs
- 协议基本信息ProtocolFeatureFlags.cs
- 协议特性标志ProtocolLogPatterns.cs
- 协议日志模式CellParameterManager.cs
- 小区参数管理器
用户设备管理
UeStateManager/
- UE状态管理器目录UeIdentifierManager/
- UE标识管理器目录UeState/
- UE状态目录
📁 Managers/ - 管理器层
提供各种功能管理器。
WebSocket管理器
WebSocketMgr/
- WebSocket消息管理器WebSocketMessageManager.cs
- 主管理器类Constructor.cs
- 构造函数PublicMethods.cs
- 公共方法PrivateMethods.cs
- 私有方法Dispose.cs
- 资源释放结构层次.md
- 结构说明文档
消息管理器
MessageIdManager.cs
- 消息ID管理器
📁 BuildProtocolParser/ - 协议解析器层
实现各种协议层的解析器。
协议解析器
IGeneralProtocolParser.cs
- 通用协议解析器接口EmptyProtocolParser.cs
- 空协议解析器ProtocolContextParser.cs
- 协议上下文解析器RRCProtocolParser.cs
- RRC协议解析器NASProtocolParser.cs
- NAS协议解析器SIPProtocolParser.cs
- SIP协议解析器
📁 Enums/ - 枚举定义层
定义项目中使用的所有枚举类型。
枚举类型
ClientState.cs
- 客户端状态枚举ProtocolLayer.cs
- 协议层枚举LogChannelId.cs
- 日志通道ID枚举LayerDir.cs
- 层方向枚举TmsiType.cs
- TMSI类型枚举
📁 HandlerEventArgs/ - 事件参数层
定义事件处理器的参数类型。
事件参数
LogGetIdChangedEventArgs.cs
- 日志获取ID变更事件参数HandlerCleanupEventArgs.cs
- 处理器清理事件参数
📁 Docs/ - 文档层
项目文档和说明。
文档文件
MessageIdManager.md
- 消息ID管理器文档WebSocketMgr/
- WebSocket管理器文档目录WebSocketMessageManager.md
- 主管理器文档Constructor.md
- 构造函数文档PublicMethods.md
- 公共方法文档PrivateMethods.md
- 私有方法文档Dispose.md
- 资源释放文档结构层次.md
- 结构层次说明
数据流向
源数据 → SourceProtocolLog (解析原始JSON)
↓
构建业务模型 → BuildProtocolLog (构建业务字段)
↓
传输给上层 → TransferProtocolLog (传输给上层存储)
架构特点
1. 分层架构
- 数据层:Models目录,负责数据定义和传输
- 业务层:ProtocolEngineCore目录,负责核心业务逻辑
- 通信层:ProtocolWsClient目录,负责WebSocket通信
- 管理层:Managers目录,负责各种功能管理
- 上下文层:Context目录,负责状态和上下文管理
2. 模块化设计
- 每个功能模块都有明确的职责
- 模块间通过接口进行通信
- 支持依赖注入和单元测试
3. 扩展性
- 支持新的协议解析器扩展
- 支持新的消息处理器扩展
- 支持新的日志格式扩展
4. 可维护性
- 清晰的目录结构
- 详细的文档说明
- 完整的修改记录
使用场景
- LTE协议分析:解析和分析LTE协议栈的日志数据
- 网络监控:实时监控网络状态和性能
- 故障诊断:分析网络故障和异常情况
- 性能优化:优化网络性能和用户体验
- 数据采集:采集和存储网络数据用于分析
- UE跟踪:跟踪和管理用户设备状态
- 小区管理:管理LTE小区配置和参数
技术栈
- .NET Core:基础框架
- WebSocket4Net:WebSocket通信
- Newtonsoft.Json:JSON序列化
- Microsoft.Extensions.Logging:日志记录
- System.Threading.Tasks:异步编程
开发规范
1. 命名规范
- 类名:使用PascalCase(如:
ProtocolClientConfig
) - 方法名:使用PascalCase(如:
GetCategory
) - 属性名:使用PascalCase(如:
UeInfo
) - 私有字段:使用camelCase(如:
_logger
) - 常量:使用UPPER_CASE(如:
DEFAULT_TIMEOUT
)
2. 注释规范
- 使用XML文档注释
- 为所有公共API添加注释
- 包含参数和返回值说明
- 使用中文注释说明业务逻辑
3. 代码组织
- 按功能模块组织代码
- 使用分部类分离关注点
- 保持单一职责原则
4. 错误处理
- 统一的异常处理机制
- 详细的错误日志记录
- 优雅的错误恢复
5. 日志记录
- 完整的日志记录体系
- 不同级别的日志分类
- 结构化日志输出
部署说明
1. 环境要求
- .NET 8.0 Runtime:确保目标环境支持.NET 8.0
- 网络访问:确保有足够的网络访问权限
- 内存要求:建议至少512MB可用内存
2. 配置步骤
- 依赖项:确保所有NuGet包已正确安装
- 配置:正确配置ProtocolClientConfig
- 权限:确保有足够的网络访问权限
- 监控:配置适当的日志级别和监控
3. 部署选项
- 独立部署:作为独立应用程序部署
- 服务集成:集成到现有服务中
- 容器化:使用Docker容器部署
性能考虑
1. 内存管理
- 及时释放不需要的资源
- 使用对象池减少GC压力
- 避免内存泄漏
2. 网络优化
- 连接复用
- 数据压缩
- 批量处理
3. 并发处理
- 异步编程模式
- 线程安全设计
- 锁机制优化
安全考虑
1. 认证安全
- 安全的身份验证机制
- 令牌管理
- 会话安全
2. 数据安全
- 敏感数据加密
- 传输安全
- 访问控制
3. 网络安全
- 连接验证
- 数据完整性检查
- 异常检测
监控和维护
1. 日志监控
- 实时日志分析
- 错误告警
- 性能指标监控
2. 健康检查
- 连接状态检查
- 服务可用性监控
- 资源使用监控
3. 故障恢复
- 自动重连机制
- 故障转移
- 数据恢复
本文档描述了CoreAgent.ProtocolClient项目的完整结构,如需了解更多详细信息,请参考各模块的具体文档。最后更新时间:2024年12月19日