初步重构WPF项目中的DataService和App项目中的DataCenterServicce
This commit is contained in:
@@ -21,21 +21,21 @@ namespace DMS.Infrastructure.Services
|
||||
{
|
||||
private readonly ILogger<MqttBackgroundService> _logger;
|
||||
private readonly IMqttServiceManager _mqttServiceManager;
|
||||
private readonly IDataCenterService _dataCenterService;
|
||||
private readonly IAppDataCenterService _appDataCenterService;
|
||||
private readonly ConcurrentDictionary<int, MqttServer> _mqttServers;
|
||||
private readonly SemaphoreSlim _reloadSemaphore = new(0);
|
||||
|
||||
public MqttBackgroundService(
|
||||
ILogger<MqttBackgroundService> logger,
|
||||
IMqttServiceManager mqttServiceManager,
|
||||
IDataCenterService dataCenterService)
|
||||
IAppDataCenterService appDataCenterService)
|
||||
{
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
_mqttServiceManager = mqttServiceManager ?? throw new ArgumentNullException(nameof(mqttServiceManager));
|
||||
_dataCenterService = dataCenterService ?? throw new ArgumentNullException(nameof(dataCenterService));
|
||||
_appDataCenterService = appDataCenterService ?? throw new ArgumentNullException(nameof(appDataCenterService));
|
||||
_mqttServers = new ConcurrentDictionary<int, MqttServer>();
|
||||
|
||||
_dataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
_appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
}
|
||||
|
||||
private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
|
||||
@@ -185,7 +185,7 @@ namespace DMS.Infrastructure.Services
|
||||
_mqttServers.Clear();
|
||||
|
||||
// 从数据服务中心获取所有激活的MQTT服务器
|
||||
var mqttServerDtos = _dataCenterService.MqttServers.Values
|
||||
var mqttServerDtos = _appDataCenterService.MqttServers.Values
|
||||
.Where(m => m.IsActive)
|
||||
.ToList();
|
||||
|
||||
@@ -252,7 +252,7 @@ namespace DMS.Infrastructure.Services
|
||||
{
|
||||
_logger.LogInformation("正在释放MQTT后台服务资源...");
|
||||
|
||||
_dataCenterService.OnLoadDataCompleted -= OnLoadDataCompleted;
|
||||
_appDataCenterService.OnLoadDataCompleted -= OnLoadDataCompleted;
|
||||
_reloadSemaphore?.Dispose();
|
||||
|
||||
base.Dispose();
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace DMS.Infrastructure.Services
|
||||
{
|
||||
private readonly ILogger<MqttServiceManager> _logger;
|
||||
private readonly IDataProcessingService _dataProcessingService;
|
||||
private readonly IDataCenterService _dataCenterService;
|
||||
private readonly IAppDataCenterService _appDataCenterService;
|
||||
private readonly IMqttServiceFactory _mqttServiceFactory;
|
||||
private readonly ConcurrentDictionary<int, MqttDeviceContext> _mqttContexts;
|
||||
private readonly SemaphoreSlim _semaphore;
|
||||
@@ -29,12 +29,12 @@ namespace DMS.Infrastructure.Services
|
||||
public MqttServiceManager(
|
||||
ILogger<MqttServiceManager> logger,
|
||||
IDataProcessingService dataProcessingService,
|
||||
IDataCenterService dataCenterService,
|
||||
IAppDataCenterService appDataCenterService,
|
||||
IMqttServiceFactory mqttServiceFactory)
|
||||
{
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
_dataProcessingService = dataProcessingService ?? throw new ArgumentNullException(nameof(dataProcessingService));
|
||||
_dataCenterService = dataCenterService ?? throw new ArgumentNullException(nameof(dataCenterService));
|
||||
_appDataCenterService = appDataCenterService ?? throw new ArgumentNullException(nameof(appDataCenterService));
|
||||
_mqttServiceFactory = mqttServiceFactory ?? throw new ArgumentNullException(nameof(mqttServiceFactory));
|
||||
_mqttContexts = new ConcurrentDictionary<int, MqttDeviceContext>();
|
||||
_semaphore = new SemaphoreSlim(10, 10); // 默认最大并发连接数为10
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace DMS.Infrastructure.Services;
|
||||
|
||||
public class OpcUaBackgroundService : BackgroundService
|
||||
{
|
||||
private readonly IDataCenterService _dataCenterService;
|
||||
private readonly IAppDataCenterService _appDataCenterService;
|
||||
private readonly IDataProcessingService _dataProcessingService;
|
||||
|
||||
// private readonly IDataProcessingService _dataProcessingService;
|
||||
@@ -70,9 +70,9 @@ public class OpcUaBackgroundService : BackgroundService
|
||||
{ 1800000, TimeSpan.FromMilliseconds(1800000) } // ThirtyMinutes
|
||||
};
|
||||
|
||||
public OpcUaBackgroundService(IDataCenterService dataCenterService,IDataProcessingService dataProcessingService, ILogger<OpcUaBackgroundService> logger)
|
||||
public OpcUaBackgroundService(IAppDataCenterService appDataCenterService,IDataProcessingService dataProcessingService, ILogger<OpcUaBackgroundService> logger)
|
||||
{
|
||||
_dataCenterService = dataCenterService;
|
||||
_appDataCenterService = appDataCenterService;
|
||||
_dataProcessingService = dataProcessingService;
|
||||
_logger = logger;
|
||||
_opcUaServices = new ConcurrentDictionary<DeviceDto, OpcUaService>();
|
||||
@@ -81,7 +81,7 @@ public class OpcUaBackgroundService : BackgroundService
|
||||
_opcUaPollVariablesByDeviceId = new ConcurrentDictionary<int, List<Variable>>();
|
||||
_opcUaVariablesByDeviceId = new ConcurrentDictionary<int, List<VariableDto>>();
|
||||
|
||||
_dataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
_appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
}
|
||||
|
||||
private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
|
||||
@@ -103,7 +103,7 @@ public class OpcUaBackgroundService : BackgroundService
|
||||
break;
|
||||
}
|
||||
|
||||
if (_dataCenterService.Devices.IsEmpty)
|
||||
if (_appDataCenterService.Devices.IsEmpty)
|
||||
{
|
||||
_logger.LogInformation("没有可用的OPC UA设备,等待设备列表更新...");
|
||||
continue;
|
||||
@@ -150,7 +150,7 @@ public class OpcUaBackgroundService : BackgroundService
|
||||
_opcUaVariables.Clear();
|
||||
|
||||
_logger.LogInformation("开始加载OPC UA变量....");
|
||||
var opcUaDevices = _dataCenterService
|
||||
var opcUaDevices = _appDataCenterService
|
||||
.Devices.Values.Where(d => d.Protocol == ProtocolType.OpcUa && d.IsActive == true)
|
||||
.ToList();
|
||||
int totalVariableCount = 0;
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace DMS.Infrastructure.Services
|
||||
{
|
||||
private readonly ILogger<OpcUaServiceManager> _logger;
|
||||
private readonly IDataProcessingService _dataProcessingService;
|
||||
private readonly IDataCenterService _dataCenterService;
|
||||
private readonly IAppDataCenterService _appDataCenterService;
|
||||
private readonly OpcUaServiceOptions _options;
|
||||
private readonly ConcurrentDictionary<int, DeviceContext> _deviceContexts;
|
||||
private readonly SemaphoreSlim _semaphore;
|
||||
@@ -28,12 +28,12 @@ namespace DMS.Infrastructure.Services
|
||||
public OpcUaServiceManager(
|
||||
ILogger<OpcUaServiceManager> logger,
|
||||
IDataProcessingService dataProcessingService,
|
||||
IDataCenterService dataCenterService,
|
||||
IAppDataCenterService appDataCenterService,
|
||||
IOptions<OpcUaServiceOptions> options)
|
||||
{
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
_dataProcessingService = dataProcessingService ?? throw new ArgumentNullException(nameof(dataProcessingService));
|
||||
_dataCenterService = dataCenterService ?? throw new ArgumentNullException(nameof(dataCenterService));
|
||||
_appDataCenterService = appDataCenterService ?? throw new ArgumentNullException(nameof(appDataCenterService));
|
||||
_options = options?.Value ?? throw new ArgumentNullException(nameof(options));
|
||||
_deviceContexts = new ConcurrentDictionary<int, DeviceContext>();
|
||||
_semaphore = new SemaphoreSlim(_options.MaxConcurrentConnections, _options.MaxConcurrentConnections);
|
||||
@@ -308,7 +308,7 @@ namespace DMS.Infrastructure.Services
|
||||
newValue,
|
||||
variable.UpdatedAt);
|
||||
|
||||
_dataCenterService.OnVariableValueChanged( eventArgs);
|
||||
_appDataCenterService.OnVariableValueChanged( eventArgs);
|
||||
|
||||
// 推送到数据处理队列
|
||||
await _dataProcessingService.EnqueueAsync(variable);
|
||||
|
||||
@@ -18,21 +18,21 @@ namespace DMS.Infrastructure.Services
|
||||
/// </summary>
|
||||
public class OptimizedOpcUaBackgroundService : BackgroundService
|
||||
{
|
||||
private readonly IDataCenterService _dataCenterService;
|
||||
private readonly IAppDataCenterService _appDataCenterService;
|
||||
private readonly IOpcUaServiceManager _opcUaServiceManager;
|
||||
private readonly ILogger<OptimizedOpcUaBackgroundService> _logger;
|
||||
private readonly SemaphoreSlim _reloadSemaphore = new SemaphoreSlim(0);
|
||||
|
||||
public OptimizedOpcUaBackgroundService(
|
||||
IDataCenterService dataCenterService,
|
||||
IAppDataCenterService appDataCenterService,
|
||||
IOpcUaServiceManager opcUaServiceManager,
|
||||
ILogger<OptimizedOpcUaBackgroundService> logger)
|
||||
{
|
||||
_dataCenterService = dataCenterService ?? throw new ArgumentNullException(nameof(dataCenterService));
|
||||
_appDataCenterService = appDataCenterService ?? throw new ArgumentNullException(nameof(appDataCenterService));
|
||||
_opcUaServiceManager = opcUaServiceManager ?? throw new ArgumentNullException(nameof(opcUaServiceManager));
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
|
||||
_dataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
_appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
}
|
||||
|
||||
private void OnLoadDataCompleted(object sender, DataLoadCompletedEventArgs e)
|
||||
@@ -57,7 +57,7 @@ namespace DMS.Infrastructure.Services
|
||||
if (stoppingToken.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
if (_dataCenterService.Devices.IsEmpty)
|
||||
if (_appDataCenterService.Devices.IsEmpty)
|
||||
{
|
||||
_logger.LogInformation("没有可用的OPC UA设备,等待设备列表更新...");
|
||||
continue;
|
||||
@@ -93,7 +93,7 @@ namespace DMS.Infrastructure.Services
|
||||
try
|
||||
{
|
||||
// 获取所有活动的OPC UA设备
|
||||
var opcUaDevices = _dataCenterService.Devices.Values
|
||||
var opcUaDevices = _appDataCenterService.Devices.Values
|
||||
.Where(d => d.Protocol == ProtocolType.OpcUa && d.IsActive)
|
||||
.ToList();
|
||||
|
||||
@@ -145,7 +145,7 @@ namespace DMS.Infrastructure.Services
|
||||
{
|
||||
_logger.LogInformation("正在释放OPC UA后台服务资源...");
|
||||
|
||||
_dataCenterService.OnLoadDataCompleted -= OnLoadDataCompleted;
|
||||
_appDataCenterService.OnLoadDataCompleted -= OnLoadDataCompleted;
|
||||
_reloadSemaphore?.Dispose();
|
||||
|
||||
base.Dispose();
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace DMS.Infrastructure.Services;
|
||||
/// </summary>
|
||||
public class OptimizedS7BackgroundService : BackgroundService
|
||||
{
|
||||
private readonly IDataCenterService _dataCenterService;
|
||||
private readonly IAppDataCenterService _appDataCenterService;
|
||||
private readonly IDataProcessingService _dataProcessingService;
|
||||
private readonly IS7ServiceManager _s7ServiceManager;
|
||||
private readonly ILogger<OptimizedS7BackgroundService> _logger;
|
||||
@@ -54,17 +54,17 @@ public class OptimizedS7BackgroundService : BackgroundService
|
||||
/// 构造函数,注入数据服务和数据处理服务。
|
||||
/// </summary>
|
||||
public OptimizedS7BackgroundService(
|
||||
IDataCenterService dataCenterService,
|
||||
IAppDataCenterService appDataCenterService,
|
||||
IDataProcessingService dataProcessingService,
|
||||
IS7ServiceManager s7ServiceManager,
|
||||
ILogger<OptimizedS7BackgroundService> logger)
|
||||
{
|
||||
_dataCenterService = dataCenterService;
|
||||
_appDataCenterService = appDataCenterService;
|
||||
_dataProcessingService = dataProcessingService;
|
||||
_s7ServiceManager = s7ServiceManager;
|
||||
_logger = logger;
|
||||
|
||||
_dataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
_appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
}
|
||||
|
||||
private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
|
||||
@@ -86,7 +86,7 @@ public class OptimizedS7BackgroundService : BackgroundService
|
||||
break;
|
||||
}
|
||||
|
||||
if (_dataCenterService.Devices.IsEmpty)
|
||||
if (_appDataCenterService.Devices.IsEmpty)
|
||||
{
|
||||
_logger.LogInformation("没有可用的S7设备,等待设备列表更新...");
|
||||
continue;
|
||||
@@ -134,7 +134,7 @@ public class OptimizedS7BackgroundService : BackgroundService
|
||||
_variablesByPollingInterval.Clear();
|
||||
_logger.LogInformation("开始加载S7变量....");
|
||||
|
||||
var s7Devices = _dataCenterService
|
||||
var s7Devices = _appDataCenterService
|
||||
.Devices.Values.Where(d => d.Protocol == ProtocolType.S7 && d.IsActive == true)
|
||||
.ToList();
|
||||
|
||||
@@ -173,7 +173,7 @@ public class OptimizedS7BackgroundService : BackgroundService
|
||||
private async Task ConnectS7ServiceAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
|
||||
var s7Devices = _dataCenterService
|
||||
var s7Devices = _appDataCenterService
|
||||
.Devices.Values.Where(d => d.Protocol == ProtocolType.S7 && d.IsActive == true)
|
||||
.ToList();
|
||||
|
||||
@@ -237,7 +237,7 @@ public class OptimizedS7BackgroundService : BackgroundService
|
||||
/// </summary>
|
||||
private async Task PollVariablesForDeviceAsync(int deviceId, List<VariableDto> variables, CancellationToken stoppingToken)
|
||||
{
|
||||
if (!_dataCenterService.Devices.TryGetValue(deviceId, out var device))
|
||||
if (!_appDataCenterService.Devices.TryGetValue(deviceId, out var device))
|
||||
{
|
||||
_logger.LogWarning($"轮询时没有找到设备ID:{deviceId}");
|
||||
return;
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace DMS.Infrastructure.Services;
|
||||
/// </summary>
|
||||
public class S7BackgroundService : BackgroundService
|
||||
{
|
||||
private readonly IDataCenterService _dataCenterService;
|
||||
private readonly IAppDataCenterService _appDataCenterService;
|
||||
private readonly IDataProcessingService _dataProcessingService;
|
||||
private readonly IChannelBus _channelBus;
|
||||
private readonly IMessenger _messenger;
|
||||
@@ -39,19 +39,19 @@ public class S7BackgroundService : BackgroundService
|
||||
/// 构造函数,注入所需的服务
|
||||
/// </summary>
|
||||
public S7BackgroundService(
|
||||
IDataCenterService dataCenterService,
|
||||
IAppDataCenterService appDataCenterService,
|
||||
IDataProcessingService dataProcessingService,
|
||||
IChannelBus channelBus,
|
||||
IMessenger messenger,
|
||||
ILogger<S7BackgroundService> logger)
|
||||
{
|
||||
_dataCenterService = dataCenterService;
|
||||
_appDataCenterService = appDataCenterService;
|
||||
_dataProcessingService = dataProcessingService;
|
||||
_channelBus = channelBus;
|
||||
_messenger = messenger;
|
||||
_logger = logger;
|
||||
|
||||
_dataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
_appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
}
|
||||
|
||||
private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
|
||||
@@ -73,7 +73,7 @@ public class S7BackgroundService : BackgroundService
|
||||
break;
|
||||
}
|
||||
|
||||
if (_dataCenterService.Devices.IsEmpty)
|
||||
if (_appDataCenterService.Devices.IsEmpty)
|
||||
{
|
||||
_logger.LogInformation("没有可用的S7设备,等待设备列表更新...");
|
||||
continue;
|
||||
@@ -114,7 +114,7 @@ public class S7BackgroundService : BackgroundService
|
||||
_logger.LogInformation("开始加载S7设备....");
|
||||
|
||||
// 获取所有激活的S7设备
|
||||
var s7Devices = _dataCenterService
|
||||
var s7Devices = _appDataCenterService
|
||||
.Devices.Values.Where(d => d.Protocol == ProtocolType.S7 && d.IsActive == true)
|
||||
.ToList();
|
||||
|
||||
@@ -134,7 +134,7 @@ public class S7BackgroundService : BackgroundService
|
||||
// 为每个设备创建或更新代理
|
||||
foreach (var deviceDto in s7Devices)
|
||||
{
|
||||
if (!_dataCenterService.Devices.TryGetValue(deviceDto.Id, out var device))
|
||||
if (!_appDataCenterService.Devices.TryGetValue(deviceDto.Id, out var device))
|
||||
continue;
|
||||
|
||||
// 创建或更新设备代理
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace DMS.Infrastructure.Services
|
||||
{
|
||||
private readonly ILogger<S7ServiceManager> _logger;
|
||||
private readonly IDataProcessingService _dataProcessingService;
|
||||
private readonly IDataCenterService _dataCenterService;
|
||||
private readonly IAppDataCenterService _appDataCenterService;
|
||||
private readonly IS7ServiceFactory _s7ServiceFactory;
|
||||
private readonly ConcurrentDictionary<int, S7DeviceContext> _deviceContexts;
|
||||
private readonly SemaphoreSlim _semaphore;
|
||||
@@ -29,12 +29,12 @@ namespace DMS.Infrastructure.Services
|
||||
public S7ServiceManager(
|
||||
ILogger<S7ServiceManager> logger,
|
||||
IDataProcessingService dataProcessingService,
|
||||
IDataCenterService dataCenterService,
|
||||
IAppDataCenterService appDataCenterService,
|
||||
IS7ServiceFactory s7ServiceFactory)
|
||||
{
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
_dataProcessingService = dataProcessingService ?? throw new ArgumentNullException(nameof(dataProcessingService));
|
||||
_dataCenterService = dataCenterService ?? throw new ArgumentNullException(nameof(dataCenterService));
|
||||
_appDataCenterService = appDataCenterService ?? throw new ArgumentNullException(nameof(appDataCenterService));
|
||||
_s7ServiceFactory = s7ServiceFactory ?? throw new ArgumentNullException(nameof(s7ServiceFactory));
|
||||
_deviceContexts = new ConcurrentDictionary<int, S7DeviceContext>();
|
||||
_semaphore = new SemaphoreSlim(10, 10); // 默认最大并发连接数为10
|
||||
|
||||
Reference in New Issue
Block a user