CN105867974A - 一种cs架构应用程序的离线升级方法 - Google Patents
一种cs架构应用程序的离线升级方法 Download PDFInfo
- Publication number
- CN105867974A CN105867974A CN201610196393.7A CN201610196393A CN105867974A CN 105867974 A CN105867974 A CN 105867974A CN 201610196393 A CN201610196393 A CN 201610196393A CN 105867974 A CN105867974 A CN 105867974A
- Authority
- CN
- China
- Prior art keywords
- version
- program
- assembly
- program assembly
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种CS架构应用程序的离线升级方法,属于程序升级方法,本发明解决如何实现在无网络应用场景下CS架构应用程序的自动升级的问题。技术方案为:一种CS架构应用程序的离线升级方法,在客户端程序的公共组件中设置资源文件,在资源文件中存储服务器端需要升级的程序组件,并为每个需要升级的程序组件增加版本标识;客户端各程序组件包含两个版本标识,分别用于标识程序组件自身版本和依赖服务器端的最低版本;服务器端包含一个版本标识用于标识当前服务器端的需要升级的程序组件版本;客户端的公共组件包含一个升级检测组件,程序组件升级启动后在开始执行处理逻辑之前运行,升级检测组件用于版本匹配检查。
Description
技术领域
本发明涉及一种程序升级方法,具体地说是一种CS架构应用程序的离线升级方法。
背景技术
CS架构,Client/Server架构,即客户端/服务器端架构。通过将任务合理分配到客户端(Client)和服务器端(Server),降低了系统的通讯开销,需要安装客户端才可进行管理操作。客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务。
在Internet日新月异发展的今天,基于TCP/IP的网络技术连接了遍布全球的计算机,应用程序的在线升级技术已经非常成熟。但在企业应用过程中,总有一部分计算机因安全要求不能接入Internet,但其更新技术一直困扰着应用厂商,尤其是基于CS架构的程序,在升级过程中还需要考虑服务端的升级,在升级操作过程中有不小麻烦。
发明内容
本发明的技术任务是针对以上不足之处,提供一种CS架构应用程序的离线升级方法,来解决如何实现在无网络应用场景下CS架构应用程序的自动升级的问题。
本发明解决其技术问题所采用的技术方案是:
一种CS架构应用程序的离线升级方法,包括如下内容:
(1)、在客户端程序的公共组件中设置资源文件,在资源文件中存储服务器端需要升级的程序组件,并为每个需要升级的程序组件增加版本标识;
(2)、客户端各程序组件包含两个版本标识,分别用于标识程序组件自身版本和依赖服务器端的最低版本;
(3)、服务器端包含一个版本标识用于标识当前服务器端的需要升级的程序组件版本,该版本标识与(1)中的版本标识一致;
(4)、客户端的公共组件包含一个升级检测组件,程序组件升级启动后在开始执行处理逻辑之前运行,升级检测组件用于版本匹配检查;
程序组件升级后首次运行使用资源文件记录对服务器端的程序组件进行升级操作;客户端的程序组件通过离线方式传递。
(2)中,为客户端的各个程序组件设计有一个公共接口,该公共接口包含两个版本标识。
(4)中,升级检测组件运行流程如下:
①、升级检测组件首先检查客户端的程序组件中依赖最高的服务器端程序组件的版本标识,与服务器端的程序组件当前版本标识进行比较,如果客户端的程序组件依赖的最高版本低于服务器端的程序组件版本,判断为服务器端的程序组件与客户端的程序组件版本相容;如果客户端的程序组件依赖的最高版本高于服务器端的程序组件版本,判断为客户端的程序组件与服务器端的程序组件不相容,需要对服务器端的程序组件进行升级;
②、升级检测组件再检查资源文件中最高版本是否大于程序依赖的最高版本,如果资源文件中的版本不大于程序依赖版本,说明客户端的程序组件相容性检查失败,客户端的程序组件不相容;反之,客户端的程序组件相容;
③、在客户端的程序组件相容,但服务器端的程序组件不相容时,需要对服务器端的程序组件进行升级,确定需要升级的程序组件为服务器端当前版本标识至当前客户端的程序组件依赖的最高版本。
本发明的一种CS架构应用程序的离线升级方法和现有技术相比,具有以下有益效果:实现了在无Internet连接应用场景程序的按需升级,实现了服务器与客户端版本的匹配规则,能够自动识别相容性。减少了无Internet应用场景下程序升级风险,提高了程序升级的成功率。适用于无网络连接应用场景下的CS架构程序升级。
附图说明
下面结合附图对本发明进一步说明。
附图1为一种CS架构应用程序的离线升级方法的离线升级程序组件的位置示意图;
附图2为一种CS架构应用程序的离线升级方法的客户端的程序组件升级处理流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
本发明的一种CS架构应用程序的离线升级方法,包括如下内容:
(1)、在客户端程序的公共组件中设置资源文件,在资源文件中存储服务器端需要升级的程序组件,并为每个需要升级的程序组件增加版本标识;版本标识的格式如下:
--[VER:6.0.6.8]
declare vCount1 int := 0;
begin
select count(1) into vCount1 from YHJKBANKPARAMS where YHJKBANKPARAMS_BANKNO='11'andYHJKBANKPARAMS_VERSIONS='COMMON' and YHJKBANKPARAMS_KEYS='COLLECTIONBALFLAG';
if(vCount1 <= 0 ) then
insert into YHJKBANKPARAMS(YHJKBANKPARAMS_BANKNO,YHJKBANKPARAMS_VERSIONS,YHJKBANKPARAMS_REMARK,YHJKBANKPARAMS_KEYS,YHJKBANKPARAMS_VALS)
values ('11','COMMON','归集余额', 'COLLECTIONBALFLAG','1') ;
end if;
end;
/
--[VER:6.0.6.9]
declare vCount1 int := 0;
begin
select count(1) into vCount1 from YHJKBANKPARAMS where YHJKBANKPARAMS_BANKNO='09'andYHJKBANKPARAMS_VERSIONS='COMMON'and YHJKBANKPARAMS_KEYS='FASTPAY';
if(vCount1 <= 0 ) then
insert into YHJKBANKPARAMS(YHJKBANKPARAMS_BANKNO,YHJKBANKPARAMS_VERSIONS,YHJKBANKPARAMS_REMARK,YHJKBANKPARAMS_KEYS,YHJKBANKPARAMS_VALS)
values ('09','COMMON','快速支付,启用后同城按异地处理','FASTPAY','0');
end if;
end;
/。
(2)、客户端各程序组件设计有一个公共接口,该公共接口包含两个版本标识,分别用于标识程序组件自身版本和依赖服务器端的最低版本;公共接口定义的格式如下:
#region 升级相关
public string ModuleVer = "6.0.6.0";
public string ModuleRefDBVer = "6.0.6.0";
#endregion。
(3)、服务器端包含一个版本标识用于标识当前服务器端的需要升级的程序组件版本,该版本标识与(1)中的版本标识一致;版本标识的格式如下:
YHJKBANKPARAMS_KEYS DBInstanceVer;
YHJKBANKPARAMS_VALS 6.0.6.10;
YHJKBANKPARAMS_REMARK 数据库实例版本标识。
(4)、客户端的公共组件包含一个升级检测组件,程序组件升级启动后在开始执行处理逻辑之前运行,升级检测组件用于版本匹配检查;升级检测组件运行流程如下:
①、升级检测组件首先检查客户端的程序组件中依赖最高的服务器端程序组件的版本标识,与服务器端的程序组件当前版本标识进行比较,如果客户端的程序组件依赖的最高版本低于服务器端的程序组件版本,判断为服务器端的程序组件与客户端的程序组件版本相容;如果客户端的程序组件依赖的最高版本高于服务器端的程序组件版本,判断为客户端的程序组件与服务器端的程序组件不相容,需要对服务器端的程序组件进行升级;
②、升级检测组件再检查资源文件中最高版本是否大于程序依赖的最高版本,如果资源文件中的版本不大于程序依赖版本,说明客户端的程序组件相容性检查失败,客户端的程序组件不相容;反之,客户端的程序组件相容;
③、在客户端的程序组件相容,但服务器端的程序组件不相容时,需要对服务器端的程序组件进行升级,确定需要升级的程序组件为服务器端当前版本标识至当前客户端的程序组件依赖的最高版本。
升级检测组件的格式如下:
//取得使用数据库实例的版本,该版本不是指DBMS的版本,是指应用程序需要使用的版本
dbInstanceVer = DataBase.GetValues(1, "select yhjkbankparams_vals fromyhjkbankparams where yhjkbankparams_bankno='--' and yhjkbankparams_versions='--' and yhjkbankparams_keys='DBInstanceVer'");
#region 取得程序所依赖的最高数据库版本
DataSet ds_Banks = new DataSet();
if (!PublicFunction.GetBanksUsed(out ds_Banks, out updateError))
{
return false;
}
DataRow[] drs = ds_Banks.Tables[0].Select("BankName='全部银行'");
foreach (DataRow dr in drs)
{
dr.Delete();
}
maxModuleVer = defaultVer;
foreach (DataRow item in ds_Banks.Tables[0].Rows)
{
string filePath = item["DllName"] + ".dll";
if (File.Exists(filePath))
{
System.Reflection.Assembly asm = System.Reflection.Assembly.Load(item["DllName"].ToString());
System.Type ClassType = asm.GetType(item["ClassName"].ToString());
object Bank = (IBank)System.Activator.CreateInstance(ClassType,string.Empty);
string versionString;
#region 依赖数据库版本
FieldInfo fi = ClassType.GetField("ModuleRefDBVer");
if (fi != null)
{
versionString = fi.GetValue(Bank) as string;
}
else
{
versionString = defaultVer;
}
#endregion
int currMax = int.Parse(maxModuleVer.Replace(".", string.Empty));
if (int.Parse(versionString.Replace(".", string.Empty)) > currMax)
{
maxModuleVer = versionString;
refMaxDbComponent = item["BankName"].ToString();
}
}
}
#endregion
#region 与框架依赖的数据库版本比较。
if (int.Parse(this.ModuleRefDBVer.Replace(".", string.Empty)) >int.Parse(maxModuleVer.Replace(".", string.Empty)))
{
maxModuleVer = this.ModuleRefDBVer;
refMaxDbComponent = "银企直联框架";
}
#endregion
#region 判断是否需要升级
bool updateDbFlag = false;
if (string.IsNullOrEmpty(dbInstanceVer))
{
updateDbFlag = true;
dbInstanceVer = "0";
}
else
{
if (int.Parse(maxModuleVer.Replace(".", string.Empty)) > int.Parse(dbInstanceVer.Replace(".", string.Empty)))
{
updateDbFlag = true;
}
}
if (!updateDbFlag)
{
updateInfo = "不需要进行数据库升级操作";
}
mustUpgrad = updateDbFlag;
#endregion。
程序组件升级后首次运行使用资源文件记录对服务器端的程序组件进行升级操作;客户端的程序组件通过离线方式传递。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (3)
1.一种CS架构应用程序的离线升级方法,其特征在于包括如下内容:
(1)、在客户端程序的公共组件中设置资源文件,在资源文件中存储服务器端需要升级的程序组件,并为每个需要升级的程序组件增加版本标识;
(2)、客户端各程序组件包含两个版本标识,分别用于标识程序组件自身版本和依赖服务器端的最低版本;
(3)、服务器端包含一个版本标识用于标识当前服务器端的需要升级的程序组件版本,该版本标识与(1)中的版本标识一致;
(4)、客户端的公共组件包含一个升级检测组件,程序组件升级启动后在开始执行处理逻辑之前运行,升级检测组件用于版本匹配检查;
程序组件升级后首次运行使用资源文件记录对服务器端的程序组件进行升级操作;客户端的程序组件通过离线方式传递。
2.根据权利要求1所述的一种CS架构应用程序的离线升级方法,其特征在于(2)中,为客户端的各个程序组件设计有一个公共接口,该公共接口包含两个版本标识。
3.根据权利要求1所述的一种CS架构应用程序的离线升级方法,其特征在于(4)中,升级检测组件运行流程如下:
①、升级检测组件首先检查客户端的程序组件中依赖最高的服务器端程序组件的版本标识,与服务器端的程序组件当前版本标识进行比较,如果客户端的程序组件依赖的最高版本低于服务器端的程序组件版本,判断为服务器端的程序组件与客户端的程序组件版本相容;如果客户端的程序组件依赖的最高版本高于服务器端的程序组件版本,判断为客户端的程序组件与服务器端的程序组件不相容,需要对服务器端的程序组件进行升级;
②、升级检测组件再检查资源文件中最高版本是否大于程序依赖的最高版本,如果资源文件中的版本不大于程序依赖版本,说明客户端的程序组件相容性检查失败,客户端的程序组件不相容;反之,客户端的程序组件相容;
③、在客户端的程序组件相容,但服务器端的程序组件不相容时,需要对服务器端的程序组件进行升级,确定需要升级的程序组件为服务器端当前版本标识至当前客户端的程序组件依赖的最高版本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610196393.7A CN105867974A (zh) | 2016-03-31 | 2016-03-31 | 一种cs架构应用程序的离线升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610196393.7A CN105867974A (zh) | 2016-03-31 | 2016-03-31 | 一种cs架构应用程序的离线升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105867974A true CN105867974A (zh) | 2016-08-17 |
Family
ID=56627324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610196393.7A Pending CN105867974A (zh) | 2016-03-31 | 2016-03-31 | 一种cs架构应用程序的离线升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105867974A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648802A (zh) * | 2016-12-30 | 2017-05-10 | 上海浦东软件园汇智软件发展有限公司 | 一种组件更新的方法及设备 |
CN110362322A (zh) * | 2018-04-11 | 2019-10-22 | 宏碁股份有限公司 | 电子装置与其离线更新程序的方法 |
TWI712956B (zh) * | 2016-03-15 | 2020-12-11 | 開曼群島商創新先進技術有限公司 | 行動終端應用程式的更新方法和裝置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103812946A (zh) * | 2014-02-27 | 2014-05-21 | 东莞旨尖动漫科技有限公司 | 一种ar应用程序在线云更新的方法和系统 |
CN103823700A (zh) * | 2014-02-28 | 2014-05-28 | 北京数码大方科技股份有限公司 | 客户端的应用软件升级方法和装置 |
-
2016
- 2016-03-31 CN CN201610196393.7A patent/CN105867974A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103812946A (zh) * | 2014-02-27 | 2014-05-21 | 东莞旨尖动漫科技有限公司 | 一种ar应用程序在线云更新的方法和系统 |
CN103823700A (zh) * | 2014-02-28 | 2014-05-28 | 北京数码大方科技股份有限公司 | 客户端的应用软件升级方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI712956B (zh) * | 2016-03-15 | 2020-12-11 | 開曼群島商創新先進技術有限公司 | 行動終端應用程式的更新方法和裝置 |
CN106648802A (zh) * | 2016-12-30 | 2017-05-10 | 上海浦东软件园汇智软件发展有限公司 | 一种组件更新的方法及设备 |
CN110362322A (zh) * | 2018-04-11 | 2019-10-22 | 宏碁股份有限公司 | 电子装置与其离线更新程序的方法 |
CN110362322B (zh) * | 2018-04-11 | 2023-08-01 | 宏碁股份有限公司 | 电子装置与其离线更新程序的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107689953B (zh) | 一种面向多租户云计算的容器安全监控方法及系统 | |
CN104199666B (zh) | 一种应用程序动态配置方法及装置 | |
US9690562B2 (en) | Detecting computing processes requiring reinitialization after a software package update | |
US20170277556A1 (en) | Distribution system, computer, and arrangement method for virtual machine | |
US10684966B1 (en) | Orchestrating dataflows with inferred data store interactions | |
WO2017143844A1 (zh) | 数据操作方法和数据管理服务器 | |
US9003389B2 (en) | Generating an encoded package profile based on executing host processes | |
US20090193439A1 (en) | Managing component programs within a service application | |
US20150095283A1 (en) | Master schema shared across multiple tenants with dynamic update | |
US10891164B2 (en) | Resource setting control device, resource setting control system, resource setting control method, and computer-readable recording medium | |
US10581823B2 (en) | Web client plugin manager in vCenter managed object browser | |
CN108829425B (zh) | 一种针对国产操作系统上的应用软件在线升级管控方法 | |
CN103310460A (zh) | 图像特征提取的方法及系统 | |
CN105868389A (zh) | 一种基于mongoDB的数据沙盒实现方法及系统 | |
CN105867974A (zh) | 一种cs架构应用程序的离线升级方法 | |
CN112966004A (zh) | 数据查询方法、装置、电子设备以及计算机可读介质 | |
US10693962B1 (en) | Language and mechanism for modeling and exporting storage platform topologies, attributes, and behaviors | |
US7752225B2 (en) | Replication and mapping mechanism for recreating memory durations | |
CN102497410B (zh) | 一种云计算系统计算资源动态分区的方法 | |
US11182144B2 (en) | Preventing database package updates to fail customer requests and cause data corruptions | |
US20060031194A1 (en) | Decision support implementation for workflow applications | |
US9262151B2 (en) | Methods and systems for automatic configuration of algorithms in a system based on self aware algorithms | |
CN109995571B (zh) | 服务器配置与vnf应用匹配的方法及装置 | |
CN113110920B (zh) | 区块链系统的运行方法、装置、设备和存储介质 | |
KR102156656B1 (ko) | 가상머신 스택 생성 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160817 |
|
RJ01 | Rejection of invention patent application after publication |