Windows服务开发与部署指南

开发Windows服务时,经常需要经历一系列复杂的步骤,从创建项目到部署。本文将指导如何使用Visual Studio一步步完成这些任务。

创建Windows服务项目

首先,需要在Visual Studio中创建一个新的Windows服务项目。创建完成后,可以切换到代码视图开始编写代码。

在示例中,将编写一个每5秒向事件日志写入条目的服务,以确保服务按预期运行。以下是可以复制到项目中的代码:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.Timers; namespace Demo_Windows_Service { public partial class Service1 : ServiceBase { Timer myTimer = new Timer(); public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { // Starting // Handle Elapsed Event myTimer.Elapsed += new ElapsedEventHandler(OnElapsedTime); // Set Interval to 5 Seconds myTimer.Interval = 5000; // Enable the Timer myTimer.Enabled = true; } protected override void OnStop() { } private void OnElapsedTime(object source, ElapsedEventArgs e) { myTimer.Enabled = false; // Perform Processing Here DoSomething(); myTimer.Enabled = true; } private void DoSomething() { string sSource = "Demo Windows Service"; string sLog = "Log Something : " + DateTime.Now.ToString(); string sEvent = "Event Fired"; if (!EventLog.SourceExists(sSource)) EventLog.CreateEventSource(sSource, sLog); EventLog.WriteEntry(sSource, sEvent); EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.Information, 100); } } }

完成代码编写后,需要为服务添加一个安装程序。这将由安装项目调用。在Service1.cs的[Design]视图中,右键点击空白区域,然后选择“添加安装程序”。

完成后,将有两个对象需要配置,分别是serviceProcessInstaller1和服务installer1。

此部分定义服务将如何运行。可以在服务属性的登录选项卡中看到这些设置。可以选择服务以用户、LocalSystem、NetworkService或LocalService身份运行。

如果不清楚它们之间的区别,请参考以下描述:

  • 用户 - 可以是域用户或本地用户帐户,这些是非内置帐户,由管理员授予权限,因此访问权限可能会有所不同,请咨询管理员。
  • Local System或“NT AUTHORITY\SYSTEM” - 这是一个内置帐户,在本地系统上具有非常高的权限,并且在网络上代表计算机。
  • Local Service或“NT AUTHORITY\LOCAL SERVICE” - 这是一个内置帐户,具有与用户组成员相同的权限,这意味着它具有有限的访问权限。该帐户以无凭据的空会话访问网络资源。
  • Network Service或“NT AUTHORITY\NETWORK SERVICE” - 这是一个内置帐户,比用户组成员具有更多的权限。该帐户使用计算机帐户的凭据访问网络资源。

此部分定义服务的行为,它还将包含正在设置的服务的描述和名称。可以在服务属性的常规选项卡中看到这些设置。

现在已经完成了安装程序的配置。接下来,需要添加一个新的安装项目到解决方案中。

选择“安装项目”在“其他项目类型”下。选择后,将被引导到文件系统编辑器;如果没有发生,请右键点击项目,然后选择“视图”->“文件系统”。

在文件系统属性中,选择应用程序文件夹,然后右键点击它以添加一个“项目输出”。这是定义项目输出的地方,可以是可执行文件、类库,甚至是第三方DLL。在例子中,它是一个类库。

只需选择服务项目作为主要输出,然后点击确定。

现在它将显示所有输出以及Windows服务项目上的依赖项(如果有的话)。

接下来选择自定义操作;这定义了在安装、提交、回滚和卸载时复制的内容。

通过转到“应用程序文件夹”,选择在文件系统属性中定义的项目。

然后选择服务的主要输出:

现在它将显示它们现在已配置为安装、提交、回滚和卸载。

最后,可以放置安装程序的描述、作者、制造商、安装程序行为等。这是在“添加或删除程序”中显示的内容。

现在构建解决方案,然后构建安装项目。完成后,转到安装项目文件夹,并将安装程序复制到想要安装Windows服务的位置。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485