项目需求要作一个定时扫表,将按条件查询到的数据插入或者更新到另外一个数据表的需求,老大要求让用window service来作html
由于之前没有作过,把此次的经历写出来.做为备忘.数据库
1.什么是windows服务windows
如下部份内容来自http://www.cnblogs.com/salomon/archive/2012/05/21/2511643.html安全
Windows服务,微软的官方定义是这样的:Microsoft Windows 服务(即之前的 NT 服务)使您可以建立在它们本身的 Windows 会话中可长时间运行的服务器
可执行应用程序。这些服务能够在计算机启动时自动启动,能够暂停和从新启动并且不显示任何用户界面。这些功能使服务很是适合在服务器上使用,每当函数
须要使用不会影响在同一台计算机上工做的其余用户的功能时也适用。还能够在不一样于登陆用户的特定用户账户或默认计算机账户的安全上下文中运行服务。 测试
这种描述过于抽象并且笼统。那么究竟什么是服务呢?首先Windows服务和普通应用同样是是一个应用程序,一个后台进程。但它又十分特殊,特殊在以spa
下几点: 设计
1.它一般在系统启动时用户登陆Windows以前由NET kernel中的SCM(Service Control manager)加载,并通常在系统启动时自动开启的。 3d
2.Windows服务独立于特定用户之上,也就是说它能够被一台计算机上任何用户所共用。
若是一个应用须要长时间的后台运行,而且独立于某个特定用户控制台,咱们能够考虑把它写成Windows服务。它一般没有界面(没有硬性限制,能够编
写有界面的Windows服务),一般随机启动,随机关闭而关闭,但也能够随用户须要手动启动,通常两种方法:1 Control Panel -> Administrative Tools
-> Services 2,由其它程序调用SCM提供的接口开启。相似于Windows服务东西好比UNIX的daemons,Dos下的运行于AUTOEXEC.BAT或者 CONFIG.SYS的TSR。常见的服务包括硬件驱动(打印机等),FTP服务,数据库服务,WEB服务等等。
2.编写
2.1 首先建立windows服务项目
如图,咱们在建立项目的时候选择windows 服务项目.来进行建立
2.2编写业务逻辑代码
咱们也能够将服务类 进行重命名. 这里的OnStart方法在服务启动的时候调用,
因此咱们能够将业务逻辑写在这里.建议封装一个类和方法来封装业务逻辑操做,而后在这里调用该类的方法
OnStop方法在服务中止的时候调用,咱们在这里能够写一些处理逻辑
3.设置服务名称和登陆权限
在 服务的 的设计界面 右键-添加安装程序.会添加一个ProjectInstaller.cs 类.
这里咱们须要注意两件事.
A.为设计界面中 serviceInstaller1 控件设置服务的启动类型
Automatic--自动启动
Manual--手动启动
B.设置服务启动登陆权限
这里咱们选择 以本地系统的权限来启动.
4.安装服务
windows 服务 微软提供了自带的安装程序 InstallUtil.exe
以管理员身份运行该程序,而后安装 你编译好的服务
cmd 会提醒你服务是否安装成功
5.查看服务状态
5.删除服务
咱们在调试过程当中,可能须要删除服务,而后修改代码.而后从新安装服务,再次调试.
注意,必须先删除服务 否者生成失败.
注意,删除服务以前必须先中止服务.不然删除失败.
建议开两个 CMD不要关闭 一个安装 一个删除,
6.进行服务调试
发开的时候咱们要测试业务逻辑和咱们预期的是否一致,可是调试服务又很麻烦.
咱们能够在Program.cs
static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; ServiceBase.Run(ServicesToRun); }
在这里调用你的业务类.new 出来直接调用
下面的注释掉.
Main函数也是这个服务启动的入口.
咱们将服务安装到本机而且启动以后,也能够以附加到进程的方式调试服务运行