初步完成Mqtt后台服务的改造

This commit is contained in:
2025-09-06 15:19:04 +08:00
parent 56130cd92a
commit e4cb38cd1d
18 changed files with 1047 additions and 315 deletions

View File

@@ -0,0 +1,54 @@
using DMS.Core.Models;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace DMS.Infrastructure.Interfaces.Services
{
/// <summary>
/// MQTT后台服务接口负责管理MQTT连接和数据传输
/// </summary>
public interface IMqttBackgroundService
{
/// <summary>
/// 启动MQTT后台服务
/// </summary>
Task StartAsync(CancellationToken cancellationToken = default);
/// <summary>
/// 停止MQTT后台服务
/// </summary>
Task StopAsync(CancellationToken cancellationToken = default);
/// <summary>
/// 添加MQTT服务器配置
/// </summary>
void AddMqttServer(MqttServer mqttServer);
/// <summary>
/// 移除MQTT服务器配置
/// </summary>
Task RemoveMqttServerAsync(int mqttServerId, CancellationToken cancellationToken = default);
/// <summary>
/// 更新MQTT服务器配置
/// </summary>
void UpdateMqttServer(MqttServer mqttServer);
/// <summary>
/// 获取所有MQTT服务器配置
/// </summary>
IEnumerable<MqttServer> GetAllMqttServers();
/// <summary>
/// 发布变量数据到MQTT服务器
/// </summary>
Task PublishVariableDataAsync(VariableMqtt variableMqtt, CancellationToken cancellationToken = default);
/// <summary>
/// 发布批量变量数据到MQTT服务器
/// </summary>
Task PublishVariablesDataAsync(List<VariableMqtt> variableMqtts, CancellationToken cancellationToken = default);
}
}

View File

@@ -0,0 +1,52 @@
using DMS.Core.Models;
using MQTTnet.Client;
using System;
using System.Threading.Tasks;
namespace DMS.Infrastructure.Interfaces.Services
{
/// <summary>
/// MQTT服务接口定义MQTT客户端的基本操作
/// </summary>
public interface IMqttService
{
/// <summary>
/// 获取MQTT客户端连接状态
/// </summary>
bool IsConnected { get; }
/// <summary>
/// 异步连接到MQTT服务器
/// </summary>
/// <param name="serverUrl">MQTT服务器URL</param>
/// <param name="port">端口号</param>
/// <param name="clientId">客户端ID</param>
/// <param name="username">用户名</param>
/// <param name="password">密码</param>
Task ConnectAsync(string serverUrl, int port, string clientId, string username, string password);
/// <summary>
/// 异步断开MQTT连接
/// </summary>
Task DisconnectAsync();
/// <summary>
/// 异步发布消息
/// </summary>
/// <param name="topic">主题</param>
/// <param name="payload">消息内容</param>
Task PublishAsync(string topic, string payload);
/// <summary>
/// 异步订阅主题
/// </summary>
/// <param name="topic">要订阅的主题</param>
Task SubscribeAsync(string topic);
/// <summary>
/// 设置消息接收处理程序
/// </summary>
/// <param name="handler">消息处理回调函数</param>
void SetMessageHandler(Func<string, string, Task> handler);
}
}

View File

@@ -0,0 +1,23 @@
using DMS.Core.Models;
namespace DMS.Infrastructure.Interfaces.Services
{
/// <summary>
/// MQTT服务工厂接口用于创建MQTT服务实例
/// </summary>
public interface IMqttServiceFactory
{
/// <summary>
/// 创建MQTT服务实例
/// </summary>
/// <returns>IMqttService实例</returns>
IMqttService CreateService();
/// <summary>
/// 根据MQTT服务器配置创建MQTT服务实例
/// </summary>
/// <param name="mqttServer">MQTT服务器配置</param>
/// <returns>IMqttService实例</returns>
IMqttService CreateService(MqttServer mqttServer);
}
}

View File

@@ -0,0 +1,69 @@
using DMS.Core.Models;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace DMS.Infrastructure.Interfaces.Services
{
/// <summary>
/// MQTT服务管理器接口负责管理MQTT连接和变量监控
/// </summary>
public interface IMqttServiceManager
{
/// <summary>
/// 初始化服务管理器
/// </summary>
Task InitializeAsync(CancellationToken cancellationToken = default);
/// <summary>
/// 添加MQTT服务器到监控列表
/// </summary>
void AddMqttServer(MqttServer mqttServer);
/// <summary>
/// 移除MQTT服务器监控
/// </summary>
Task RemoveMqttServerAsync(int mqttServerId, CancellationToken cancellationToken = default);
/// <summary>
/// 更新MQTT服务器变量别名
/// </summary>
void UpdateVariableMqttAliases(int mqttServerId, List<VariableMqttAlias> variableMqttAliases);
/// <summary>
/// 获取MQTT服务器连接状态
/// </summary>
bool IsMqttServerConnected(int mqttServerId);
/// <summary>
/// 重新连接MQTT服务器
/// </summary>
Task ReconnectMqttServerAsync(int mqttServerId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取所有监控的MQTT服务器ID
/// </summary>
IEnumerable<int> GetMonitoredMqttServerIds();
/// <summary>
/// 连接MQTT服务器
/// </summary>
Task ConnectMqttServerAsync(int mqttServerId, CancellationToken cancellationToken = default);
/// <summary>
/// 断开MQTT服务器连接
/// </summary>
Task DisconnectMqttServerAsync(int mqttServerId, CancellationToken cancellationToken = default);
/// <summary>
/// 发布变量数据到MQTT服务器
/// </summary>
Task PublishVariableDataAsync(VariableMqtt variableMqtt, CancellationToken cancellationToken = default);
/// <summary>
/// 发布批量变量数据到MQTT服务器
/// </summary>
Task PublishVariablesDataAsync(List<VariableMqtt> variableMqtts, CancellationToken cancellationToken = default);
}
}