ZeroIce 的IcePatch2实现 客户端远程更新
ZeroIce 的IcePatch2概念上相当简单,下面以Ice-3.6.3为例讲解如何实现远程更新:
在windows(Linux类似)下安装Ice-3.6.3后,在其\bin\有三款ZeroIce涉及更新功能的三个小工具,是动态版本的,如果需要静态版本请自行编译。
(1)icepatch2calc.exe该工具负责压缩指定目录下文件,并为每个文件生成一个包含校验和的索引。
(2)icepatch2server.exe是一个服务端,负责包含要分发给IcePatch2客户端的文件和子目录的文件系统目录(数据目录)。
(3)icepatch2client.exe是一个客户端,负责在客户端指定目录下重新创建数据目录及其内容或修补自上次运行以来更改的任何文件。
假如我们目前有一些需要更新到客户端的信息存放在D:\SYE_MCS_PRO\pcs_project\sye_mcs\mgr\serverData目录下,其结构为:
conf
install.txt test.ini
lib
read.txt
首先需要通过icepatch2calc工具将serverData目录下的文件进行压缩和生成校对信息,启动cmd窗口(管理员),运行命令:
cd D:\SYE_MCS_PRO\pcs_project\sye_mcs\mgr\
D:\ZeroC\Ice-3.6.3\bin\icepatch2calc.exe .\\serverData
则serverData目录下发生变更:
conf
install.txt install.txt.bz2 test.ini test.ini.bz2
lib
read.txt read.txt.bz2
IcePatch2.sum
接下来就是启动服务等待客户端的链接和更新数据,服务端需要配置其运行需要一些简要参数的配置文件iceSrv.patch如下,
#实例名
IcePatch2.InstanceName=MCSSVCGrid
#指定目录
IcePatch2.Directory=D:\SYE_MCS_PRO\pcs_project\sye_mcs\mgr\serverData
#服务地址与端口
IcePatch2.Endpoints=tcp -h 127.0.0.1 -p 9988
在刚启动cmd窗口运行命令启动服务:
D:\ZeroC\Ice-3.6.3\bin\icepatch2server.exe --Ice.Config=iceSrv.patch
最后我们用客户端去加载和更新配置,启动客户端样例前需要先配置客户端所需的运行参数简要配置文件iceClient.patch.
假如我的客户端配置文件iceClient.patch放置在本机D:\SYE_MCS_PRO\pcs_project\sye_mcs\mgr\icePathTestClient下,需要加载更新的资料指定为D:\SYE_MCS_PRO\pcs_project\sye_mcs\mgr\iceParhTestLoad下,则iceClient.patch配置为:
#服务端链接信息(实例、地址、端口)
IcePatch2Client.Proxy=MCSSVCGrid/server:tcp -h 127.0.0.1 -p 9988
#配置加载或更新的指定目录
IcePatch2Client.Directory=D:\SYE_MCS_PRO\pcs_project\sye_mcs\mgr\iceParhTestLoad
再启动一个cmd命令窗口,
cd D:\SYE_MCS_PRO\pcs_project\sye_mcs\mgr\icePathTestClient
D:\ZeroC\Ice-3.6.3\bin\icepatch2client.exe --Ice.Config=iceClient.patch
客户端会查询IcePatch2.sum文件进行校验,如果是第一次会进行创建,创建时会询问,进行确认即可,若存在该文件会将其与服务端的IcePatch2.sum进行比较,进行更新。
最终在iceParhTestLoad下
conf
install.txt test.ini
lib
read.txt
IcePatch2.sum
一个IcePatch远程更新样例如此简单部署就可实现,但实际中使用时需要注意几点:
1)目录文件和空文件不会生成压缩文件
2)只会在顶层目录(指定目录)下生成校验和文件
3)服务端需要给各个客户端分发的文件资料有更新,需要icepatch2calc重新校验并重启服务icepatch2server
4)可以在自身的客户端集成IcePatch2 Client实用库的API(IcePatch2/ClientUtil.h),实现客户端启动校对版本,自动更新升级等更复杂的功能要求。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
spring 过滤器 Filter
简介 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。 使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据。 WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如JSP,Servlet,静态图片文件或静态HTML文件进行拦截,从而实现一些特殊功能。例如实现URL级别的权限控制、过滤敏感词汇、压缩响应信息、过滤器中修改字符编码等一些高级功能。 Filter工作原理 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行检查或改动,并依次通过过滤器链,最后把请求/响应交给请求的Web资源处理。请求信息在过滤器链中可以被修改,也可以根据条件让请求不发往资源处理器,并直接向客户机发回一个响应。当资源处理器完成了对资源的处理后,响应信息将逐级逆向返回。同样在这个过程中,用户可以修改响应信息,从而完成一定的任务 常见问题 Web开发中,自定义过滤器被执行两次的原因分析。导致原因:...
- 下一篇
正则表达式上——基本语法
JavaScript 正则表达式上——基本语法 定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%>','g'); 2. 字面量 var reg=/<%[^%>]%>/g; g: global,全文搜索,默认搜索到第一个结果接停止 i: ingore case,忽略大小写,默认大小写敏感m: multiple lines,多行搜索(更改^ 和$的含义,使它们分别在任意一行对待行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配) 元字符 正则表达式让人望而却步以一个重要原因就是其转义字符太多了,组合非常之多,但是正则表达式的元字符(在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符)并不多 元字符:( [ { ^ $ | ) ? * + .并不是每个元字符都有其特定意义,在不同的组合中元字符有不同的意义,分类看一下 预定义特殊字符 字符 含义 t 水平制表符 r 回车符 n 换行符 f 换页符 cX 与X对应...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7