topshelf
2016-03-17 13:45
323 查看
topshelf和quartz
介绍
基础用法
调试及安装
可选配置
多实例支持及相关资料
quartz.net
上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客。
topshelf相对原生来说,调试起来比较方便,可以在开发时以控制台的形式直接f5调试,发布时用命令以服务的形式部署。还一个比较有用的特性是支持多实例的部署,这样可以在一台机器上部署多个相对的服务。类似的工具有instsrv和srvany。
问题一:不使用Package管理工具如何安装Package呢?
答:使用Package Manager Console.
问题二: 如何安装特定版本的程序集?
答: 在 Package Manager Console 中使用 带参数的 Install-Package 命令
通过 TooLS -> Libary Manager Console -> Package Manager Console 即可打卡面板。
输入Install-Package Microsoft.AspNet.SignalR -Version 1.1.0(使用SignaR 1.1.0 为例子)
问题三:如何卸载特定的Package呢?
答:使用 Uninstall-Package 命令
例如:Uninstall-Package Microsoft.AspNet.SignalR -Version 1.1.0
示例代码:
其中Run方法的回调参数方法,在运行时执行,方法内是一些配置信息。
其中manager类是我们服务实现类,服务启动时通过WhenStarted调用对应实现的OnStart,停止一样。
RunAsLocalSystem()表示以本地系统账号运行,可选的还有网络服务和本地服务账号。
SetDescription("Topshelf测试例子"); 设置服务的描述
SetDisplayName("TopshelfExample"); 设置服务的显示名称
x.SetServiceName("TopshelfExample"); 设置服务的名称
Manager服务实现类:
安装时以管理员身份运行CMD,进入程序目录。
输入安装命令: TopshelfExample.exe install topshelf以事务的形式安装,只有成功和失败,兼容性较好,示例:
启动命令是TopshelfExample.exe start,停止TopshelfExample.exe stop
SetStartTimeout启动超时
SetStopTimeout停止超时
BeforeUninstall卸载前
AfterUninstall 卸载后回调
AfterInstall安装后回调
AfterRollback回滚后回调
DependsOnMsmq Msmq启动后再启动
EnablePauseAndContinue支持暂停
UseLog4Net (“.config")集成log4Net
UseNLog集成Nlog
start、top命令和原先参数格式一样,如卸载:
多实例有一个好处就是容灾,当一个服务部署多份时,这样其中任何一个服务实例挂了,剩余的可以继续执行。 多实例可以是主备的方式,主挂了备服务才会执行。也可以以负载均衡的方式实现,多实例抢占进程锁或分布式锁,谁拿到谁执行。
文档索引
github地址
topshelf命令列表
TopshelfExample.exe help
Net作业调度(五)—quartz.net动态添加job设计
Net作业调度(四)—quartz.net持久化和集群
Net作业调度(三) — Quartz.Net进阶
Net作业调度(二) -CrystalQuartz远程管理
Net作业调度(一) -Quartz.Net入门
topshelf和quartz内部分享
阅读目录:介绍
基础用法
调试及安装
可选配置
多实例支持及相关资料
quartz.net
上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客。
介绍
topshelf是创建windows服务的一种方式,相比原生实现ServiceBase、Install.Installer更为简单方便, 我们只需要几行代码即可实现windows服务的开发。topshelf本身支持windows及linux下mono上部署安装,同样也是开源的。topshelf相对原生来说,调试起来比较方便,可以在开发时以控制台的形式直接f5调试,发布时用命令以服务的形式部署。还一个比较有用的特性是支持多实例的部署,这样可以在一台机器上部署多个相对的服务。类似的工具有instsrv和srvany。
基础用法
Topshelf使用起来比较简单,通过nuget直接安装即可,目前最新的是3.2版本:问题一:不使用Package管理工具如何安装Package呢?
答:使用Package Manager Console.
问题二: 如何安装特定版本的程序集?
答: 在 Package Manager Console 中使用 带参数的 Install-Package 命令
通过 TooLS -> Libary Manager Console -> Package Manager Console 即可打卡面板。
输入Install-Package Microsoft.AspNet.SignalR -Version 1.1.0(使用SignaR 1.1.0 为例子)
问题三:如何卸载特定的Package呢?
答:使用 Uninstall-Package 命令
例如:Uninstall-Package Microsoft.AspNet.SignalR -Version 1.1.0
示例代码:
HostFactory.Run(x => { x.Service<Manager>(s => { s.ConstructUsing(name => new Manager()); s.WhenStarted(tc => tc.OnStart()); s.WhenStopped(tc => tc.OnStop()); }); x.RunAsLocalSystem(); x.SetDescription("Topshelf测试例子"); x.SetDisplayName("TopshelfExample"); x.SetServiceName("TopshelfExample"); });
其中Run方法的回调参数方法,在运行时执行,方法内是一些配置信息。
其中manager类是我们服务实现类,服务启动时通过WhenStarted调用对应实现的OnStart,停止一样。
RunAsLocalSystem()表示以本地系统账号运行,可选的还有网络服务和本地服务账号。
SetDescription("Topshelf测试例子"); 设置服务的描述
SetDisplayName("TopshelfExample"); 设置服务的显示名称
x.SetServiceName("TopshelfExample"); 设置服务的名称
Manager服务实现类:
public class Manager { public void OnStart() { Console.WriteLine("Service start."); } public void OnStop() { Console.WriteLine("Service stopped."); } }
调试及安装
调试和平常一样,直接f5即可:安装时以管理员身份运行CMD,进入程序目录。
输入安装命令: TopshelfExample.exe install topshelf以事务的形式安装,只有成功和失败,兼容性较好,示例:
启动命令是TopshelfExample.exe start,停止TopshelfExample.exe stop
可选配置
topshelf虽小但支持的可配置选项比较多,以下是部分示例:SetStartTimeout启动超时
SetStopTimeout停止超时
BeforeUninstall卸载前
AfterUninstall 卸载后回调
AfterInstall安装后回调
AfterRollback回滚后回调
DependsOnMsmq Msmq启动后再启动
EnablePauseAndContinue支持暂停
UseLog4Net (“.config")集成log4Net
UseNLog集成Nlog
多实例支持及相关资料
原生服务上是不支持的,topshelf支持使用不同的名称来部署多个同样的程序实例。 启动一个新实例:TopshelfExample.exe –instance “newinstallname” install
start、top命令和原先参数格式一样,如卸载:
TopshelfExample.exe –instance "TopshelfExample2" uninstall
多实例有一个好处就是容灾,当一个服务部署多份时,这样其中任何一个服务实例挂了,剩余的可以继续执行。 多实例可以是主备的方式,主挂了备服务才会执行。也可以以负载均衡的方式实现,多实例抢占进程锁或分布式锁,谁拿到谁执行。
文档索引
github地址
topshelf命令列表
TopshelfExample.exe help
quartz.net
关于quartz.net早先有系列介绍过,只贴下链接。Net作业调度(五)—quartz.net动态添加job设计
Net作业调度(四)—quartz.net持久化和集群
Net作业调度(三) — Quartz.Net进阶
Net作业调度(二) -CrystalQuartz远程管理
Net作业调度(一) -Quartz.Net入门
相关文章推荐
- tomcat架构分析(connector BIO 实现)
- opewrt 之 crontab 之实际测试
- 创建第一个azure hadoop insight
- 立体匹配:关于用OpenCV彩色化middlebury网站给定的视差
- hadoop+spark配置笔记
- ARC下 NSString属性什么时候用copy,什么时候用strong?
- 可以免费自学编程的12个网站
- Tomcat集群与Session共享 + Nginx负载
- Docker初步认识安装和简单实例
- Docker初步认识安装和简单实例
- poj2823Sliding Window【线段树维护滚动区间最值】
- pthread_cleanup_push()/pthread_cleanup_pop()的详解
- CopyOnWriteArrayList与Collections.synchronizedList的性能对比
- linux开发环境搭建---tomcat---jenkis---svn
- Linux内核工程导论——内核种类
- LINUX二十个基础命令
- apache kafka监控系列-KafkaOffsetMonitor
- Html5_CSS_JS15个最佳教程网站和博客
- Zabbix之监控交换机 (OID)
- Kafka 架构原理、应用场景