CN110347374A - 一种富客户端业务服务封装和调用***、方法和装置 - Google Patents
一种富客户端业务服务封装和调用***、方法和装置 Download PDFInfo
- Publication number
- CN110347374A CN110347374A CN201910517934.5A CN201910517934A CN110347374A CN 110347374 A CN110347374 A CN 110347374A CN 201910517934 A CN201910517934 A CN 201910517934A CN 110347374 A CN110347374 A CN 110347374A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- client
- module
- server
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种富客户端业务服务封装和调用***、方法和装置,包括互操作***,所述互操作***包括数据接口生成平台和数据接口运行平台,所述***基于客户端与服务端及数据源交互的信息协议;所述数据接口生成平台还包括:***驱动监听模块,用于记录所述客户端对数据的调用请求;***驱动编排模块,用于辅助开发者快速定位到一个或连续几个请求;所述数据接口运行平台还包括:***驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;***驱动定制处理程序模块,用于完成具体的接入数据源工作;通过本发明可得到服务端中业务数据服务的访问方式,并提供Web API以供访问。
Description
技术领域
本发明涉及计算机信息技术,尤其涉及一种富客户端业务服务封装和调用***,一种富客户端业务服务封装和调用方法,以及一种富客户端业务服务封装和调用装置。
背景技术
在近年来,互联网及其延伸而来的移动互联网和物联网等新型网络平台飞速发展,使得信息***、用户和物理世界相互融合,为数据的开放和共享提供了条件和需求。与此同时,云计算使得计算资源易于获取和使用,为数据的分析和挖掘提供了有利的条件。数据的开放和共享使得数据可以从***之外的其它***、通过其他方式访问。多个***连接同一数据源不但提高了数据的利用率,也大大降低了以往多个***连接不同数据源时数据不一致的风险和管理的成本。
比如在某个码头业务***中,包含了船舶管理、堆场管理等功能,可以根据船舶名称、到港时间、离港时间等查询条件,查询船舶、货物的相关业务数据。类似的***和数据也存在于全国各地的码头之中。如果这些业务数据能被开放和共享,就可以通过移动的方式进行访问,从而方便工作人员随时随地查看码头情况;也可以将多个***中的数据进行集成,从而进行统一监控和管理。
数据的开放和共享还是数据分析和挖掘的基础。数据的分析和挖掘可以从开放和共享的数据中发现新的信息,从而提升数据的价值。仍以码头业务子***为例。通过分析码头***中到港船舶、离港船舶的历史数据,可以得到码头吞吐量的走向,从而指导码头规模的变更;通过分析码头船舶到港、离港时间,可以得到码头最繁忙的时间区间,从而指导***的优化;通过分析到港货物、离港货物的类别,可以得到码头货物的统计信息,从而指导码头货仓的改造;通过数据分析和挖掘获取有价值的信息,从而指导现实工作,此类现象不胜枚举。
服务化是目前公认的一种解决数据开放问题的较佳方案。然而,大量遗产信息***在设计实现时并未考虑服务化需求,且***原开发商往往不再提供技术支持,使得对***拥有者而言服务化工作常常难以进行。因此,如何辅助***拥有者从遗产信息***中开采出业务数据并将其服务化已成为大数据时代的关键问题。特别地,针对大量遗产Windows应用,由于客户端为封闭的可执行程序,其业务数据服务化面临如下挑战:虽然服务端可能存在对数据源中业务数据的程序化访问接口,从客户端却很难直接得到接口的访问方式。
发明内容
本发明主要目的在于提供一种富客户端业务服务封装和调用***、方法和装置,以克服上述技术问题,从客户端获得接口的访问方式,从而实现对遗产Windows应用业务数据的服务化。
本发明是通过如下技术方案实现的:
为解决上述技术问题,本发明示出了一种富客户端业务服务封装和调用***,包括互操作***,所述互操作***包括数据接口生成平台和数据接口运行平台,所述***基于客户端与服务端及数据源交互的信息协议;
所述数据接口生成平台还包括:
***驱动监听模块,用于记录所述客户端对数据的调用请求;
***驱动编排模块,用于辅助开发者快速定位到一个或连续几个请求;
所述数据接口运行平台还包括:
***驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
***驱动定制处理程序模块,用于完成具体的接入数据源工作。
为解决上述技术问题,本发明示出了一种富客户端业务服务封装和调用方法,所述方法基于客户端与服务端及数据源交互的信息协议,所述管理方法包括:
步骤S1:确定所述客户端访问所述数据源时使用的程序库,并选择目标监听工具;
步骤S2:利用所述目标监听工具监听所述客户端与所述服务端之间的数据的请求和响应;
步骤S3:分析所述请求和响应,对所述请求和响应的数据来源进行定位;
步骤S4:根据所述定位结果,编写所述服务化***的定制处理程序及配置文件,其中,所述定制处理程序继承默认处理程序;
步骤S5:利用所述目标定制处理程序从所述服务端获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
基于同一发明构思,本发明还示出了一种富客户端业务服务封装和调用装置,所述装置基于客户端与服务端及数据源交互的信息协议,所述装置包括:
监听工具选择模块,用于确定所述客户端访问所述数据源时使用的程序库,并选择目标监听工具;
数据监听执行模块,用于利用所述目标监听工具监听所述客户端与所述服务端之间的数据的请求和响应;
数据来源定位模块,用于分析所述请求和响应,对所述请求和响应的数据来源进行定位;
***驱动编写模块,用于根据所述定位结果,编写所述服务化***的定制处理程序及配置文件,其中,所述定制处理程序继承默认处理程序;
业务数据接口模块,用于利用所述目标定制处理程序从所述服务端获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
本发明实施例还提供了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行本发明实施例所述的一个或多个的方法。
本发明实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例所述的一个或多个的方法。
与现有技术相比,本发明提供的一种富客户端业务服务封装和调用***、方法和装置,从客户端与服务端及数据源交互的信息协议出发,在***驱动的服务化流程中新增了处理程序和监听程序,可截获所述客户端对所述目标数据的调用,得到所述请求和响应的含义,并提供网络应用程序Web API接口以供访问;且本发明处理程序框架采用模板方法设计模式,提供处理过程的框架方法,实现了除具体接入数据源之外的完整处理流程,服务的开发者完成具体的接入数据源工作;
与现有技术相比,本发明提供的一种富客户端业务服务封装和调用***、方法和装置,在***驱动的服务化流程中,针对已有工具不能满足需求来达到拦截请求和响应的情况下,设计了回调机制和钩子机制来编写监听工具,可直接截获客户端对数据的调用,得到请求和响应的含义,从而得到服务端中业务数据服务的访问方式,并提供Web API以供访问;
与现有技术相比,本发明提供的一种富客户端业务服务封装和调用***、方法和装置,框架不需要运行客户端,可程直接从客户端和服务端获取数据,使得本发明***驱动的服务化流程的空间效率和时间效率都较高。
附图说明
图1是互操作***的组成示意图;
图2是互操作***运行时的架构示意图;
图3是本发明一种富客户端业务服务封装和调用***的组成示意图;
图4是本发明一种富客户端业务服务封装和调用方法的步骤流程图;
图5是本发明一种富客户端业务服务封装和调用***运行时的架构示意图;
图6是本发明一种富客户端业务服务封装和调用装置的结构框图;
图7.1是本发明一具体实例Y市码头***的操作界面;
图7.2是本发明一具体实例Y市码头***的查询结果;
图7.3是本发明OciMonitor截获Y市码头***数据库请求示意图;
图7.4是本发明来港箱查询服务请求结果示意图;
图7.5是本发明Y市码头***入港船查询服务执行结果示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步详细说明。
本发明基于现有的互操作***平台实现,互操作***的组成示意图如图1所示。互操作***包括三大子平台:数据接口生成平台(Development Platform)、数据接口运行平台(Runtime Platform)和数据接口管理平台(Management Platform)。
数据接口生成平台为数据接口的生成提供支持,包括监听模块和监听编排模块。监听模块(Request-Response Monitor)截获全部发出的请求和收到的响应,包括HTML页面、JSON数据、JavaScript代码、CSS代码、图片等全部数据,监听编排模块(Request-Response Arrange Tool)提供数据查看,快速检索的功能,协助开发者对请求进行快速定位。
数据接口运行平台为数据接口的运行时提供支持,主要包括API路由模块(APIRouter)、运行时管理模块(Runtime Management)、默认处理程序模块(Default Handler)以及针对数据接口的定制处理程序模块(Custom Handler)。API路由模块负责对传入的请求进行路由,根据请求地址和参数读取相应的配置文件,并选择使用某定制处理程序进行请求的处理。运行平台提供默认处理程序,所有定制处理程序均继承自某默认处理程序。默认处理程序采用模板方法设计模式,提供了处理请求的框架方法及通用方法。定制处理程序由服务的开发者编写,只需实现特定的请求方法,而不必处理完整的请求流程和通用的问题。运行时管理模块负责运行时的相关管理,例如对请求上下文进行管理等。
数据接口管理平台提供数据接口的管理功能和增值服务,其中,可以管理的数据接口包括但不限于互操作平台生成的数据接口。数据接口管理平台包括缓存模块(Cache)、流量控制模块(Flow Control)、统计模块(Statistic)三大模块。缓存模块为数据接口提供缓存服务,对于数据不经常发生变化的数据接口,通过使用数据缓存可以提高数据访问效率。流量控制模块提供对数据接口的访问流量控制,以防止某些数据接口占用大量的带宽、计算资源。统计模块负责对数据接口的访问进行统计,通过这些统计信息可以实时了解数据接口的调用情况,也可以为将来的数据分析工作提供数据。
根据上述阐述,原互操作***运行时的架构示意图如图2所示。
本发明针对现有技术问题,提出富客户端的业务数据封装和访问***、方法和装置。富因特网应用程序(Rich Internet Applications,RIA)利用具有很强交互性的富客户端技术来为用户提供一个更高和更全方位的网络体验。客户端应用程序使用异步的C/S结构连接到现有的应用服务器,这是一种安全的、可升级的、具有良好适应性的面向服务模型,这种模型由当前所采用的Web服务驱动。根据以上原理,本发明从Windows应用的架构和实现技术入手,首先设计并实现了面向遗产Windows应用的业务数据服务化框架,本发明主要以***驱动的角度来阐述如何完成遗产Windows应用的业务数据服务化工作:首先将Windows客户端视为“黑盒”,不考虑客户端的内部实现,通过***驱动的方式使扩展后的互操作***支持将遗产Windows应用中的业务数据API化。
在上述基于***驱动的服务化流程中,得到服务端业务数据访问接口的难点在于如何根据客户端应用程序得到客户端访问服务端的方式。对于客户端和服务端之间应用层协议已知的情况,可以通过对网络请求进行分析得到服务端业务数据接口的访问方式。对于客户端和服务端之间应用层协议未知的情况,如何得到服务端接口的访问方式成为问题的关键。
接下来,本发明根据现有技术问题以及实现难点,将本发明的具体实现方式在实施例1~3中详细阐述。
实施例1
如图3所示,示出了本发明一种富客户端业务服务封装和调用***的组成示意图,所述服务化***包括互操作***,所述互操作***包括数据接口生成平台和数据接口运行平台,所述***基于客户端与服务端及数据源交互的信息协议;
所述数据接口生成平台还包括:
***驱动监听模块,用于记录所述客户端对数据的调用请求;
***驱动编排模块,用于辅助开发者快速定位到一个或连续几个请求;
所述数据接口运行平台还包括:
***驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
***驱动定制处理程序模块,用于完成具体的接入数据源工作。
本发明的服务化***在互操作***的基础上增加了***驱动监听模块、***驱动编排模块、***驱动默认处理程序模块,以及***驱动定制处理程序模块,以此***框架可以提供***监听工具、编排工具和默认处理程序,实现通过回调机制和钩子机制,直接截获客户端对数据的调用,对请求进行分析,并通过直接对接***的方式获取数据。
实施例2
如图4所示,示出了本发明一种富客户端业务服务封装和调用方法的步骤流程图,所述方法应用于实施例1所述的***;所述方法基于客户端与服务端及数据源交互的信息协议,所述方法具体可以包括以下步骤:
步骤S1:确定所述客户端访问所述数据源时使用的程序库,并选择目标监听工具;
步骤S2:利用所述目标监听工具监听所述客户端与所述服务端之间的数据的请求和响应;
步骤S3:分析所述请求和响应,对所述请求和响应的数据来源进行定位;
步骤S4:根据所述定位结果,编写所述服务化***的定制处理程序及配置文件,其中,所述定制处理程序继承默认处理程序;
步骤S5:利用所述目标定制处理程序从所述服务端获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
目前监听工具有很多,在本发明一可选实施例中,示出了所述监听工具包括网络封包分析软件Wireshark,超文本传输协议HTTP监听工具Fiddler和数据库监听工具SQLTracker。
Wireshark是一个著名的网络包分析工具,它可以用来捕获进出计算机的网络包,例如TCP包、UDP包,并尽可能详细地显示网络包的相关信息,包括网络包发送方和接收方的IP地址和端口,网络包的原始数据等等。然而,Wireshark是比较原始的网络监听工具,对于应用层协议,仅提供对于HTTP协议的支持。当客户端通过HTTPS访问服务器时,Wireshark可以截获发出的TCP包,然而并不会进行解密,从而无法得到请求的URL地址、参数,以及返回的结果。客户端访问数据库服务器时会向数据库服务器发送网络包,通过Wireshark可以截获TCP包,从而得到数据库服务器的IP地址和端口,然而却无法得到明文数据库请求和明文返回结果。
针对某些特定情况,采用如HTTP监听工具Fiddler和数据库监听工具SQLTracker这种存在较高层的监听工具可以监听到数据的调用。
Fiddler是一个Web调试代理,它可以记录由计算机发出的所有HTTP、HTTPS流量,可以将响应与业务数据进行对比,从而得到数据服务的访问方式。
SQLTracker是Toad软件中的子模块,它可以监听所有通过OCI接口向数据库发送的请求,包括SQL语句、存储过程的调用、COMMIT语句等等。
上述三种工具虽然可以解决大部分问题,但是在某些特殊情况下,也存在一定的漏洞,如SQLTracker对于SQL语句,无法获得执行结果。
而对于数据请求来说,仅仅获得向数据库发送的SQL语句是不够的。用户在客户端中执行某项操作以获取数据时,客户端可多次向数据库服务器发送请求。对于具备幂等性的请求,可以根据请求的具体内容进行操作重现,用再次执行的结果代替之前的结果与业务数据进行对照,以判断究竟是哪次或哪几次的请求返回了业务数据。但是对于不具备幂等性的请求,例如数据库的增加(INSERT)、删除(DELETE)、修改(UPDATE)、还有一些存储过程,则无法执行操作重现,因为再次执行的结果和前一次执行的结果并不一定相同。所以尽管可以获得所有执行的数据库请求,在某些情况下依然无法对数据库请求进行精确定位。
在已有工具不能满足需求的情况下,框架提供基于***机制的监听工具设计思路,可以据此设计工具并实现,达到拦截请求和响应的目的。***层面的机制主要包括两种,一是回调机制,二是钩子机制(hooking)。
在本发明一优选实施例中,示出了所述监听工具基于回调机制实现,所述回调机制的实现步骤具体可以包括:
根据第三方库的用户自定义回调函数机制,按照所述机制规范编写目标回调函数并将其编译为动态链接库;其中,所述目标回调函数用于截获所述客户端与服务端之间的数据请求和响应;
配置当前环境变量,当所述目标回调函数运行时,自动加载所述动态链接库并执行所述目标回调函数。
***层面的第一种拦截机制是回调机制。上述第三方库可为Oracle数据库,Oracle数据库会提供回调功能。Oracle数据库提供了一组称为OCI(Oracle CallInterface)的接口供客户端访问数据库服务器,所有对数据库服务器的访问,包括数据库的增、删、查、改、存储过程的执行,均需要调用OCI接口。OCI提供了用户自定义回调函数(User-Defined Callback)的机制。用户按照其规范编写回调函数并将其编译为动态链接库(DLL)。通过配置环境变量,OCI函数在运行时会自动加载这些动态链接库,执行其中的回调函数。这些用户定义的回调函数(目标回调函数),可以用来拦截OCI函数,从而截获客户端向数据库服务器发出的请求和收到的响应。
在本发明另一优选实施例中,示出了所述监听工具基于钩子机制实现,所述钩子机制的实现步骤具体可以包括:
确定所述动态链接库提供的目标函数;
加载所述目标函数的可执行文件PE文件;其中,所述PE格式文件包括导出表和导入表,所述导出表用于存放所有需要导出的符号名,与所述符号名对应的符号地址;所述导入表用于存放所有需要导入的符号名;
根据所述加载,确定所述目标函数在所述导入表/导出表中的地址指向的位置;
在执行所述目标函数之前和/或之后,利用以下一个或多个子步骤,截获所述目标函数的参数和返回值;
其中,所述子步骤包括:
子步骤A:修改所述导出表,使所述导出表中的地址指向某个新函数,在新函数中调用需要导出的函数;
子步骤B:修改所述导入表,使所述导入表中的地址指向某个新函数;
子步骤C:修改所述目标函数的前几个字节,使所述目标函数在导入表中的地址跳往某个新地址。
***层面的第二种拦截机制是钩子机制。动态链接库往往需要将一些函数提供给其他可执行文件或动态链接库使用,这种行为被称为符号导出。当某个程序需要使用来自其它动态链接库的函数或变量时,需要进行符号导入。Windows平台可执行程序、动态链接库的文件格式都是PE(Portable Executable)格式。在PE文件中,有两个重要的结构:导出表(Export Address Table,EAT)和导入表(Import Address Table,IAT),分别存放了所有需要导出的符号名以及其对应的符号地址和所有需要导入的符号名。当某个PE文件被加载时,加载器的任务之一即确定所有需要导入的函数的地址。当某个程序调用动态链接库提供的函数时,函数入口即为导入表中的地址指向的位置。从上述分析可以看出,如果我们希望在动态链接库提供的某函数执行之前和之后增添新的功能,那么可以使用上述三种子步骤(子步骤A、B、C)。上述三种手段即为***机制中的钩子机制。通过钩子机制,可以在函数执行之前和之后增添新的功能,截获函数的参数和返回值,以此获得数据的调用方式。
使用上述回调机制和钩子机制可以设计并实现监听工具,以拦截客户端与服务器之间的数据请求和响应。通过对响应进行关键字检索,即可得到客户端请求数据的方式。
根据回调机制和钩子机制,所述步骤S2在实现时可包括以下步骤:
利用所述回调机制或所述钩子机制监听所述客户端与所述服务端之间的数据请求和响应。
然后针对无法进行定位的数据,可利用回调机制和钩子机制对所述请求和响应的数据来源进行定位。
上述请求地址或请求体中可能存在参数。其中,有些参数是针对数据接口固定的,而有些参数是变化的,例如查询的条件。通过互操作***制作数据接口,对于固定的参数可以直接编码在处理程序中,也可以编写在配置文件中;对于变化的参数则需要在请求地址或请求体中提供。请求中的参数信息以及处理程序中使用的参数都可以在数据接口配置文件中配置。
由于定制处理程序继承运行平台提供的默认处理程序,默认处理程序提供完整的处理流程,那么根据上述处理结果编写的定制处理程序,在定制处理程序中,只需根据定位得到的一个或连续的几个请求向原***发出请求,得到响应后进行相应的处理,将结果返回给默认的处理程序即可。其中,请求的参数或来源于配置文件,或来源于数据接口请求中的参数。
最后,需要编写配置文件,将数据接口配置文件和定制的处理程序相关联,使得运行平台在接收到数据请求后可以通过解析数据接口文件获取参数和配置,从而找到对应的定制处理程序完成请求的处理。
上述步骤中,默认处理程序采用模板方法设计模式,本框架也将提供默认的处理程序以供开发者使用。模板方法设计模式在基类的方法中定义算法流程,而将一些步骤延迟到子类中实现,同时提供某些通用方法供子类方法调用。
在本发明一可选实施例示出了所述默认处理程序包括以下步骤:
进行预处理工作,获得数据库或网络连接;
处理所述数据库或网络发送的请求,并返回至请求对象;
将所述请求对象序列化,并释放连接。
另外,由于上述步骤中的打开或关闭连接十分消耗***性能,在本发明一可选实施例中示出了一种解决方式,可减少***性能的消耗,具体可为:
在所述默认处理程序中,为每一类连接建立一个连接池,并由所述默认处理程序统一管理。
当客户端通过网络访问资源和服务时,可以使用监听网络的工具监听网络请求,在操作客户端的同时,截获其发出的所有网络请求和收到的响应,通过将收到的响应和业务数据进行对比,从而得到数据服务的访问方式。
参照图5,示出了本发明一种富客户端业务服务封装和调用***运行时的架构示意图,本发明的***在运行时,以Web API的形式提供C/S***的业务数据服务。数据请求首先到达管理中心,经过缓存、流量控制、统计模块之后到达运行平台。上述缓存、流量控制、统计模块都属于互操作***中现有的模块,在此不多赘述。访问请求到达运行平台后,API路由模块(也属于互操作***中现有的模块)对请求的参数进行解析,根据参数中的数据接口配置文件找到定制处理程序,调用定制处理程序对访问进行处理。定制处理程序继承默认的处理程序,故请求首先到达默认处理程序,执行框架逻辑。定制处理程序将根据请求的参数和数据接口的配置请求原***,并对响应进行整理,之后将结果返回给默认处理程序,再由默认处理程序返回给上层调用者。
综上,本发明基于***驱动监听模块、***驱动编排模块、***驱动默认处理程序模块和***驱动定制处理程序模块的功能来提供业务数据接口的管理功能,以此根据客户端应用程序能得到客户端访问服务端的方式;当客户端和服务端之间应用层协议未知的情况,可利用回调机制和钩子机制得到服务端接口的访问方式,以此克服现有技术难题,实现了面向遗产Windows应用的业务数据的服务化。在***驱动的流程中,框架不需要运行客户端,可直接向所述服务端获取业务数据,使得本发明的服务化***在运行时具有较高的时间和空间效率。
针对本发明的发明点,接下来,采用一具体实例进一步阐述。
实例为Y市码头***:
本发明一具体实例Y市码头的基本业务子***,在菜单栏“4堆场管理”的“来港箱查询”界面中,可以输入相关信息,例如入港船名、出港船名、提单号、入港时间、离港时间等等。其中,入港船名和出港船名并不直接输入,而是点击输入框旁边的按钮,在弹出的对话框中进行选择。“来港箱查询”的操作界面见图7.1,查询结果见图7.2。
为了将此查询结果数据服务化,我们需要首先对数据进行溯源,再接入***从中获取数据。上述应用程序在运行时需要安装PowerBuilder运行时环境和Oracle客户端,可以断定上述程序通过PowerBuilder开发,通过OCI接口直接连接Oracle数据库获取数据。由此,我们使用***驱动流程中的数据库监听工具OciMonitor截获应用程序向数据库服务器发送的SQL请求如图7.3。其中,执行“来港箱查询”操作时,客户端向数据库服务器发送了5个SQL请求,对应于图中72至76条语句。首先,根据界面中显示的数据在OciMonitor中搜索,发现最终返回的结果来源于语句76的查询结果。考虑语句76的SQL语句,查询条件中出现了参数值“61412”。继续在OciMonitor中搜索“61412”,该值出现在语句72的查询结果和语句73中。进一步分析语句74和75,其查询结果与最终数据无关。由此可以断定,“来港箱查询”的数据来源于依次执行72、73、76三条语句。在定位了数据来源之后,需要连接数据库以获取数据。在连接数据库时,需要获得数据库的地址、用户名、密码、数据库驱动类名。其中,数据库驱动类名可通过数据库类型获得。由于Y市码头***使用PowerBuilder开发,故可以使用逆向工程工具对客户端进行处理,从而得到数据库的其他连接信息。定制处理程序继承TxtDbRspHandler,需要实现其中从数据库中获取数据的函数,以实现获取数据的目的。在定制处理程序获取数据的函数中,首先执行语句72,所得的查询结果作为语句73和语句76的参数。之后依次执行语句73和语句76,得到数据库请求结果。在TxtDbRspHandler中,在处理数据库请求的方法执行前,将获取数据库连接池和连接;在定制处理程序获取数据的函数执行后,TxtDbRspHandler将序列化请求结果,释放连接并返回结果。
处理程序部署之后,用户可以通过Web API访问数据。具体API为https://localhost:1626/hd/?iw-apikey=123&iw-cmd=inbox,其后可以附带查询参数,来港箱查询服务请求结果见图7.4。其中,接口请求参数及含义见表1,部分返回参数及含义见表2。
表1:来港箱查询服务请求参数及含义
表2:来港箱查询服务返回参数及含义
在来港箱查询接口的参数中,入港号和出港号分别来自于入港船和出港船对话框。同理,在打开入港船和出港船对话框的时候捕获执行的SQL语句,实现定制处理程序并部署,用户可以通过Web API访问数据。具体API为:https://localhost:1626/hd/?iw-apikey=123&iw-cmd=inship。Y市码头***入港船查询服务执行结果见图7.5,部分返回参数的含义见表3。
表3:Y市码头***入港船查询服务返回参数及含义
本发明针对真实的遗产Windows应用,对应用中的来港数据实现了服务化,制作了查询接口,使用本文提出的框架完成了其业务数据的服务化工作,提供Web API供服务的消费者访问。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例3
如图6所示,基于同一发明构思,对应本发明实施例2中的方法,示出了一种富客户端业务服务封装和调用装置的结构框图,所述装置基于客户端与服务端及数据源交互的信息协议,所述装置具体可以包括以下模块:
监听工具选择模块601,用于确定所述客户端访问所述数据源时使用的程序库,并选择目标监听工具;
数据监听执行模块602,用于利用所述目标监听工具监听所述客户端与所述服务端之间的数据的请求和响应;
数据来源定位模块603,用于分析所述请求和响应,对所述请求和响应的数据来源进行定位;
***驱动编写模块604,用于根据所述定位结果,编写所述服务化***的定制处理程序及配置文件,其中,所述定制处理程序继承默认处理程序;
业务数据接口模块605,用于利用所述目标定制处理程序从所述服务端获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
本发明实施例还提供了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行本发明实施例所述的一个或多个的方法。
本发明实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例所述的一个或多个的方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种富客户端业务服务封装和调用***,一种富客户端业务服务封装和调用方法,以及一种富客户端业务服务封装和调用装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种富客户端业务服务封装和调用***,包括互操作***,所述互操作***包括数据接口生成平台和数据接口运行平台,其特征在于,所述***基于客户端与服务端及数据源交互的信息协议;
所述数据接口生成平台还包括:
***驱动监听模块,用于记录所述客户端对数据的调用请求;
***驱动编排模块,用于辅助开发者快速定位到一个或连续几个请求;
所述数据接口运行平台还包括:
***驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
***驱动定制处理程序模块,用于完成具体的接入数据源工作。
2.一种富客户端业务服务封装和调用方法,其特征在于,所述方法应用于权利要求1所述的***,所述方法基于客户端与服务端及数据源交互的信息协议,所述管理方法包括:
步骤S1:确定所述客户端访问所述数据源时使用的程序库,并选择目标监听工具;
步骤S2:利用所述目标监听工具监听所述客户端与所述服务端之间的数据的请求和响应;
步骤S3:分析所述请求和响应,对所述请求和响应的数据来源进行定位;
步骤S4:根据所述定位结果,编写所述服务化***的定制处理程序及配置文件,其中,所述定制处理程序继承默认处理程序;
步骤S5:利用所述目标定制处理程序从所述服务端获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
3.根据权利要求2所述的方法,其特征在于,所述监听工具包括网络封包分析软件Wireshark,超文本传输协议HTTP监听工具Fiddler和数据库监听工具SQLTracker。
4.根据权利要求2所述的方法,其特征在于,所述监听工具基于回调机制实现,所述回调机制的实现步骤包括:
根据第三方库的用户自定义回调函数机制,按照所述机制规范编写目标回调函数并将其编译为动态链接库;其中,所述目标回调函数用于截获所述客户端与服务端之间的数据请求和响应;
配置当前环境变量,当所述目标回调函数运行时,自动加载所述动态链接库并执行所述目标回调函数。
5.根据权利要求4所述的方法,其特征在于,所述监听工具基于钩子机制实现,所述钩子机制的实现步骤包括:
确定所述动态链接库提供的目标函数;
加载所述目标函数的可执行文件PE文件;其中,所述PE格式文件包括导出表和导入表,所述导出表用于存放所有需要导出的符号名,与所述符号名对应的符号地址;所述导入表用于存放所有需要导入的符号名;
根据所述加载,确定所述目标函数在所述导入表/导出表中的地址指向的位置;
在执行所述目标函数之前和/或之后,利用以下一个或多个子步骤,截获所述目标函数的参数和返回值;
其中,所述子步骤包括:
修改所述导出表,使所述导出表中的地址指向某个新函数,在新函数中调用需要导出的函数;
修改所述导入表,使所述导入表中的地址指向某个新函数;
修改所述目标函数的前几个字节,使所述目标函数在导入表中的地址跳往某个新地址。
6.根据权利要求2所述的方法,其特征在于,所述默认处理程序包括以下步骤:
进行预处理工作,获得数据库或网络连接;
处理所述数据库或网络发送的请求,并返回至请求对象;
将所述请求对象序列化,并释放连接。
7.根据权利要求6所述的方法,其特征在于,所述方法包括:
在所述默认处理程序中,为每一类连接建立一个连接池,并由所述默认处理程序统一管理。
8.一种富客户端业务服务封装和调用装置,其特征在于,所述装置应用于权利要求1所述的***,所述装置基于客户端与服务端及数据源交互的信息协议,所述装置包括:
监听工具选择模块,用于确定所述客户端访问所述数据源时使用的程序库,并选择目标监听工具;
数据监听执行模块,用于利用所述目标监听工具监听所述客户端与所述服务端之间的数据的请求和响应;
数据来源定位模块,用于分析所述请求和响应,对所述请求和响应的数据来源进行定位;
***驱动编写模块,用于根据所述定位结果,编写所述服务化***的定制处理程序及配置文件,其中,所述定制处理程序继承默认处理程序;
业务数据接口模块,用于利用所述目标定制处理程序从所述服务端获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
9.一种装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1-7所述的一个或多个的方法。
10.一个或多个机器可读介质,其特征在于,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-7所述的一个或多个的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910517934.5A CN110347374B (zh) | 2019-06-14 | 2019-06-14 | 一种富客户端业务服务封装和调用***、方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910517934.5A CN110347374B (zh) | 2019-06-14 | 2019-06-14 | 一种富客户端业务服务封装和调用***、方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110347374A true CN110347374A (zh) | 2019-10-18 |
CN110347374B CN110347374B (zh) | 2023-01-13 |
Family
ID=68182082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910517934.5A Active CN110347374B (zh) | 2019-06-14 | 2019-06-14 | 一种富客户端业务服务封装和调用***、方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110347374B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112633851A (zh) * | 2020-12-30 | 2021-04-09 | 中国农业银行股份有限公司 | 一种控制幂等的方法及装置 |
CN112711628A (zh) * | 2020-12-30 | 2021-04-27 | 北京楚梵基业科技有限公司 | 数据交互方法、装置和中台 |
CN114546530A (zh) * | 2022-02-25 | 2022-05-27 | 博锐尚格科技股份有限公司 | 一种大数据的加载方法、装置、设备及介质 |
CN115002180A (zh) * | 2022-05-26 | 2022-09-02 | 上海商米科技集团股份有限公司 | 一种网络请求运行监测方法、装置和计算机可读介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727475A (zh) * | 2009-10-12 | 2010-06-09 | 奇智(上海)信息科技有限公司 | 一种获取数据库访问过程的方法、装置及*** |
CN103023906A (zh) * | 2012-12-20 | 2013-04-03 | 北京奇虎科技有限公司 | 针对远程过程调用协议进行状态跟踪的方法及*** |
CN103036895A (zh) * | 2012-12-20 | 2013-04-10 | 北京奇虎科技有限公司 | 一种状态跟踪方法及*** |
CN106411907A (zh) * | 2016-10-13 | 2017-02-15 | 广西咪付网络技术有限公司 | 一种数据传输方法和*** |
CN106648920A (zh) * | 2016-09-29 | 2017-05-10 | 山东浪潮云服务信息科技有限公司 | 一种基于接口的数据通信方法 |
US20180089005A1 (en) * | 2016-09-28 | 2018-03-29 | Amazon Technologies, Inc. | Generating an Application Programming Interface |
-
2019
- 2019-06-14 CN CN201910517934.5A patent/CN110347374B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727475A (zh) * | 2009-10-12 | 2010-06-09 | 奇智(上海)信息科技有限公司 | 一种获取数据库访问过程的方法、装置及*** |
CN103023906A (zh) * | 2012-12-20 | 2013-04-03 | 北京奇虎科技有限公司 | 针对远程过程调用协议进行状态跟踪的方法及*** |
CN103036895A (zh) * | 2012-12-20 | 2013-04-10 | 北京奇虎科技有限公司 | 一种状态跟踪方法及*** |
US20180089005A1 (en) * | 2016-09-28 | 2018-03-29 | Amazon Technologies, Inc. | Generating an Application Programming Interface |
CN106648920A (zh) * | 2016-09-29 | 2017-05-10 | 山东浪潮云服务信息科技有限公司 | 一种基于接口的数据通信方法 |
CN106411907A (zh) * | 2016-10-13 | 2017-02-15 | 广西咪付网络技术有限公司 | 一种数据传输方法和*** |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112633851A (zh) * | 2020-12-30 | 2021-04-09 | 中国农业银行股份有限公司 | 一种控制幂等的方法及装置 |
CN112711628A (zh) * | 2020-12-30 | 2021-04-27 | 北京楚梵基业科技有限公司 | 数据交互方法、装置和中台 |
CN114546530A (zh) * | 2022-02-25 | 2022-05-27 | 博锐尚格科技股份有限公司 | 一种大数据的加载方法、装置、设备及介质 |
CN114546530B (zh) * | 2022-02-25 | 2023-10-24 | 博锐尚格科技股份有限公司 | 一种大数据的加载方法、装置、设备及介质 |
CN115002180A (zh) * | 2022-05-26 | 2022-09-02 | 上海商米科技集团股份有限公司 | 一种网络请求运行监测方法、装置和计算机可读介质 |
CN115002180B (zh) * | 2022-05-26 | 2024-05-14 | 上海商米科技集团股份有限公司 | 一种网络请求运行监测方法、装置和计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110347374B (zh) | 2023-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11561774B2 (en) | Composition of pattern-driven reactions in real-time dataflow programming | |
CN110347374A (zh) | 一种富客户端业务服务封装和调用***、方法和装置 | |
US10528454B1 (en) | Intelligent automation of computer software testing log aggregation, analysis, and error remediation | |
CA2980772C (en) | Endpoint management system providing an application programming interface proxy service | |
US7475406B2 (en) | Event notification structure for dynamically aggregated logical components | |
EP3690640B1 (en) | Event stream processing cluster manager | |
Baresi et al. | Microservices: The evolution and extinction of web services? | |
CN110381026A (zh) | 一种富客户端的业务服务封装和访问***、方法和装置 | |
US11593188B2 (en) | Method and apparatus for providing asynchronicity to microservice application programming interfaces | |
CN106686021B (zh) | 一种服务调用方法和网关 | |
CN109271359A (zh) | 日志信息处理方法、装置、电子设备及可读存储介质 | |
US9280321B2 (en) | Distributing UI control events from a single event producer across multiple systems event consumers | |
CN114830080B (zh) | 数据分发流程配置方法及装置、电子设备、存储介质 | |
JP2023070148A (ja) | ロボティックプロセスオートメーション(rpa)ロボットをリソースへ動的にバインドさせるためのシステムおよび方法 | |
CN114117190A (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN108900627A (zh) | 一种网络请求方法、终端装置及存储介质 | |
US10826965B2 (en) | Network monitoring to identify network issues | |
CN111552901B (zh) | H5跨引擎客户端数据自动化更新的方法、存储介质 | |
US9201938B2 (en) | Parameter driven data format conversion in client/server architectures | |
CN115774573B (zh) | 应用集成方法、装置、电子设备和存储介质 | |
Pop et al. | A cyber-physical systems oriented platform using web services | |
CN113760262A (zh) | 任务处理方法、装置、计算机***和计算机可读存储介质 | |
Lin et al. | A web services status monitoring technology for distributed system management in the cloud | |
US20230376363A1 (en) | Framework for digital workers | |
CN114844957B (zh) | 链路报文转换方法、装置、设备、存储介质和程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |