前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows Service 小品

Windows Service 小品

作者头像
喵叔
发布2020-09-08 16:44:31
7880
发布2020-09-08 16:44:31
举报
文章被收录于专栏:喵叔's 专栏喵叔's 专栏

我们通过 Windows 服务可以创建在 Windows 会话中长时间运行的应用程序。服务可以跟随计算机一起启动,并且可以暂停、停止和重启。Windows 服务和 Windows Form 程序最大的不同点是 Windows 服务没有任何用户界面。Windows 服务一般用于后台处理数据,例如批量信息发送、定时执行任务、进程监视等方面。并且还可以针对不同的登录账户执行不同的服务操作等。对于创建 Windows 服务没有哪个开发平台比 .NET Framework 更加便捷,尤其是利用 C# 开发 Windows 服务对于程序员来说说简单的飞起。 Windows 服务虽然开发很简单但是注意事项太多了,多说开发人员在开发的时候往往会忽略一些东西,那么这篇文章就带领读者详细讲解一下 Windows 服务。

Windows 服务体系结构包含三个模块:服务模块、服务控制模块和服务配置模块。下面我们来详细讲解一下这三个模块。

  1. 服务模块 Windows 服务的核心模块,主要包含三个部分:入口函数 、Service 函数和处理程序。它们都由 SCM (服务控制器)控制,SCM 可以说是 Windows 服务核心的核心。它是操作系统的一个组成部分,用于和 Windows 服务进行通信,操作系统依靠 SCM 控制 Windows 服务进程的启动、停止和交互。
  • 入口函数,程序的入口,在这里可以注册多个服务函数;
  • Service 函数,它包含服务的实际功能。SCM 为每个需要启动的服务调用 Service 函数;
  • 处理程序,响应来自 SCM 的事件,所响应的事件包括:停止、暂停、重启等。

2.服务控制模块 负责把控制请求(如:启动、停止、暂停和重启)发送给服务。服务控制模块独立于 SCM 和服务本身。它的主要作用有两个:

  • 询问服务的状态并实现响应自定义控制代码的处理程序;
  • 向服务发送控制代码并处理程序应该响应发送的事件。

3.服务配置模块 负责安装服务,它会把服务复制到文件系统中,以及把服务的信息写到注册表中。其中注册表中的信息主要用于 SCM 开始和启动服务。这里需要注意:

  • 服务必须在注册表中配置不然服务将无法启动,这是因为注册表包含服务的启动类型;
  • 我们必须设置服务的用户、依赖关系。这些工作都是在服务配置程序中进行的。

.NET 中和服务相关的类都位于命名空间 System.ServiceProcess 中。它包含了四个类:ServiceBase 、 ServiceController 、ServiceProcessInstaller 和 ServiceInstaller。ServiceBase 类是服务的基类,它定义了一些可被重载的函数,通过重载这些函数服务控制管理器就可以控制 Windows 服务程序。常用的可重载的函数包括:OnStart()、OnStop()、OnPause() 以及 OnContinue() 。如果涉及特殊用途那么可以重载 OnCustomCommand() 函数来完成。ServiceBase 类还为我们提供了很多属性,常用的属性包括:ServiceName 属性(指定 Windows 服务名称)、 CanPauseAndContinue属性(是否允许暂停并恢复服务) 和 CanStop 属性(是否允许停止服务)。 ServiceController 使我们可以连接到正在运行或已停止的服务。通过它可以更改服务状态并获取有关服务的信息。创建服务控制器类的实例时,我们设置与安装的 Windows Service 交互属性。ServiceController 主要用于管理 SCM 的工具。 ServiceProcessInstaller 和 ServiceInstaller 主要用于服务的安装配置,它们执行特定于其所关联服务的操作。安装工具用来将与服务关联的注册表值写入注册表项。 具用来将与服务关联的注册表值写入注册表项。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档