Files
XplorePlane/XplorePlane/Services
2026-03-18 20:14:08 +08:00
..
2026-03-18 20:14:08 +08:00
2026-03-15 00:24:02 +08:00
2026-03-15 00:24:02 +08:00
2026-03-15 00:24:02 +08:00
2026-03-18 20:14:08 +08:00

XplorePlane 服务层

概述

本目录包含 XplorePlane 应用程序的服务层实现。服务层负责封装业务逻辑和硬件交互。

日志服务

XplorePlane 使用 XplorePlane.Common.dll 库中封装的日志功能,无需在本项目中重复实现。

使用方式

1. 通过依赖注入使用 Serilog ILogger

using Serilog;

public class MyViewModel
{
    private readonly ILogger _logger;
    
    public MyViewModel(ILogger logger)
    {
        _logger = logger;
    }
    
    public void DoSomething()
    {
        _logger.Information("执行某个操作");
        _logger.Warning("警告信息");
        _logger.Error("错误信息");
    }
}

2. 使用静态 Log 类

using Serilog;

public class MyService
{
    public void DoWork()
    {
        Log.Information("开始工作");
        Log.Debug("调试信息: {Value}", someValue);
        Log.Error(exception, "发生错误");
    }
}

3. 为特定模块创建日志器

using Serilog;

public class RaySourceService
{
    private readonly ILogger _logger;
    
    public RaySourceService()
    {
        // 为当前类创建带上下文的日志器
        _logger = Log.ForContext<RaySourceService>();
    }
    
    public void Initialize()
    {
        _logger.Information("初始化射线源");
    }
}

日志配置

日志配置通过 App.config 文件进行管理:

<appSettings>
  <!-- 日志配置 -->
  <add key="Serilog:LogPath" value="logs"/>
  <add key="Serilog:MinimumLevel" value="Information"/>
  <add key="Serilog:EnableConsole" value="true"/>
  <add key="Serilog:RollingInterval" value="Day"/>
  <add key="Serilog:FileSizeLimitMB" value="100"/>
  <add key="Serilog:RetainedFileCountLimit" value="30"/>
</appSettings>

日志级别

  • Verbose: 最详细的日志,用于开发调试
  • Debug: 调试信息
  • Information: 一般信息(默认)
  • Warning: 警告信息
  • Error: 错误信息
  • Fatal: 致命错误

日志输出

日志会输出到以下位置:

  • 文件: logs/xploreplane-{Date}.log
  • 控制台: 开发时可见
  • 调试输出: Debug 模式下可见

硬件服务

硬件服务将在后续实现,用于封装与硬件库的交互。

计划实现的服务

  • IHardwareService: 硬件服务总接口
  • RaySourceService: 射线源控制服务
  • DetectorService: 探测器控制服务
  • PLCService: PLC 通讯服务

依赖库

  • XplorePlane.Common.dll: 通用基础设施库(包含日志功能)
  • XplorePlane.Hardware.RaySource.dll: 射线源控制库
  • XplorePlane.Hardware.Detector.dll: 探测器控制库
  • XplorePlane.Hardware.PLC.dll: PLC 通讯库

所有 DLL 文件位于 Libs/Hardware/ 目录下。