:Windows 服务与定时任务)
前言除了 Web 端的实时展示系统还需要后台定时处理数据——比如环境数据的统计汇总、历史数据归档、报警推送等。本章介绍 Windows 服务的实现。项目结构解决方案中有独立的 Windows 服务项目windowsService/ ├── windowsService/ # 服务主程序 ├── windowsService.Domain/ # 服务专属实体 └── windowsService.Infrastrue/ # 服务数据访问此外还有两个工具项目项目功能DataOperation数据操作工具批量导入、清理SyncEnvData环境数据同步多库同步Windows 服务实现使用 .NET Framework 的ServiceBase基类public partial class MainService : ServiceBase { private System.Timers.Timer _timer; public MainService() { InitializeComponent(); } protected override void OnStart(string[] args) { // 启动时执行 _timer new System.Timers.Timer(); _timer.Interval 60000; // 每分钟执行一次 _timer.Elapsed OnTimerElapsed; _timer.Start(); } private void OnTimerElapsed(object sender, ElapsedEventArgs e) { // 定时任务逻辑 // 1. 统计小时/日平均温湿度 // 2. 归档过期数据 // 3. 检查报警阈值 } protected override void OnStop() { _timer?.Stop(); } }服务安装编译后用installutil注册为 Windows 服务installutil.exe windowsService.exe.NET Core 中的 BackgroundServiceWebApi项目使用 .NET Core 的BackgroundService来实现 TCP 监听它本质上也是一种常驻后台服务// Startup.cs services.AddHostedServiceTcpSensorService();相比传统的 Windows ServiceBackgroundService开发更简洁而且跨平台。数据同步策略SyncEnvData项目负责多数据库之间的环境数据同步从主库拉取最新数据同步到备份库或分析库处理同步冲突和失败重试public class DataSyncService { public async Task SyncFacilityData() { // 1. 从源库读取增量数据 var sourceData await _sourceRepo.GetNewData(lastSyncTime); // 2. 批量写入目标库 await _targetRepo.BulkInsert(sourceData); // 3. 更新同步时间戳 lastSyncTime DateTime.Now; } }小结Windows Service 处理定时汇总、归档、报警等后台任务.NET Core 的BackgroundService更轻量适合跨平台定时任务与 Web 应用解耦互不影响下一章也是一章介绍系统的部署与运维。上一篇第6章 — 系统Logo与品牌定制下一篇第8章 — 部署与运维