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

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. 可维护性

  • 清晰的目录结构
  • 详细的文档说明
  • 完整的修改记录

使用场景

  1. LTE协议分析:解析和分析LTE协议栈的日志数据
  2. 网络监控:实时监控网络状态和性能
  3. 故障诊断:分析网络故障和异常情况
  4. 性能优化:优化网络性能和用户体验
  5. 数据采集:采集和存储网络数据用于分析
  6. UE跟踪:跟踪和管理用户设备状态
  7. 小区管理:管理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. 配置步骤

  1. 依赖项:确保所有NuGet包已正确安装
  2. 配置:正确配置ProtocolClientConfig
  3. 权限:确保有足够的网络访问权限
  4. 监控:配置适当的日志级别和监控

3. 部署选项

  • 独立部署:作为独立应用程序部署
  • 服务集成:集成到现有服务中
  • 容器化:使用Docker容器部署

性能考虑

1. 内存管理

  • 及时释放不需要的资源
  • 使用对象池减少GC压力
  • 避免内存泄漏

2. 网络优化

  • 连接复用
  • 数据压缩
  • 批量处理

3. 并发处理

  • 异步编程模式
  • 线程安全设计
  • 锁机制优化

安全考虑

1. 认证安全

  • 安全的身份验证机制
  • 令牌管理
  • 会话安全

2. 数据安全

  • 敏感数据加密
  • 传输安全
  • 访问控制

3. 网络安全

  • 连接验证
  • 数据完整性检查
  • 异常检测

监控和维护

1. 日志监控

  • 实时日志分析
  • 错误告警
  • 性能指标监控

2. 健康检查

  • 连接状态检查
  • 服务可用性监控
  • 资源使用监控

3. 故障恢复

  • 自动重连机制
  • 故障转移
  • 数据恢复

本文档描述了CoreAgent.ProtocolClient项目的完整结构,如需了解更多详细信息,请参考各模块的具体文档。最后更新时间:2024年12月19日