- 浏览: 469519 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
mrshen:
很棒,在其他大神的博客上理清了思路看懂之后,来lz这里用例子学 ...
RED-BLACK(红黑)树的实现TreeMap源码阅读 -
a939639017:
yanf4j check不下来 ?
Java nio 2.0 AIO -
hellostory:
又是抄来的 - -
mysql分表方案 -
davidluoye:
为什么不说下支持的数据库呢?
模糊查询的优化 -
oliveevilo:
表示没看懂
Synchronized和java.util.concurrent.locks.Lock的区别
我们将研究如何创建一个作为 Windows 服务的应用程序。内容包含什么是 Windows 服务,如何创建、安装和调试它们。会用到 System.ServiceProcess.ServiceBase 命名空间的类。 什么是 Windows 服务? Windows 服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合。它没有用户界面,并且也不会产生任何可视输出。任何用户消息都会被写进 Windows 事件日志。计算机启动时,服务会自动开始运行。它们不要用户一定登录才运行,它们能在包括这个系统内的任何用户环境下运行。通过服务控制管理器, Windows 服务是可控的,可以终止、暂停及当需要时启动。 Windows 服务,以前的 NT 服务,都是被作为 Windows NT 操作系统的一部分引进来的。它们在 Windows 9x 及 Windows Me 下没有。你需要使用 NT 级别的操作系统来运行 Windows 服务,诸如: Windows NT 、 Windows 2000 Professional 或 Windows 2000 Server 。举例而言,以 Windows 服务形式的产品有: Microsoft Exchange 、 SQL Server ,还有别的如设置计算机时钟的 Windows Time 服务。 创建一个 Windows 服务 我们即将创建的这个服务除了演示什么也不做。服务被启动时会把一个条目信息登记到一个数据库当中来指明这个服务已经启动了。在服务运行期间,它会在指定的时间间隔内定期创建一个数据库项目记录。服务停止时会创建最后一条数据库记录。这个服务会自动向 Windows 应用程序日志当中登记下它成功启动或停止时的记录。 Visual Studio .NET 能够使创建一个 Windows 服务变成相当简单的一件事情。启动我们的演示服务程序的说明概述如下。 1. 新建一个项目 2. 从一个可用的项目模板列表当中选择 Windows 服务 3. 设计器会以设计模式打开 4. 从工具箱的组件表当中拖动一个 Timer 对象到这个设计表面上 ( 注意 : 要确保是从组件列表而不是从 Windows 窗体列表当中使用 Timer) 5. 设置 Timer 属性, Enabled 属性为 False , Interval 属性 30000 毫秒 6. 切换到代码视图页 ( 按 F7 或在视图菜单当中选择代码 ) ,然后为这个服务填加功能 Windows 服务的构成 在你类后面所包含的代码里,你会注意到你所创建的 Windows 服务扩充了 System.ServiceProcess.Service 类。所有以 .NET 方式建立的 Windows 服务必须扩充这个类。它会要求你的服务重载下面的方法, Visual Studio 默认时包括了这些方法。 ? Dispose – 清除任何受控和不受控资源 (managed and unmanaged resources) ? OnStart – 控制服务启动 ? OnStop – 控制服务停止 安装 Windows 服务 Windows 服务不同于普通 Windows 应用程序。不可能简简单单地通过运行一个 EXE 就启动 Windows 服务了。安装一个 Windows 服务应该通过使用 .NET Framework 提供的 InstallUtil.exe 来完成,或者通过诸如一个 Microsoft Installer (MSI) 这样的文件部署项目完成。 添加服务安装程序 创建一个 Windows 服务,仅用 InstallUtil 程序去安装这个服务是不够的。你必须还要把一个服务安装程序添加到你的 Windows 服务当中,这样便于 InstallUtil 或是任何别的安装程序知道应用你服务的是怎样的配置设置。 1. 将这个服务程序切换到设计视图 2. 右击设计视图选择“添加安装程序” 3. 切换到刚被添加的 ProjectInstaller 的设计视图 4. 设置 serviceInstaller1 组件的属性: 1) ServiceName = My Sample Service 2) StartType = Automatic 5. 设置 serviceProcessInstaller1 组件的属性 1) Account = LocalSystem 6. 生成解决方案 在完成上面的几个步骤之后,会自动由 Visual Studio 产生下面的源代码,它包含于 ProjectInstaller.cs 这个源文件内。 用 InstallUtil 安装 Windows 服务 现在这个服务已经生成,你需要把它安装好才能使用。下面操作会指导你安装你的新服务。 1. 打开 Visual Studio .NET 命令提示 2. 改变路径到你项目所在的 bin\Debug 文件夹位置 ( 如果你以 Release 模式编译则在 bin\Release 文件夹 ) 3. 执行命令“ InstallUtil.exe MyWindowsService.exe ”注册这个服务,使它建立一个合适的注册项。 4. 右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台 5. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的 Windows 服务已经包含在服务列表当中了 6. 右击你的服务选择启动就可以启动你的服务了 在每次需要修改 Windows 服务时,这就会要求你卸载和重新安装这个服务。不过要注意在卸载这个服务前,最好确保服务管理控制台已经关闭,这会是一个很好的习惯。如果没有这样操作的话,你可能在卸载和重安装 Windows 服务时会遇到麻烦。仅卸载服务的话,可以执行相的 InstallUtil 命令用于注销服务,不过要在后面加一个 /u 命令开关。 调试 Windows 服务 从另外的角度度看,调试 Windows 服务绝不同于一个普通的应用程序。调试 Windows 服务要求的步骤更多。服务不能象你对普通应用程序做的那样,只要简单地在开发环境下执行就可以调试了。服务必须首先被安装和启动,这一点在前面部分我们已经做到了。为了便于跟踪调试代码,一旦服务被启动,你就要用 Visual Studio 把运行的进程附加进来 (attach) 。记住,对你的 Windows 服务做的任何修改都要对这个服务进行卸载和重安装。 附加正在运行的 Windows 服务 为了调试程序,有些附加 Windows 服务的操作说明。这些操作假定你已经安装了这个 Windows 服务并且它正在运行。 1. 用 Visual Studio 装载这个项目 2. 点击“调试”菜单 3. 点击“进程”菜单 4. 确保 显示系统进程 被选 5. 在 可用进程 列表中,把进程定位于你的可执行文件名称上点击选中它 6. 点击 附加 按钮 7. 点击 确定 8. 点击 关闭 9. 在 timer1_Elapsed 方法里设置一个断点,然后等它执行 总结 现在你应该对 Windows 服务是什么,以及如何创建、安装和调试它们有一个粗略的认识了。 Windows 服务的额处的功能你可以自行研究。这些功能包括暂停 (OnPause) 和恢复 (OnContinue) 的能力。暂停和恢复的能力在默认情况下没有被启用,要通过 Windows 服务属性来设置。
InstallUtil.exe 的用法
前面写了通常的写.net服务 的方法。 其实也可以不用该工具来安装服务,比如在一个Winform中点一个按钮来实现安装。 思路其实很简单,你通过 System.Configuration.Install.ManagedInstallerClass 类中的静态方法 InstallHelper就可以实现手工安装。 该方法的签名如下: public static void
InstallHelper(string[] args) /// <summary>
其中ServiceIsExisted 是判断服务是否存在的方法,代码如下: /// <summary> /// 检查指定的服务是否存在。 /// </summary> /// <param name="serviceName"> 要查找的服务名字 </param> /// <returns></returns> private bool ServiceIsExisted(string svcName) { ServiceController[] services = ServiceController.GetServices(); foreach (ServiceController s in services) { if (s.ServiceName == svcName) { return true; } } return false; } 然后把前面生成的myService.exe和这个winform生成的可执行文件放到同一个目录下, |
发表评论
-
Integer“==”和Integer“equals”
2013-09-01 12:37 1280以前有碰到Integer“==”和Integer“eq ... -
java枚举类型enum的使用
2013-08-07 09:57 8996分类: java2011-04-24 23:17 6 ... -
线上TOMCAT,JAVA参数配置
2013-06-08 11:57 1355export JAVA_HOME=/export/serve ... -
HttpUrlConnection不能设置Host
2013-06-05 18:01 2770调试了一天终于找到原因了,奶奶的!! 测试就报503错误, ... -
Java访问https接口实现
2013-03-05 22:06 4790用两种方式分别实现了,第一种是jdk原生的,代码稍微多点, ... -
深入理解HASHMAP
2013-01-06 11:48 1073Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到 ... -
Commons-Validator验证框架2
2012-11-29 14:00 1428Commons-Validator 博客分类: java ... -
java concurrent 探秘
2012-08-06 16:44 900我们都知道,在JDK1.5 ... -
ReentrantLock与syncronized的不同
2012-08-06 14:22 1171ReentrantLock 一个可重入的互斥锁定 ... -
log4j 日志大小
2012-08-03 17:47 1923今天群里一个哥们问一个问题: 我想先控制每天日 ... -
Apache Commons 包含的开源的工具类介绍
2012-07-24 10:17 1267原文地址:http://blog.csdn.n ... -
JAVA工具类之Apache的Commons Lang和Beanutils
2012-07-24 10:09 1426Apache Commons包估计是Java中使用最广发的工具 ... -
批处理启动JAVA程序(多JAR包)
2012-06-16 11:01 2283JavaJVMF# . 直接给出代码吧,下面是我自己为一个端口 ... -
中高级技术人员面试
2012-08-06 14:23 1362struts,spring,hiberate知识点。实际上对于 ... -
IO深度解析
2011-11-04 15:49 1157http://www.ibm.com/developerwor ... -
线程局部存储Thread Local Storage-TLS(总结整理)
2011-10-27 18:18 1783在线程的学习中我们知道每个线程除了共享进程的资源外还拥有各 ... -
正确理解ThreadLocal
2011-10-27 18:17 894http://www.iteye.com/topic/1038 ... -
读源码的建议
2011-10-11 22:01 1378才在论坛不经意间,看到有关源码阅读的帖子。回想自己前几年,阅读 ... -
java synchronized详解
2011-09-02 13:53 923Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候 ... -
开发中的陷阱
2011-09-02 09:58 9321. 虚拟机对字符串的处理 虚拟机是将字符串直 ...
相关推荐
我们可以使用 InstallerUtil.exe 工具来安装服务程序。这个工具可以在 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\ 文件夹下找到(也可以在 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ 文件夹下找到,...
2. **安装服务**: 在命令提示符中输入 `ServiceDemo.exe /install` 来安装服务。 3. **启动服务**: 使用命令 `net start DelphiService` 启动服务。 4. **检查服务状态**: 在“控制面板” -> “管理工具” -> “服务...
**创建Windows服务** 1. 启动Visual Studio 2010,选择"文件" -> "新建" -> "项目"。 2. 在项目模板中,选择".NET Framework 4",然后找到"Windows服务"模板,为项目命名并点击"确定"。 3. 在新生成的项目中,主要的...
以下是对"Topshelf创建windows服务,安装,启动"这一主题的详细解析。 1. **Topshelf的基本概念** Topshelf是一个轻量级的框架,它提供了一组简单的API,用于在.NET应用中创建Windows服务。开发者可以通过几行代码...
C#作为.NET框架的主要编程语言,提供了丰富的API来创建Windows服务。本项目"创建windows服务+Form+Web调用服务"结合了三种技术,旨在实现一个可以被用户界面(Form)和Web应用调用的后台服务。 1. **C# 创建 ...
创建Windows服务的第一步是建立一个新的C#项目,并引用`System.ServiceProcess`库。接着,创建一个继承自`ServiceBase`的类,这个类将代表你的服务。在类中,你需要重写`OnStart`和`OnStop`方法,分别定义服务启动和...
本文将深入探讨如何使用VS2008创建Windows服务以及服务的基本原理。 首先,理解Windows服务的基本概念至关重要。Windows服务是独立于用户会话的系统组件,通常在系统启动时自动启动,并在后台执行任务,如数据备份...
Visual C++源代码 27 如何创建安装卸载Windows服务程序Visual C++源代码 27 如何创建安装卸载Windows服务程序Visual C++源代码 27 如何创建安装卸载Windows服务程序Visual C++源代码 27 如何创建安装卸载Windows服务...
下面将详细介绍如何使用C#来创建一个简单的Windows服务。 首先,你需要在Visual Studio中创建一个新的项目。选择"Windows服务"模板,这会为你提供一个基本的服务框架。项目创建后,你将看到主要的代码文件`Service1...
### 使用C#创建Windows服务及发布Windows服务 #### 一、开发环境配置 为了确保能够顺利地进行Windows服务的开发与部署,首先需要准备好合适的开发环境。本案例中所使用的开发环境包括: - **操作系统**:Windows ...
总结来说,通过VC创建Windows服务程序,不仅可以让程序在用户登录之前或不需用户交互的情况下运行,还可以提高系统的稳定性和安全性。了解并掌握这一技能,对于开发系统级应用或后台服务程序的开发者而言至关重要。
创建Windows服务是为了让特定的应用程序或功能能够持续运行,即使没有用户交互也依然能正常工作。本文将详细介绍如何创建、配置和安装Windows服务。 首先,创建一个新的Windows服务项目。在Visual Studio中,可以...
### C++创建Windows服务知识点详解 #### 一、概述 本文详细介绍如何利用C++与Visual C++工具创建Windows NT服务程序。文章强调了一个关键概念——使用一个特定的C++类来简化服务程序的开发过程。这种方法的核心优势...
"Windows服务安装工具"是用于创建、配置和管理这些服务的实用程序,它允许开发者和系统管理员将自定义的服务集成到Windows环境中。 Windows服务的核心特性包括: 1. **启动类型**:服务可以设置为自动启动(系统...
1. **ServiceBase类**:它是创建Windows服务的起点,所有的服务都应继承自这个类。你可以在这个类中定义服务的行为,如启动、停止、暂停等事件的处理方法。 2. **OnStart()方法**:这是服务启动时被调用的方法,你...
本篇文章将深入探讨如何使用C#来创建Windows服务以及安装服务的关键步骤。 首先,我们需要了解C#中创建Windows服务的基础知识。Windows服务的创建主要依赖于.NET Framework提供的`System.ServiceProcess`命名空间。...
然后,创建一个新的Windows服务项目,在Visual Studio中选择"新建项目" -> "Windows服务"模板。 接下来,安装QuartzNet。你可以通过NuGet包管理器来添加依赖,搜索并安装"Quartz"包。安装完成后,你需要引入必要的...
总结,C#创建Windows服务涉及继承`ServiceBase`,实现关键方法,并通过`installutil.exe`或`AssemblyInstaller`进行安装。这个过程涉及到进程管理、权限控制等多个方面的知识,对理解和掌握.NET框架有重要作用。通过...
生成申请证书请求获取及安装中级CA证书安装服务器证书及配置绑定一、生成证书请求 进入IIS控制台 在“开始”菜单上,依次单击“所有程序”、“附件”和“运行”。 在“打开”框中,键入 inetmgr,然后单击“确定”。...
创建Windows服务的第一步是设置一个新的C#项目。在Visual Studio中,选择“新建项目”,然后在模板中找到“Windows服务”项目。这将生成一个包含`Service1.cs`的项目,其中包含一个基础的服务类。你需要继承`System....