【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

便于运维的 Windows 服务

  • 2013-10-09
  • 本文字数:881 字

    阅读完需:约 3 分钟

过去几个月, DevOps on Windows 网站推出了一系列文章,详细讲解了开发者应怎样创建便于运维的Windows 服务。这一系列文章详细分析了如何克服在运维部门看来最困难的部分:Windows 服务的安装与其启动阶段。

其中有些困难是由于安装基于.Net 的Windows 服务时,普遍使用了 InstallUtil 这个非原生的 Windows 工具。同时要特别当心启动阶段的代码,它应在启动失败时确保提供清晰的错误信息,并且要能够支持运行时间较长的操作,例如从数据库中装载与缓存数据。

DevOps on Windows 网站为应对这些挑战提出的建议是基于某个非常简单的框架来创建Windows 服务,这个框架的基本前提是自包含性:即某个Windows 服务应用必须了解如何安装自己,并且妥善地处理启动阶段的各种错误。这个框架最主要的部分是以下三个类: BasicServiceInstaller BasicService BasicServiceStarter

BasicServiceInstaller提供了自行安装与卸载的功能,它为应用程序返回一个 Installer 对象,这个类提供了创建定制化安装过程的基本功能。自行安装功能意味着运维团队不需要再使用 sc 或 InstallUtil 之类的外部工具了。

BasicService确保你在启动阶段正确地与服务控制管理器进行交互,作为一种最佳实践。这个Windows 进程会管理所有已注册的Windows 服务的方方面面,包括它们的整个生命周期,并在此阶段决定这些服务所应遵循的规则。BasicService 在以下两个方面为你提供帮助:它首先确保Windows 服务无法启动时,会将有意义的错误代码返回给服务控制管理器。其次,它帮助开发者在启动阶段执行运行时间较长的操作,并且不必担心服务控制管理器会强制中止这个Windows 服务。

最后, BasicServiceStarter将负责决定这个应用的运作模式:安装服务、卸载服务、以控制台方式运行,或者是以 Windows 服务方式运行。BasicServiceStarter 还确保在 Windows 服务启动阶段可能发生的任何后台线程的异常信息都将报告给 Windows 事件日志。

这一系列共包含 7 篇文章,详细解释了这个框架的各种细节。这个网站的观点是:“与其关注于自动化,不如更加关注于你的软件的一致性与简单性”。

查看英文原文: Operations-Friendly Windows Services

2013-10-09 07:201610
用户头像

发布了 428 篇内容, 共 171.9 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

借助第一性原理开启中台建设

数字圣杯

数据中台 数字化转型

认识数据产品经理(三 成为数据产品经理)

马踏飞机747

大数据 数据中台 数据分析 产品经理

反对996,但是选择996是一个怎样的矛盾心态?

顾强

职场 加班

《硅谷革命:成就苹果公司的疯狂往事》读后感

顾强

使用jdbcSstoragerHandler 处理mysql、oracle 、hive数据

飞哥

工作两年简历写成这样,谁要你呀!

小傅哥

面试 小傅哥 简历优化 找工作

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (五)第一个单元测试

编程道与术

Java 编程 软件测试 TDD 单元测试

你竞争我得利之零售变革

孙苏勇

行业资讯

高效阅读,成就自我-《麦肯锡精英高效阅读法》读后感

顾强

读书笔记 读书 读书方式

有了容器为什么kubernetes还需要Pod?

架构师修行之路

Kubernetes 分布式 云原生 pod

高仿瑞幸小程序 08 创建第一个云函数

曾伟@喵先森

小程序 微信小程序 大前端 移动

用SpreadJS实现在线Excel的录入与展示,提升企业医保信息化服务水平

葡萄城技术团队

SpreadJS 医保信息化 在线excel

延时任务的几种实现方式

郭儿的跋涉

Java 延时任务 延时消息

基于XGB单机训练VS基于SPARK并行预测(XGBoost4j-spark无痛人流解决方案)

黄崇远@数据虫巢

学习 算法

编写制度的几点实用建议

石君

制度 编写制度 安全管理

我常用的在线工具清单

彭宏豪95

效率 效率工具 工具

Spring 中不同依赖注入方式的对比与剖析

Deecyn

spring

“字节”不断“跳动”,卡拉永远 OK?

无量靠谱

字节跳动 诺基亚 危机

交易上链——中心化数字资产交易所的完美解决之道

Tux Hu

区块链 智能合约 数字货币 去中心化网络 数字资产

编程的门槛 - 抄作业的得与失

顿晓

编程门槛 编程思维 动手能力 抄作业

21天养不成习惯,28天也不行。不要痴心妄想。

赵新龙

TGO鲲鹏会 习惯养成

爱是恒久忍耐,又有恩慈

霍太稳@极客邦科技

身心健康 心理

Dubbo集成Sentinel实现限流

Java收录阁

sentinel

从波音747学项目管理

顾强

项目管理 读书感悟 沟通

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (四)关于单元测试的常见错误观念和做法

编程道与术

Java 编程 软件测试 TDD 单元测试

通过一个聊天应用学习 Deno

寇云

typescript 后端

智浪

Neil

后浪 智能时代 智浪

回“疫”录(15):在家SOHO,是你想要的工作方式吗?

小天同学

疫情 回忆录 现实纪录 纪实 远程办公

算法工程师的发展路径

Lucien

业务信息化操作系统(BIOS)——中台的核心产出物

孤岛旭日

中台 操作系统 企业信息化

面向页面的移动端架构设计

稻子

flutter ios android 大前端 架构模式

便于运维的Windows服务_Windows_João Miranda_InfoQ精选文章