6.28 Windows Serviece
描述:
A 软件,已经注册了一个windows服务并启用,现在需要在服务自己的一个类B里增加一个字段,服务的作用是返回一个该类型B的实例
做法
增加字段,替换服务文件,重新注册服务并开启,但是在A软件内的服务类型还是老版本的,返回的B类型数据有新加的字段,但是A软件内服务引用的接受数据的类型还是老类型,没有没有新加的字段.
windows服务
能创建可长时间运行的可执行应用程序
体系结构
System.ServiceProcess.ServiceBase -- 在创建服务时从 ServiceBase 类重写方法并定义代码,以确定服务在此继承类中的运行方式。
System.ServiceProcess.ServiceProcessInstaller 和 System.ServiceProcess.ServiceInstaller -- 使用这些类安装和卸载服务。
- ServiceController ,以与现有服务通信并控制其行为。
创建Windows服务
1 以编程方式编写服务。
2 用SV模板创建服务
两种方式都要做以下事情
设置 ServiceName 属性。
为你的服务应用程序创建必要的安装程序。
- 添加服务应用程序所必需的安装程序
- 通过从“生成”菜单选择“生成解决方案”来生成你的项目
- 安装服务
添加服务应用程序所必需的安装程序
切换到设计,右键添加安装程序
界面上生成两个文件serviceInstaller1,serviceProcessInstaller1
一个可以调整服务启动类型,一个设置账户可访问权限
ServiceProcessInstaller 组件适用于项目中的所有单个服务安装程序。
添加的安装程序和你的服务主体之间好像没有啥关系,只是记录一下这个服务的
安装windows服务(由类生成的服务)
管理员方式打开vstool下的VS2012 开发人员命令提示,cd到exe目录下,installutil xxx.exe(普通管理员的cmd不行)
然后就安装,启动服务
(我的测试程序是open一个文件,但是文件没被打开,手动再打开会显示文件被占用,可能这个服务一点界面相关的都不能有)
结论
windows服务不同于普通的exe执行文件,周期决定于应用程序,windows服务的生命周期长
用installutil方式将应用程序注册为服务
关于问题:
为什么服务更新不对?
因为我更改了服务地址:原来是http://192.168.40.31:8400/ACal/BaseService/mex
后来我注册的服务的地址是:http://192.168.40.31:8700/ACal/BaseService/mex
本机上注册的服务端口改变了,软件引用一个没有服务的地址,自然更新不了服务
6.28 Windows Serviece的更多相关文章
- Mysql-5.7.28 Windows安装
1.下载mysql-5.7.28-winx64社区版并解压 2.解压后配置环境变量 3.my.ini配置文件及初始化mysql命令 4.登录mysql 每次windows安装mysql时都需要百度,自 ...
- 微软官网下载windows系统有点全
第一步:访问:https://www.microsoft.com/zh-cn/software-download/windows10ISO/ 默认就只能下载win10,这怎么行呢.巨硬程序员貌似没做服 ...
- Node.js【2】开发环境搭建(Windows、Linux&Mac)
安装方式有非常多种,以下仅仅是我喜欢的一种方式,安装的路径不一定要跟我一样. 眼下最新的版本号是v0.10.28 Windows 1.下载(放到E:\node\nodejs): http://node ...
- windows 10 超级优化,同时解决本地磁盘100%的问题
windows 10 超级优化,同时解决本地磁盘100%的问题 我的系统是笔记本I7处理器,配置了web服务器IIS 和一个数据库(mysql7),同时启用了虚拟机(表中已禁用),以及安装了offic ...
- Java: 在不同windows主题下,JFrame窗口设置最佳高度的解决方案
//设置窗口的大小,无论使用怎样的windows主题,都能灵活的应对,显示合适的窗口大小,一定要在JFrame.setVisible(true)之前调用, //替代传统的frame.setSize(w ...
- Windows系统常见问题
1.Windows自动更新灰色不能修改HKEY_LOCAL_MACHINE/Software/Policies/Microsoft/WindowsWindowsUpdate的资料夹,在WindowsU ...
- Windows下安装配置Apache+PHP+Mysql环境
1.下载相关安装包 Apache下载: http://archive.apache.org/dist/httpd/binaries/win32/ ,选择httpd-2.2.25-win32-x86-n ...
- C++读取文件夹中所有的文件或者是特定后缀的文件
由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件. 下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件 参考: http://www.2cto. ...
- metasploit模块功能介绍
metasploit的模块构成及功能分析 转载自----http://forum.cnsec.org/thread-94704-1-1.html 今天我们介绍一下metasploit的基础架构和 市 ...
随机推荐
- python学习之while循环
Python While 循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件: 执行语 ...
- ABP从入门到精通(1):aspnet-zero-core项目启动及各项目源码说明
一.ABP的简单介绍 ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用最佳实践 ...
- pb日志查看记录
因为日志的种类比较多,这里记录下来,方便查看! 1 pb下发日志查看 目前已经确定220-224 603都是这么查看的.手工下发的业务应该都是这么查看的,其实只要去确定步骤2中的序号,就可以直接进入步 ...
- (转)生产者/消费者问题的多种Java实现方式 (待整理)
实质上,很多后台服务程序并发控制的基本原理都可以归纳为生产者/消费者模式,而这是恰恰是在本科操作系统课堂上老师反复讲解,而我们却视而不见不以为然的.在博文<一种面向作业流(工作流)的轻量级可复用 ...
- LeetCode-Interleaving String[dp]
Interleaving String Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. Fo ...
- 如何在github制作一个网页
1.首先得先注册一个github账号,官网:https://github.com/ 2.注册完,登录账号进入首页,点右上角的 ‘+’ 创建新的仓库 3. 点击setting,选择一个主题, 4. 选完 ...
- Java项目 打war包方法
我们可以运用DOS命令来手工打war包: 首先,打开DOS命令行,敲入"jar",我们发现它提示不是内部或外部的命令这样的错误,这时八成是你的JAVA环境没有配置好,我们可以用JA ...
- C++ STL 栈和队列详解
一.解释: 1.栈 栈是一种特殊的线性表.其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行.如下所示: 结论:后进先出(Last In First Out),简称为LIFO线性表. 举个 ...
- 如何快速高效地完成一个Android项目?
本文的内容有别于之前文章中纯技术的探讨,会从业务逻辑.技术.团队和方法论的角度探讨如何快速高效地完成一个Android项目.当然,快速高效是有前提的,第一,本文依然是从研发的角度来谈如何把控项目的,而 ...
- MySQL grant命令使用
MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant sele ...