太阳当空照-Windows服务化总结

2023-11-21 06:20

本文主要是介绍太阳当空照-Windows服务化总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、概述

服务化这不算是一个技术指标,只是在日常开发和运维部署过程中,软件系统常见的一个运行状态,在Windows中,笔者之前的相关文章已经对常见的三方实现应用程序服务化的工具进行了指令、配置等相关说明,本篇文章,是对现有Windows中,常见方式的总结和分类(个人看法)。

ggcy-blog-service-sc-header

文章目录

    • 一、概述
    • 二、分类
      • 2.1 三方服务化工具
        • `sc`
        • `Instrsrv`和`srvany`
        • `Winsw`
        • `Nssm`
      • 2.2 应用场景
      • 2.3 应用软件自带脚本
      • 2.4 语言编码服务化
    • 三、总结
    • 四、参考链接

二、分类

2.1 三方服务化工具

sc

Windows中自带进行服务化运行的管理工具,能够对符合Windows服务化运行的应用程序,实现服务注册和服务运行管理,目前笔者没有找到,如何通过工具去判定当前目标程序是否能够在注册之后,能够符合规范要求正常运行。

相关文章

[太阳当空照-Windows服务化方式脚本封装sc指令]

https://blog.csdn.net/qq_28806349/article/details/118946654

[太阳当空照-Windows服务化方式sc.exe应用]

https://blog.csdn.net/qq_28806349/article/details/118771065

[原创 太阳当空照-Windows服务化方式sc.exe指令清单]

https://blog.csdn.net/qq_28806349/article/details/119363744

优点:

  • 系统自带
  • 指令简单
  • 学习成本低

缺点:

  • 目标服务化引用需要能够满足Windows服务化标准,并不是每一个应用程序都能支持该方式服务化
  • 指令基础配置易错率高,需要对服务化运行有一定的了解
Instrsrvsrvany

Instrsrvsrvany都属于微软提供的Microsoft Windows Resource Kit Tools全家桶工具包中的一部分,虽然在高版本系统中不在升级支持,但是工具还是可以跨Windows系统版本使用的,Instrsrv主要用于为Srvany添加一个应用服务配置到注册表中,人工添加需要服务化运行的任意Windows程序,Srvany服务运行过程中充当,服务化操作的翻译官,将相关服务化的指令转换为启动配置到注册表中的应用程序执行管理的操作。

相关文章

[太阳当空照-Windows服务化方式instsrvsrvany]

https://blog.csdn.net/qq_28806349/article/details/119152581

优点:

  • 几乎能支持所有能持续运行的应用程序或脚本在Windows中的服务化运行
  • 轻量级
  • 支持GUI程序服务化

缺点:

  • 复杂度较高,快速部署需要脚本化处理
  • 已停止维护,无后续版本
  • 指令资料较少
Winsw

这是目前还在持续迭代的一个款适合Windows对应用程序实现服务化的的应用软件,目前笔者使用的为2.x版本,在之后可能会很快出到3.x并且为.net5.0应用,使用者目前能够通过捆绑模式使用配置文件,进行应用程序的服务注册和服务管理,未来应该能够使用上全局模式

相关文章

[太阳当空照-Windows服务化方式Winsw基本配置]

https://blog.csdn.net/qq_28806349/article/details/119283250

[太阳当空照-Windows服务化方式Winsw应用]

https://blog.csdn.net/qq_28806349/article/details/119305991

优点:

  • 版本持续迭代中(至今)
  • 学习资料较多
  • 对日志的控制粒度细
  • 常用指令简单上手
  • 支持GUI程序服务化

缺点:

  • 配置文件中的相关配置需要一定的学习成本
  • 对初学者友好度不高,有一定上手难度
  • 目前(2.x)仅仅支持应用程序和配置一对一模式
  • 任务管理器服务不可见
Nssm

一个c/c++应用,用于实现Windows应用的实现服务化配置的工具,不区分是否符合Windows服务化规范,只要能够正常在Windows中运行,就可以尝试进行使用Nssm实现服务化配置,支持指令和可视化配置两种方式,可以自由切换。

相关文章

[太阳当空照-Windows服务化方式NSSM指令清单]

https://blog.csdn.net/qq_28806349/article/details/119408134

[太阳当空照-Windows服务化方式NSSM应用]

https://blog.csdn.net/qq_28806349/article/details/119429952

优点:

  • 支持指令和可视化配置
  • 基础操作简单
  • 支持全局指令操作
  • 任务管理器中服务可见
  • 支持GUI程序服务化

缺点:

  • 版本已在2017年停止迭代
  • 细节指令具有一定复杂度

2.2 应用场景

对于以上三方软件的使用场景,对应已知能够进行Windows服务化的应用程序以上几种方式都可以,服务化程序集不多,又默认不支持Windows服务化,可以直接使用WinswNssm,对于需要在任务管理器中的服务进行可视化配置时,就选择NssmWinsw注册的服务默认不在任务管理器的服务显示,需要去到服务列表和通过指令查询才可以看到,如果希望进行服务继承管理处理,可以选择WinswNssm或者srvany+SrvanyUI_1.0:https://wangye.org/blog/archives/644/。

blog-jrz-service-srvanui

2.3 应用软件自带脚本

在日常使用中,很多应用软件,在下载时,就已经打包或者自带服务化启动脚本,便于使用者在本地进行对应的Windows服务化,这样省去了一部分软件在使用中,依托控制台的带来退出即停止的问题,这类软件,常常是软件开发过程中的基础服务设施,例如:RedisMongoDB等。

2.4 语言编码服务化

对于系统开发人员来说,对应开发语言也大多拥有内置的相关类库和模块能够支持,开发的应用程序,直接服务化,而不依托于三方工具,例如:Csharp/C#使用TopshelfHostServiceC使用windows.hGo使用github.com/kardianos/service等等。

三、总结

通过对以上一个工具的使用和对服务化的进一步了解,得出以下结论:

1、符合Windows服务化规范的应用直接支持在注册表中注册的服务配置后,在Windows10系统中的注册表编辑器中,目录HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下对应的就是相关服务的配置内容。

blog-jrz-service-regit

2、三方程序实现服务化目标程序,主要是由于三方程序自身符合Windows服务化规范(调用相关系统函数),能够将用户操作状态转换为控制应用程序运行状态转换的能力,三方服务作为父进程,以子进程的方式启动对应的目标应用程序,笔者将之称为套壳同时注册时一定得用管理员权限,总是安装失败时,可以考虑暂时关闭本地主机的安全管理软件,为了服务配置注册到注册表

四、参考链接

【1】https://docs.microsoft.com/zh-cn/windows/win32/services/about-services

【2】https://wangye.org/blog/archives/644/

这篇关于太阳当空照-Windows服务化总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/400426

相关文章

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三