zoukankan      html  css  js  c++  java
  • services开发总结

    服务就是一个随操作系统自动启动,不需要用户登录操作系统就能启动的特定,对于一些需要一开机就需要启动的程序来说非常的方便。但是服务与一般的程序有一些特别之处,具有如下的特点:

    a.自启动。

    b.不需要和用户交互。不会由于一些错误的操作而把服务给关闭了。

    c.可以长时间运行,

    1.如何创建一个.net service服务

    创建一个.net 服务主要包括2部分:serviceInstaller和一个继承自ServiceBase类的解决现实问题的程序代码。

    1.1 继承自ServiceBase类的service

    首先我们需要添加一个Windows Service的新项,如下图所示:

     添加ServiceAppTest完成后,在ServiceAppTest中有两个重要的方法OnStart和OnStop方法,我们需要在这两个方法中添加我们的逻辑代码。

    1.2添加Installer.

    在ServiceAppTest的设计视图中,右键->Add Installer,如下图所示

     在添加完installer后,在ServiceAppTest中会多出两个组件:serviceProcessInstaller1和ServiceInstaller1,我们可以在serviceInstaller1中添加服务的名称、描述、启动类型。在做完上面这些操作后,一个基本的windows service的架构就已经完成了,但是现在我们的服务不能做任何的事情,因为在OnStart和OnStop方法中没有添加任何的代码,接下去我们来完成这两个方法的代码。

     1.3添加OnStart和OnStop方法

    在Onstart方法中一般是添加启动相关逻辑的代码,比如可以启动用于处理从客户端过来的socket连接的、数据查询等。一般做法是启动线程,然后让线程等待连接过来,尽量不要在onstart中启动比较耗时的操作,不然在windows service控制界面启动service的时候好以后很容易出现超时的错误。

    在OnStop方法,一般是用于释放资源的操作,也要尽量简单.

    2.发布服务到系统中

    当我们需要手动部署windows service的时候,一般都是利用.net Frameworl中自带的installUtil.exe来完成注册,格式一般如下:

    installUtil.exe service程序的全路径,如: installUtil.exe "c: est estService.exe"

    卸载服务也可以采用insallutil.exe来完成,如: installUtil.exe "c: est estService.exe" /u

    2.1注意问题

    利用installuntil.exe命令来部署的时候会报文件找不到的错误,明明所有的service程序和依赖的dll都在目录下,为什么还会报FileNotFound的问题,一般会有如下的几个原因

    a.如果是手动部署service,并且文件都是从其他地方(网络)拷贝过来,文件会被加锁(右键->属性),如下图:。出现这种情况只要解锁文件就可以了,然后重新利用installutil.exe来注册一般就可以。

    b.一般installuntil.exe会存在两个目录中,一个在C:WindowsMicrosoft.NETFrameworkv+.net feamework版本;还有一个是在C:WindowsMicrosoft.NETFramework64v+.netframework版本号中。这两个在一般情况是就是64位程序和32位程序的区别。一般情况下可以使用C:WindowsMicrosoft.NETFrameworkv+.net feamework版本下的installutil.exe来注册服务就可以了。

  • 相关阅读:
    我对JavaWeb中中文URL编码的简单总结
    URL的编码和解码
    Maven警告解决:Using platform encoding (UTF-8 actually)
    JavaWeb编码浅解
    pageContext对象的用法详述
    JspSmartUpload 简略使用
    Web开发相关笔记 #05# MySQL中文无法匹配
    Web开发相关笔记 #04# WebSocket
    Eloquent JavaScript #02# program_structure
    Eloquent JavaScript #01# values
  • 原文地址:https://www.cnblogs.com/VARForrest/p/12099496.html
Copyright © 2011-2022 走看看