CN103019686A - 一种跨两个中间件的系统及其编译方法 - Google Patents
一种跨两个中间件的系统及其编译方法 Download PDFInfo
- Publication number
- CN103019686A CN103019686A CN2012104736617A CN201210473661A CN103019686A CN 103019686 A CN103019686 A CN 103019686A CN 2012104736617 A CN2012104736617 A CN 2012104736617A CN 201210473661 A CN201210473661 A CN 201210473661A CN 103019686 A CN103019686 A CN 103019686A
- Authority
- CN
- China
- Prior art keywords
- middleware
- code
- striding
- middlewares
- difference
- 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.)
- Granted
Links
Images
Abstract
本发明涉及一种跨两个中间件的系统及其编译方法,其编译方法,具体步骤如下:步骤1:封装模块将文件中存在中间件差异的中间件代码,封装在头文件中;步骤2:替换模块调用封装模块发送至的封装后的中间件代码,将存在差异的中间件代码替换为宏定义变量;步骤3:编译模块开始预编译,解析从替换模块发送至的宏定义变量,转换成可编译的中间件代码,完成跨两个中间件的系统的编译。本发明所述的方法采用宏定义的方式,将服务长/短数据库连接、服务声明、参数输入、输出等采用宏定义的方式包装,这样开发人员则不必关心中间件平台差异;屏蔽平台差异,不仅减少了开发人员的工作量,也使程序变得更加稳定,给系统提供了一个稳定保障。
Description
技术领域
本发明涉及一种跨两个中间件的系统及其编译方法,为软件系统各服务提供统一接口调用格式,属于软件服务领域。
背景技术
最初我们的后台服务都是运行在TUXEDO上,随着广电业务的发展,移植到TONGEASY上,同时兼容TUXEDO,于是服务内出现了很多为了兼容不得不写的代码,给开发工作带来一定的负担,我们需要一种方法来屏蔽中间件平台差异。
发明内容
本发明所要解决的技术问题是,针对现有技术的不足,提供一种可屏蔽平台差异的跨两个中间件的系统编译方法。
本发明解决上述技术问题的技术方案如下:一种跨两个中间件的系统编译方法,具体步骤如下:
步骤1:封装模块将文件中存在中间件差异的中间件代码,封装在头文件中;
步骤2:替换模块调用封装模块发送至的封装后的中间件代码,将存在差异的中间件代码替换为宏定义变量;
步骤3:编译模块开始预编译,解析从替换模块发送至的宏定义变量,转换成可编译的中间件代码,完成跨两个中间件的系统的编译。
本发明的有益效果是:本发明所述的方法采用宏定义的方式,将服务长/短数据库连接、服务声明、参数输入、输出等采用宏定义的方式包装,这样开发人员则不必关心中间件平台差异,只编写和关注具体的程序逻辑实现代码即可;屏蔽平台差异,不仅减少了开发人员的工作量,也使程序变得更加稳定,给系统提供了一个稳定保障。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述步骤1中封装模块用于定义文件中的头文件,在头文件中使用预编译宏定义的方式,将存在中间件差异的中间件代码,封装在头文件中。
进一步,所述步骤3中预编译中间件的过程根据中间件的不同,进行预编译不同的中间件下的代码。
进一步,不同中间件之间差异的代码,主要体现在:数据库连接方式、服务的声明方式、服务输入参数获取方式、服务输出参数打包方式。
本发明所要解决的另一个技术问题是,针对现有技术的不足,提供一种可屏蔽平台差异的跨两个中间件的系统。
本发明解决上述技术问题的技术方案如下:一种跨两个中间件的系统,包括封装模块、替换模块和编译模块;
所述封装模块用于将文件中存在中间件差异的中间件代码,封装在头文件中;
所述替换模块调用封装模块发送至的封装后的中间件代码,将存在差异的中间件代码替换为宏定义变量,并将替换后的服务程序文件发送至编译模块;
所述编译模块接收从替换模块发送至的服务程序文件,并解析从替换模块发送至的宏定义变量,转换成可编译的中间件代码,完成跨两个中间件的系统的编译。
本发明的有益效果是:本发明所述的系统采用宏定义的方式,将服务长/短数据库连接、服务声明、参数输入、输出等采用宏定义的方式包装,这样开发人员则不必关心中间件平台差异,只编写和关注具体的程序逻辑实现代码即可;屏蔽平台差异,不仅减少了开发人员的工作量,也使程序变得更加稳定,给系统提供了一个稳定保障。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述封装模块用于定义文件中的头文件,在头文件中使用预编译宏定义的方式,将存在中间件差异的中间件代码,封装在头文件中。
进一步,所述编译模块根据中间件的不同,进行预编译不同的中间件下的代码。
进一步,不同中间件之间差异的代码,主要体现在:数据库连接方式、服务的声明方式、服务输入参数获取方式、服务输出参数打包方式。
附图说明
图1为本发明具体实施例1所述一种跨两个中间件的系统编译方法流程图;
图2为本发明具体实施例2所述一种跨两个中间件的系统编译方法编译图;
图3为本发明具体实施例3所述的一种跨两个中间件的系统的结构图。
附图中,各标号所代表的部件列表如下:
1、封装模块,2、替换模块,3、编译模块。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,本发明具体实施例1所述方法一种跨两个中间件的系统编译方法,具体步骤如下:步骤1:封装模块将文件中存在中间件差异的中间件代码,封装在头文件中;
步骤2:替换模块调用封装模块发送至的封装后的中间件代码,将存在差异的中间件代码替换为宏定义变量;
步骤3:编译模块开始预编译,解析从替换模块发送至的宏定义变量,转换成可编译的中间件代码,完成跨两个中间件的系统的编译。
所述步骤1中封装模块用于定义文件中的头文件,在头文件中使用预编译宏定义的方式,将存在中间件差异的中间件代码,封装在头文件中。
所述步骤3中预编译中间件的过程根据中间件的不同,进行预编译不同的中间件下的代码。
不同中间件之间差异的代码,主要体现在:数据库连接方式、服务的声明方式、服务输入参数获取方式、服务输出参数打包方式。
如图2所示,本方法具体实施例2实现了不同中间件下服务程序的兼容,目前在TUXEDO/TONGEASY两种中间件服务程序中得到实施验证。
实施方式:
1、定义公共的头文件pub_server.h,在头文件使用预编译宏定义的方式,将不同中间件差异的代码,封装成统一的宏定义变量:
DBLONGCONNECT:数据库连接方式
DECLARE_SERVICE:服务的声明
BEGIN_SERVICE:服务输入参数获取方式
ADD_VALUE32:服务输出参数打包方式
2、编写某一服务R1052.cp
a)在服务中,定义数据库连接方式的代码,使用宏定义DBLONGCONNECT。
b)服务的声明使用宏定义DECLARE_SERVICE:
DECLARE_SERVICE(s1052Cfm)
c)服务输入参数获取,使用:
BEGIN_SERVICE();
d)服务输出参数打包,使用:
ADD_VALUE32(0,sEffDate);
ADD_VALUE32(1,sExpDate);
3、编译服务R1052.cp,则会根据中间件的不同,把程序中使用的预编译宏定义变量转换成各自中间件下的代码,完成程序的兼容。
如图3所示,为本发明具体实施例3所述的一种跨两个中间件的系统,包括封装模块1、替换模块2和编译模块3;
所述封装模块1用于将文件中存在中间件差异的中间件代码,封装在头文件中;
所述替换模块2调用封装模块1发送至的封装后的中间件代码,将存在差异的中间件代码替换为宏定义变量,并将替换后的服务程序文件发送至编译模块3;
所述编译模块3接收从替换模块2发送至的服务程序文件,并解析从替换模块发送至的宏定义变量,转换成可编译的中间件代码,完成跨两个中间件的系统的编译。
所述封装模块1用于定义文件中的头文件,在头文件中使用预编译宏定义的方式,将存在中间件差异的中间件代码,封装在头文件中。
所述编译模块3根据中间件的不同,进行预编译不同的中间件下的代码。
不同中间件之间差异的代码,主要体现在:数据库连接方式、服务的声明方式、服务输入参数获取方式、服务输出参数打包方式。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种跨两个中间件的系统编译方法,其特征在于,具体步骤如下:
步骤1:封装模块将文件中存在中间件差异的中间件代码,封装在头文件中;
步骤2:替换模块调用封装模块发送至的封装后的中间件代码,将存在差异的中间件代码替换为宏定义变量;
步骤3:编译模块开始预编译,解析从替换模块发送至的宏定义变量,转换成可编译的中间件代码,完成跨两个中间件的系统的编译。
2.根据权利要求1所述一种跨两个中间件的系统编译方法,其特征在于,所述步骤1中封装模块用于定义文件中的头文件,在头文件中使用预编译宏定义的方式,将存在中间件差异的中间件代码,封装在头文件中。
3.根据权利要求2所述一种跨两个中间件的系统编译方法,其特征在于,所述步骤3中编译模块预编译中间件的过程根据中间件的不同,进行预编译不同的中间件下的代码。
4.根据权利要求1-3任一项所述一种跨两个中间件的系统编译方法,其特征在于,不同中间件之间差异的代码,体现在:数据库连接方式、服务的声明方式、服务输入参数获取方式、服务输出参数打包方式。
5.一种跨两个中间件的系统,其特征在于,包括封装模块、替换模块和编译模块;
所述封装模块用于将文件中存在中间件差异的中间件代码,封装在头文件中;
所述替换模块调用封装模块发送至的封装后的中间件代码,将存在差异的中间件代码替换为宏定义变量,并将替换后的服务程序文件发送至编译模块;
所述编译模块接收从替换模块发送至的服务程序文件,并解析从替换模块发送至的宏定义变量,转换成可编译的中间件代码,完成跨两个中间件的系统的编译。
6.根据权利要求5所述一种跨两个中间件的系统,其特征在于,所述封装模块用于定义文件中的头文件,在头文件中使用预编译宏定义的方式,将存在中间件差异的中间件代码,封装在头文件中。
7.根据权利要求6所述一种跨两个中间件的系统,其特征在于,所述编译模块根据中间件的不同,进行预编译不同的中间件下的代码。
8.根据权利要求5-7任一项所述一种跨两个中间件的系统,其特征在于,不同中间件之间差异的代码,体现在:数据库连接方式、服务的声明方式、服务输入参数获取方式、服务输出参数打包方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210473661.7A CN103019686B (zh) | 2012-11-20 | 2012-11-20 | 一种跨两个中间件的系统及其编译方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210473661.7A CN103019686B (zh) | 2012-11-20 | 2012-11-20 | 一种跨两个中间件的系统及其编译方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103019686A true CN103019686A (zh) | 2013-04-03 |
CN103019686B CN103019686B (zh) | 2016-11-23 |
Family
ID=47968325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210473661.7A Active CN103019686B (zh) | 2012-11-20 | 2012-11-20 | 一种跨两个中间件的系统及其编译方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103019686B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528171A (zh) * | 2016-11-24 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种异构计算平台子系统间的接口设计方法、装置及系统 |
CN106980505A (zh) * | 2017-03-30 | 2017-07-25 | 广东电网有限责任公司信息中心 | 一种信息系统国产中间件迁移改造方法及装置 |
CN106980679A (zh) * | 2017-03-30 | 2017-07-25 | 广东电网有限责任公司信息中心 | 一种信息系统国产数据库迁移改造方法及装置 |
CN107077365A (zh) * | 2014-09-19 | 2017-08-18 | 微软技术许可有限责任公司 | 有选择地加载预编译的头部和/或其部分 |
CN108614705A (zh) * | 2017-02-07 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 一种数据编译处理方法及终端 |
CN113391818A (zh) * | 2021-03-26 | 2021-09-14 | 广州海量数据库技术有限公司 | 一种编译文件的生成方法以及装置 |
CN114527983A (zh) * | 2020-11-23 | 2022-05-24 | 中移互联网有限公司 | 一种基于中间件的接口适配方法、装置及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6487713B1 (en) * | 1999-09-24 | 2002-11-26 | Phoenix Technologies Ltd. | Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation |
CN1873626A (zh) * | 2005-06-01 | 2006-12-06 | 中兴通讯股份有限公司 | 一种自动生成桩和驱动函数的单元测试系统及方法 |
CN1964526A (zh) * | 2005-11-09 | 2007-05-16 | 中兴通讯股份有限公司 | 一种智能加载手机硬件驱动程序的方法 |
CN101119522A (zh) * | 2007-08-22 | 2008-02-06 | 中兴通讯股份有限公司 | 一种模拟at命令上报的方法 |
CN101515239A (zh) * | 2009-04-08 | 2009-08-26 | 南京航空航天大学 | X86飞控计算机快速启动方法 |
CN101593164A (zh) * | 2009-07-13 | 2009-12-02 | 中国船舶重工集团公司第七○九研究所 | 基于嵌入式Linux的从USB HID装置及固件实现方法 |
CN102395051A (zh) * | 2011-11-07 | 2012-03-28 | 上海网达软件有限公司 | 一种视频播放器系统及其开发、安装运行方法 |
-
2012
- 2012-11-20 CN CN201210473661.7A patent/CN103019686B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6487713B1 (en) * | 1999-09-24 | 2002-11-26 | Phoenix Technologies Ltd. | Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation |
CN1873626A (zh) * | 2005-06-01 | 2006-12-06 | 中兴通讯股份有限公司 | 一种自动生成桩和驱动函数的单元测试系统及方法 |
CN1964526A (zh) * | 2005-11-09 | 2007-05-16 | 中兴通讯股份有限公司 | 一种智能加载手机硬件驱动程序的方法 |
CN101119522A (zh) * | 2007-08-22 | 2008-02-06 | 中兴通讯股份有限公司 | 一种模拟at命令上报的方法 |
CN101515239A (zh) * | 2009-04-08 | 2009-08-26 | 南京航空航天大学 | X86飞控计算机快速启动方法 |
CN101593164A (zh) * | 2009-07-13 | 2009-12-02 | 中国船舶重工集团公司第七○九研究所 | 基于嵌入式Linux的从USB HID装置及固件实现方法 |
CN102395051A (zh) * | 2011-11-07 | 2012-03-28 | 上海网达软件有限公司 | 一种视频播放器系统及其开发、安装运行方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107077365A (zh) * | 2014-09-19 | 2017-08-18 | 微软技术许可有限责任公司 | 有选择地加载预编译的头部和/或其部分 |
CN106528171A (zh) * | 2016-11-24 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种异构计算平台子系统间的接口设计方法、装置及系统 |
CN106528171B (zh) * | 2016-11-24 | 2019-09-24 | 郑州云海信息技术有限公司 | 一种异构计算平台子系统间的接口设计方法、装置及系统 |
CN108614705A (zh) * | 2017-02-07 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 一种数据编译处理方法及终端 |
CN108614705B (zh) * | 2017-02-07 | 2022-06-03 | 腾讯科技(深圳)有限公司 | 一种数据编译处理方法及终端 |
CN106980505A (zh) * | 2017-03-30 | 2017-07-25 | 广东电网有限责任公司信息中心 | 一种信息系统国产中间件迁移改造方法及装置 |
CN106980679A (zh) * | 2017-03-30 | 2017-07-25 | 广东电网有限责任公司信息中心 | 一种信息系统国产数据库迁移改造方法及装置 |
CN114527983A (zh) * | 2020-11-23 | 2022-05-24 | 中移互联网有限公司 | 一种基于中间件的接口适配方法、装置及电子设备 |
CN113391818A (zh) * | 2021-03-26 | 2021-09-14 | 广州海量数据库技术有限公司 | 一种编译文件的生成方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103019686B (zh) | 2016-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103019686A (zh) | 一种跨两个中间件的系统及其编译方法 | |
CN109710215B (zh) | 分布式流计算的可视化流程处理引擎及其使用方法 | |
CA2939400C (en) | Systems and methods for controlling branch latency within computing applications | |
US10838743B2 (en) | Systems and methods for processing extensible markup language data during runtime | |
CN110633076B (zh) | 一种自动生成Solidity智能合约Java客户端程序的方法 | |
CN101593127A (zh) | 一种数字电视中间件系统的跨平台Jave虚拟机 | |
CN103729184A (zh) | 一种软件组件组合构建方法 | |
US20120167065A1 (en) | Compiler compiler system with syntax-controlled runtime and binary application programming interfaces | |
CN101185116A (zh) | 在软件程序中使用强数据类型表示语音识别语法 | |
CN103092594A (zh) | 模型转换方法及装置 | |
US20100088274A1 (en) | System and method for synchronizing a repository with a declarative defintion | |
CN115639980A (zh) | 一种低代码平台可拖拽的前端逻辑编排方法及装置 | |
CN110489088A (zh) | 一种跨平台的小程序开发方法 | |
CN111008020A (zh) | 将逻辑表达式解析为通用查询语句的方法 | |
CN104991810B (zh) | 自动添加apk到安卓系统中的方法及处理系统 | |
Martinez et al. | Recovering sequence diagrams from object-oriented code: An ADM approach | |
US20060090155A1 (en) | Methods and apparatus for message oriented invocation | |
CN103092866A (zh) | 数据监控方法及监控装置 | |
CN106681781B (zh) | 实时计算业务的实现方法和系统 | |
CN110262830A (zh) | 一种移动端基于应用二次开发的方法 | |
CN116841559A (zh) | 代码转换方法、装置、设备、介质和程序产品 | |
WO2012129864A1 (zh) | 一种以脚本形式表示增值业务流程的实现方法和系统 | |
KR101416096B1 (ko) | 하이브리드 웹 어플리케이션 개발을 위한 호환성 높은 플러그인 시스템 | |
CN202143092U (zh) | 报文处理系统 | |
CN103051946A (zh) | 基于Android系统的通用RTSP流播放器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |