优化上传插件批量性能
This commit is contained in:
Diego
2024-12-11 15:52:00 +08:00
parent d71ad5a6bf
commit 0fc9b06d12
9 changed files with 51 additions and 38 deletions

View File

@@ -2,8 +2,8 @@
<PropertyGroup>
<AdminVersion>7.2.0.45</AdminVersion>
<PluginVersion>9.0.2.38</PluginVersion>
<ProPluginVersion>9.0.2.66</ProPluginVersion>
<PluginVersion>9.0.2.42</PluginVersion>
<ProPluginVersion>9.0.2.67</ProPluginVersion>
</PropertyGroup>
<PropertyGroup>

View File

@@ -30,10 +30,15 @@ public abstract class BusinessBaseWithCacheAlarmModel<VarModel, DevModel, AlarmM
/// <param name="data"></param>
protected virtual void AddCache(List<CacheDBItem<AlarmModel>> data)
{
if (_businessPropertyWithCache.CacheEnable && data?.Count > 0)
{
try
{
foreach (var item in data)
{
item.Id = CommonUtils.GetSingleId();
}
var dir = CacheDBUtil.GetFilePath(CurrentDevice.Id.ToString());
var fileStart = CacheDBUtil.GetFileName($"{CurrentDevice.PluginName}_{typeof(AlarmModel).FullName}_{nameof(AlarmModel)}");
var fullName = dir.CombinePathWithOs($"{fileStart}{CacheDBUtil.EX}");

View File

@@ -30,10 +30,16 @@ public abstract class BusinessBaseWithCacheDeviceModel<VarModel, DevModel> : Bus
/// <param name="data"></param>
protected virtual void AddCache(List<CacheDBItem<DevModel>> data)
{
if (_businessPropertyWithCache.CacheEnable && data?.Count > 0)
{
try
{
foreach (var item in data)
{
item.Id = CommonUtils.GetSingleId();
}
var dir = CacheDBUtil.GetFilePath(CurrentDevice.Id.ToString());
var fileStart = CacheDBUtil.GetFileName($"{CurrentDevice.PluginName}_{typeof(DevModel).FullName}_{nameof(DevModel)}");
var fullName = dir.CombinePathWithOs($"{fileStart}{CacheDBUtil.EX}");

View File

@@ -38,6 +38,10 @@ public abstract class BusinessBaseWithCacheVariableModel<VarModel> : BusinessBas
{
try
{
foreach (var item in data)
{
item.Id = CommonUtils.GetSingleId();
}
var dir = CacheDBUtil.GetFilePath(CurrentDevice.Id.ToString());
var fileStart = CacheDBUtil.GetFileName($"{CurrentDevice.PluginName}_{typeof(VarModel).FullName}_{nameof(VarModel)}");
var fullName = dir.CombinePathWithOs($"{fileStart}{CacheDBUtil.EX}");

View File

@@ -121,6 +121,8 @@ public abstract class BusinessBaseWithCacheIntervalAlarmModel<VarModel, DevModel
/// </summary>
protected virtual async Task IntervalInsert()
{
var vardatas = CurrentDevice.VariableRunTimes.Values.ToList();
var devdatas = CollectDevices.Values.ToList();
while (!DisposedValue)
{
if (CurrentDevice?.KeepRun == false)
@@ -137,9 +139,9 @@ public abstract class BusinessBaseWithCacheIntervalAlarmModel<VarModel, DevModel
if (_exTTimerTick.IsTickHappen())
{
// 间隔推送全部变量
foreach (var variableRuntime in CurrentDevice.VariableRunTimes)
foreach (var variableRuntime in vardatas)
{
VariableChange(variableRuntime.Value, variableRuntime.Value.Adapt<VariableBasicData>());
VariableChange(variableRuntime, variableRuntime.Adapt<VariableBasicData>());
}
}
}
@@ -152,9 +154,9 @@ public abstract class BusinessBaseWithCacheIntervalAlarmModel<VarModel, DevModel
if (_exT2TimerTick.IsTickHappen())
{
// 间隔推送全部设备
foreach (var deviceRuntime in CollectDevices)
foreach (var deviceRuntime in devdatas)
{
DeviceChange(deviceRuntime.Value, deviceRuntime.Value.Adapt<DeviceBasicData>());
DeviceChange(deviceRuntime, deviceRuntime.Adapt<DeviceBasicData>());
}
}
}

View File

@@ -111,6 +111,8 @@ public abstract class BusinessBaseWithCacheIntervalDeviceModel<VarModel, DevMode
/// <returns>异步任务</returns>
protected virtual async Task IntervalInsert()
{
var vardatas = CurrentDevice.VariableRunTimes.Values.ToList();
var devdatas = CollectDevices.Values.ToList();
while (!DisposedValue)
{
if (CurrentDevice?.KeepRun == false)
@@ -127,9 +129,9 @@ public abstract class BusinessBaseWithCacheIntervalDeviceModel<VarModel, DevMode
if (_exTTimerTick.IsTickHappen())
{
// 上传所有变量信息
foreach (var variableRuntime in CurrentDevice.VariableRunTimes)
foreach (var variableRuntime in vardatas)
{
VariableChange(variableRuntime.Value, variableRuntime.Value.Adapt<VariableData>());
VariableChange(variableRuntime, variableRuntime.Adapt<VariableData>());
}
}
}
@@ -143,9 +145,9 @@ public abstract class BusinessBaseWithCacheIntervalDeviceModel<VarModel, DevMode
if (_exT2TimerTick.IsTickHappen())
{
// 上传所有设备信息
foreach (var deviceRuntime in CollectDevices)
foreach (var deviceRuntime in devdatas)
{
DeviceChange(deviceRuntime.Value, deviceRuntime.Value.Adapt<DeviceBasicData>());
DeviceChange(deviceRuntime, deviceRuntime.Adapt<DeviceBasicData>());
}
}
}

View File

@@ -86,6 +86,7 @@ public abstract class BusinessBaseWithCacheIntervalVariableModel<T> : BusinessBa
/// <returns>表示异步操作的任务</returns>
protected virtual async Task IntervalInsert()
{
var vardatas = CurrentDevice.VariableRunTimes.Values.ToList();
while (!DisposedValue)
{
if (CurrentDevice?.KeepRun == false)
@@ -94,36 +95,31 @@ public abstract class BusinessBaseWithCacheIntervalVariableModel<T> : BusinessBa
continue;
}
//间隔上传
IntervalInsertVariable();
if (_businessPropertyWithCacheInterval.IsInterval)
{
try
{
if (_exTTimerTick.IsTickHappen())
{
//间隔推送全部变量
foreach (var variableRuntime in vardatas)
{
VariableChange(variableRuntime, variableRuntime.Adapt<VariableData>());
}
}
}
catch (Exception ex)
{
LogMessage.LogWarning(ex, BusinessBaseLocalizer["IntervalInsertVariableFail"]);
}
}
await Delay(default).ConfigureAwait(false);
}
}
/// <summary>
/// 执行间隔插入变量的操作。
/// </summary>
protected virtual void IntervalInsertVariable()
{
if (_businessPropertyWithCacheInterval.IsInterval)
{
try
{
if (_exTTimerTick.IsTickHappen())
{
//间隔推送全部变量
foreach (var variableRuntime in CurrentDevice.VariableRunTimes)
{
VariableChange(variableRuntime.Value, variableRuntime.Value.Adapt<VariableData>());
}
}
}
catch (Exception ex)
{
LogMessage.LogWarning(ex, BusinessBaseLocalizer["IntervalInsertVariableFail"]);
}
}
}
/// <summary>
/// 在启动前执行的异步操作。

View File

@@ -19,12 +19,10 @@ public class CacheDBItem<T> : IPrimaryIdEntity
{
public CacheDBItem()
{
Id = CommonUtils.GetSingleId();
}
public CacheDBItem(T value)
{
Id = CommonUtils.GetSingleId();
Value = value;
}

View File

@@ -1,6 +1,6 @@
<Project>
<PropertyGroup>
<Version>7.2.0.61</Version>
<Version>7.2.0.62</Version>
</PropertyGroup>
<ItemGroup>