C# 开发技巧创建强大的 Windows 服务程序
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
前言在实际工作中,我们常常需要开发运行在后台、无需用户交互的应用程序。例如,定时读取西门子PLC的数据并保存到数据库中。为了实现这一目标,我们可以选择使用C#创建一个Windows服务。 在本篇文章中,将介绍如何基于C#创建一个Windows服务,并实现对西门子PLC的定时读取和保存功能,希望这篇文章能为大家提供有价值的参考。 Windows 服务说明Windows 服务是一种特殊类型的应用程序,能够在系统启动时自动运行,并且无需用户登录即可执行。 它非常适合用于需要在后台持续运行的任务,尤其是在无人值守环境中。 适用场景1、持续运行的任务日志采集:定时收集系统或应用程序的日志数据。 网络代理:作为中间层处理网络请求和响应。 数据同步:定期同步不同系统之间的数据。 2、系统后台维护自动更新:定时检查并安装系统或应用程序的更新。 性能监控:实时监控系统的性能指标(如CPU、内存使用率等)。 备份任务:定时执行数据备份操作。 3、无人值守环境中的任务定时任务调度:在特定时间点执行预定义的任务。 设备监控:监控硬件设备的状态并进行相应处理(如读取PLC数据)。 核心特性1、通过服务控制管理器(SCM)管理 SCM 是 Windows 操作系统中用于管理服务的一个组件。通过 SCM,可以方便地安装、启动、停止、暂停和删除服务。 2、与用户登录状态无关 Windows 服务可以在没有任何用户登录的情况下运行。这意味着即使没有用户活动,服务也可以在后台持续工作。 3、支持系统启动时自动运行 可以配置服务在系统启动时自动运行,确保关键任务始终处于激活状态。这对于需要高可用性的应用尤其重要。 4、灵活的权限设置 Windows 服务可以配置不同的权限级别,允许它们访问特定的系统资源或执行特定的操作。例如,某些服务可能需要管理员权限才能正常运行。 5、事件日志记录 Windows 服务可以将运行时的信息记录到系统事件日志中,便于后续的故障排查和审计。 6、多实例支持 在某些情况下,可以运行多个相同的服务实例,每个实例处理不同的任务或数据集。 开发与部署开发工具:通常使用 C# 或其他 .NET 语言通过 Visual Studio 进行开发。 安装包:可以通过安装脚本或工具(如 sc.exe 命令行工具或第三方工具如 NSSM)来创建和管理服务。 调试与测试:可以使用 Visual Studio 的调试功能或专用的调试工具来测试服务的行为。 Windows服务创建1、创建一个新项目,项目模板选择Windows服务(.Net Framework): 2、项目名称为WindowsServiceDemo,项目创建完成后如下: 3、修改服务名称为SiemensPLCService:
我们可以在OnStart和OnStop里写一些代码逻辑。 9、写了一个简单的逻辑,就是每次服务启动或停止都会向指定的文件中写入一串信息。 我们直接运行刚刚创建的服务,发现是无法运行的,提示如下: 1、首先,使用管理员权限打开cmd命令行,然后进入这个路径下,便于直接操作InstallUtil。cdC:\Windows\Microsoft.NET\Framework\v4.0.30319 2、安装服务命令:installutil exe绝对路径 ; installutil C:\Users\Administrator\Desktop\WindowsServiceDemo\WindowsServiceDemo\bin\Debug\WindowsServiceDemo.exe 打开服务,可以看到TestService这个名称的服务已经安装完成, 3、安装完成后,双击打开,可以启动服务,也可以手动停止: installutil C:\Users\Administrator\Desktop\WindowsServiceDemo\WindowsServiceDemo\bin\Debug\WindowsServiceDemo.exe -u 总结 在这篇文章中,探讨了 Windows 服务的核心特性,包括如何通过服务控制管理器(SCM)进行管理、如何配置服务在系统启动时自动运行,以及如何利用这些特性来实现各种后台任务。我们还讨论了开发和部署服务的基本步骤,希望能为你提供一个清晰的指导。 阅读原文:原文链接 该文章在 2025/3/31 11:29:54 编辑过 |
关键字查询
相关文章
正在查询... |