CN110381026A - 一种富客户端的业务服务封装和访问***、方法和装置 - Google Patents
一种富客户端的业务服务封装和访问***、方法和装置 Download PDFInfo
- Publication number
- CN110381026A CN110381026A CN201910517103.8A CN201910517103A CN110381026A CN 110381026 A CN110381026 A CN 110381026A CN 201910517103 A CN201910517103 A CN 201910517103A CN 110381026 A CN110381026 A CN 110381026A
- Authority
- CN
- China
- Prior art keywords
- client
- data
- sub
- serviceization
- access
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种富客户端的业务服务封装和访问***、方法和装置,本发明将所述客户端作为“黑盒”,利用用户驱动服务化方法和***驱动服务化方法对所述“黑盒”分别进行处理,实现业务数据服务化;当所述“黑盒”不能提取到目标业务数据时,将所述客户端作为“灰盒”,利用应用驱动服务化方法对所述“灰盒”进行处理,实现业务数据服务化,以此克服了现有业务数据在C/S架构中不能服务化的挑战。
Description
技术领域
本发明涉及计算机信息技术,尤其涉及一种富客户端的业务服务封装和访问***和一种富客户端的业务服务封装和访问方法,以及一种富客户端的业务服务封装和访问装置。
背景技术
在近年来,互联网及其延伸而来的移动互联网和物联网等新型网络平台飞速发展,使得信息***、用户和物理世界相互融合,为数据的开放和共享提供了条件和需求。与此同时,云计算使得计算资源易于获取和使用,为数据的分析和挖掘提供了有利的条件。数据的开放和共享使得数据可以从***之外的其它***、通过其他方式访问。多个***连接同一数据源不但提高了数据的利用率,也大大降低了以往多个***连接不同数据源时数据不一致的风险和管理的成本。
比如在某个码头业务***中,包含了船舶管理、堆场管理等功能,可以根据船舶名称、到港时间、离港时间等查询条件,查询船舶、货物的相关业务数据。类似的***和数据也存在于全国各地的码头之中。如果这些业务数据能被开放和共享,就可以通过移动的方式进行访问,从而方便工作人员随时随地查看码头情况;也可以将多个***中的数据进行集成,从而进行统一监控和管理。
数据的开放和共享还是数据分析和挖掘的基础。数据的分析和挖掘可以从开放和共享的数据中发现新的信息,从而提升数据的价值。仍以码头业务子***为例。通过分析码头***中到港船舶、离港船舶的历史数据,可以得到码头吞吐量的走向,从而指导码头规模的变更;通过分析码头船舶到港、离港时间,可以得到码头最繁忙的时间区间,从而指导***的优化;通过分析到港货物、离港货物的类别,可以得到码头货物的统计信息,从而指导码头货仓的改造;通过数据分析和挖掘获取有价值的信息,从而指导现实工作,此类现象不胜枚举。
服务化是目前公认的一种解决数据开放问题的较佳方案。然而,大量遗产信息***在设计实现时并未考虑服务化需求,且***原开发商往往不再提供技术支持,使得对***拥有者而言服务化工作常常难以进行。因此,如何辅助***拥有者从遗产信息***中开采出业务数据并将其服务化已成为大数据时代的关键问题。特别地,针对大量遗产Windows应用,由于客户端为封闭的可执行程序,其业务数据服务化面临如下两个挑战:1)业务数据仅呈现于客户端界面,难以程序化地从客户端获取。2)虽然服务端可能存在对数据源中业务数据的程序化访问接口,从客户端却很难直接得到接口的访问方式。
发明内容
本发明主要目的在于,提供一种富客户端的业务服务封装和访问***、方法和装置,以克服上述技术问题,从而实现对遗产Windows应用业务数据的服务化。
本发明是通过如下技术方案实现的:
为解决上述问题,本发明实施例示出了一种富客户端的业务服务封装和访问***,包括互操作***,所述互操作***包括数据接口生成平台和数据接口运行平台,
所述数据接口生成平台还包括:
用户驱动记录模块,用于记录用户的操作;
用户驱动操作编排模块,用于对所述记录的操作进行编排;
***驱动监听模块,用于记录客户端对数据的调用请求;
***驱动编排模块,用于辅助开发者快速定位到一个或连续几个请求;
应用驱动反编译工具,用于对客户端进行反编译;
应用驱动插桩工具,用于使客户端可以记录运行时的数据流和控制流,并将客户端内部代码提供为Web接口;
所述数据接口运行平台还包括:
用户驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
用户驱动定制处理程序模块,用于完成具体的接入数据源工作;
用户驱动处理程序代理模块,包括超文本传输协议HTTP服务器和接入处理程序,其中,所述接入处理程序由服务的开发者实现,通过动作回放的方式从界面获取数据服务;用于使客户端对外提供业务数据访问接口,供定制处理程序调用;
***驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
***驱动定制处理程序模块,用于完成具体的接入数据源工作;
应用驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
应用驱动定制处理程序模块,用于完成具体的接入数据源工作;
应用驱动处理程序代理模块,包括超文本传输协议HTTP服务器和接入处理程序,其中,所述接入处理程序由服务的开发者实现,通过调用客户端代码的方式从客户端内部获取数据服务;用于使客户端对外提供业务数据访问接口,供定制处理程序调用。
为解决上述问题,本发明实施例示出了一种富客户端的业务服务封装和访问方法,所述方法包括:
将所述客户端作为“黑盒”,利用用户驱动服务化方法和***驱动服务化方法对所述“黑盒”分别进行处理,实现业务数据服务化;
当所述“黑盒”不能提取到目标业务数据时,将所述客户端作为“灰盒”,利用应用驱动服务化方法对所述“灰盒”进行处理,实现业务数据服务化。
基于同一发明构思,本发明实施例示出了一种富客户端的业务服务封装和访问装置,所述装置包括:
黑盒服务化处理模块,用于将所述客户端作为“黑盒”,利用用户驱动服务化方法和***驱动服务化方法对所述“黑盒”分别进行处理,实现业务数据服务化;
灰盒服务化处理模块,用于在所述“黑盒”不能提取到目标业务数据时,将所述客户端作为“灰盒”,利用应用驱动服务化方法对所述“灰盒”进行处理,实现业务数据服务化。
本申请实施例还提供了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行本申请实施例所述的一个或多个的方法。
本申请实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本申请实施例所述的一个或多个的方法。
与现有技术相比,本发明对现有的互操作***进行改进,提供了一种富客户端的业务服务封装和访问***、方法和装置,基于该***和现有技术问题,将所述客户端作为“黑盒”,利用用户驱动服务化方法和***驱动服务化方法对所述“黑盒”分别进行处理,将目标业务数据提供为服务;当所述“黑盒”不能提取到目标业务数据时,将所述客户端作为“灰盒”,利用应用驱动服务化方法对所述“灰盒”进行处理,将目标业务数据提供为服务,并提供Web API以供访问,以此实现了对遗产Windows应用业务数据的服务化。
附图说明
图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应用中的业务数据API化。
将客户端视为“黑盒”时,提供客户端业务数据访问接口的难点在于如何将客户端界面操作映射为数据服务。客户端仅提供界面的原子操作接口,例如鼠标点击、键盘输入等,这些接口与最终的数据服务接口之间存在巨大的鸿沟,需要通过对用户操作进行记录、编排、封装来实现。如何实现这三个步骤是提供客户端业务数据访问接口的关键。
将客户端视为“黑盒”时,得到服务端业务数据访问接口的难点在于如何根据客户端应用程序得到客户端访问服务端的方式。对于客户端和服务端之间应用层协议已知的情况,可以通过对网络请求进行分析得到服务端业务数据接口的访问方式。对于客户端和服务端之间应用层协议未知的情况,如何得到服务端接口的访问方式成为问题的关键。
将客户端视为“灰盒”时,解决两个挑战的难点在于如何理解并扩展客户端可执行程序使其支持程序化地访问业务数据。由于客户端为封闭的可执行程序,并未提供设计文档和实现代码,所以需要通过对可执行程序进行静态分析和动态分析,以理解客户端内部实现,从而提炼服务端的数据服务和客户端的数据服务。如何对可执行程序完成静态分析和动态分析,并以透明的方式提供客户端数据服务,成为解决两个挑战的技术难点。
接下来,本申请根据现有技术问题以及实现难点,将本发明的具体实现方式进行详细阐述。
实施例1
如图3所示,示出了本发明一种富客户端的业务服务封装和访问***的组成示意图,包括互操作***,所述互操作***包括数据接口生成平台和数据接口运行平台,其中:
所述数据接口生成平台还包括:
用户驱动记录模块,用于记录用户的操作;
用户驱动操作编排模块,用于对所述记录的操作进行编排;
***驱动监听模块,用于记录客户端对数据的调用请求;
***驱动编排模块,用于辅助开发者快速定位到一个或连续几个请求;
应用驱动反编译工具,用于对客户端进行反编译;
应用驱动插桩工具,用于使客户端可以记录运行时的数据流和控制流,并将客户端内部代码提供为Web接口;
所述数据接口运行平台还包括:
用户驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
用户驱动定制处理程序模块,用于完成具体的接入数据源工作;
用户驱动处理程序代理模块,包括超文本传输协议HTTP服务器和接入处理程序,其中,所述接入处理程序由服务的开发者实现,通过动作回放的方式从界面获取数据服务;用于使客户端对外提供业务数据访问接口,供定制处理程序调用;
***驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
***驱动定制处理程序模块,用于完成具体的接入数据源工作;
应用驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
应用驱动定制处理程序模块,用于完成具体的接入数据源工作;
应用驱动处理程序代理模块,包括超文本传输协议HTTP服务器和接入处理程序,其中,所述接入处理程序由服务的开发者实现,通过调用客户端代码的方式从客户端内部获取数据服务;用于使客户端对外提供业务数据访问接口,供定制处理程序调用。
在本发明实施例中,首先本发明对现有的互操作***进行改进,对应“黑盒”和“灰盒”情况,增加了上述模块,使得扩展后的互操作***具备服务化操作的功能。
实施例2
如图4所示,示出了本发明一种富客户端的业务服务封装和访问方法的步骤流程图,所述方法应用于本发明实施例1所述的***,所述方法可以包括以下步骤:
步骤S401:将所述客户端作为“黑盒”,利用用户驱动服务化方法和***驱动服务化方法对所述“黑盒”分别进行处理,实现业务数据服务化;
步骤S402:当所述“黑盒”不能提取到目标业务数据时,将所述客户端作为“灰盒”,利用应用驱动服务化方法对所述“灰盒”进行处理,实现业务数据服务化。
本申请实施例从Windows应用的架构和实现技术入手,设计并实现了面向遗产Windows应用的业务数据服务化框架,将客户端视为“黑盒”和“灰盒”,通过用户驱动、***驱动、应用驱动三种方式完成了遗产Windows应用的业务数据服务化工作。
在用户驱动的服务化流程中,客户端被视为黑盒,仅考虑客户端的用户界面而不考虑其内部实现,借鉴了图形界面自动测试领域的记录(record)、回放(replay)技术,通过对用户原子操作进行记录、编排、回放,从用户界面入手完成业务数据的服务化。在用户驱动的流程中,框架提供记录工具、编排工具、默认处理程序和处理程序代理。
在***驱动的服务化流程中,客户端被视为黑盒,不考虑客户端的内部实现。通过回调机制和钩子机制,直接截获客户端对数据的调用,对请求进行分析,并通过直接对接***的方式获取数据。在***驱动的流程中,框架提供***监听工具、编排工具和默认处理程序。
在应用驱动的服务化流程中,客户端被视为灰盒,需考虑客户端的内部实现。通过逆向工程技术和程序插桩技术,可以截获客户端运行时的数据流和控制流,以此实现数据溯源,同时使客户端提供业务数据服务。在应用驱动的流程中,框架提供反编译工具、程序插桩工具、默认处理程序和处理程序代理。其中,程序插桩工具使客户端可以记录运行时的数据流和控制流,并将客户端功能提供为Web接口。
用户驱动服务化方法应用于客户端界面,在本发明一优选实施例中,示出了步骤S401中利用用户驱动服务化方法对所述“黑盒”进行处理,实现业务数据服务化的步骤具体可以包括:
子步骤A1:记录所述客户端界面的操作流;其中,所述操作流由运行用户操作记录工具后,在接收到用户在所述客户端界面的触发操作时生成;
在此步骤中,通过运行用户操作记录工具,让用户在界面中进行操作,包括进行键盘输入和鼠标点击,使用户界面中显示业务数据,由此记录下用户的操作流。部分需要记录的动作和动作参数见表1,工具将操作流记录为(action,param)格式的列表。
表1:部分需要记录的用户动作及动作参数
子步骤A2:编排所述操作流,合并冗余的操作步骤;
此步骤在具体实现时,对记录下的操作流进行编排,采用人工监督的方式合并冗余的操作步骤。用户在界面中进行操作时,存在一些冗余的拖拽、点击动作,这些动作不会影响业务数据的显示。在编排操作流时,由服务的开发者判断记录的每一步操作是否有效,将冗余步骤删除,可以提高服务运行时的效率。
子步骤A3:根据编排后的操作流编写所述接入处理程序,回放操作并从所述客户端界面中提取数据;
所述客户端应用程序的界面中主要存在两类数据:图片数据和文字数据。图片数据可以通过屏幕截图的方式获取。文字数据有两种获取思路,一是直接通过编程语言接口获取界面中的文字,二是通过先截取屏幕图像再进行光学字符识别(Optical CharacterRecognition,OCR)的方式获取。
子步骤A4:在所述客户端所在的计算机运行所述HTTP服务器,并将所述接入处理程序提供为网络应用程序Web API接口;
子步骤A5:编写所述服务化***的定制处理程序及配置文件;
子步骤A6:利用所述定制处理程序向与所述客户端运行在同一计算机上的HTTP服务器发送访问请求;
子步骤A7:根据所述访问请求,所述HTTP服务器通过调用接入处理程序从遗产Windows应用中获取目标业务数据;其中,所述接入处理程序通过模拟用户操作,从所述客户端界面中获取目标业务数据;
子步骤A8:所述定制处理程序从所述HTTP服务器获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
由此,本发明通过子步骤A1~子步骤A8,基于用户驱动记录模块、用户驱动操作编排模块、用户驱动默认处理程序模块、用户驱动定制处理程序模块、用户驱动处理程序代理模块的功能,可提供业务数据接口的管理功能,提供Web API供服务化的消费者使用,可将客户端界面操作映射为业务数据服务,克服现有技术难题。
***驱动服务化方法基于客户端与服务端及数据源交互的信息协议,在本发明另一优选实施例中,示出了步骤S401中利用***驱动服务化方法对所述“黑盒”进行处理,实现业务数据服务化的步骤具体可以包括:
子步骤B1:确定所述客户端访问数据源时使用的程序库,并选择目标监听工具;
子步骤B2:利用所述目标监听工具监听所述客户端与服务端之间的数据请求和响应;
子步骤B3:分析所述请求和响应,对所述请求和响应的数据来源进行定位;
子步骤B4:根据所述定位结果,编写所述服务化***的定制处理程序及配置文件,其中,所述定制处理程序继承默认处理程序;
子步骤B5:利用所述目标定制处理程序从所述服务端获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
目前监听工具有很多,在本发明一可选实施例中,示出了所述监听工具包括网络封包分析软件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格式文件包括导出表和导入表,所述导出表用于存放所有需要导出的符号名,与所述符号名对应的符号地址;所述导入表用于存放所有需要导入的符号名;
根据所述加载,确定所述目标函数在所述导入表/导出表中的地址指向的位置;
在执行所述目标函数之前和/或之后,利用以下一个或多个子步骤,截获所述目标函数的参数和返回值;
其中,所述子步骤包括:
(1):修改所述导出表,使所述导出表中的地址指向某个新函数,在新函数中调用需要导出的函数;
(2):修改所述导入表,使所述导入表中的地址指向某个新函数;
(3):修改所述目标函数的前几个字节,使所述目标函数在导入表中的地址跳往某个新地址。
***层面的第二种拦截机制是钩子机制。动态链接库往往需要将一些函数提供给其他可执行文件或动态链接库使用,这种行为被称为符号导出。当某个程序需要使用来自其它动态链接库的函数或变量时,需要进行符号导入。Windows平台可执行程序、动态链接库的文件格式都是PE(Portable Executable)格式。在PE文件中,有两个重要的结构:导出表(Export Address Table,EAT)和导入表(Import Address Table,IAT),分别存放了所有需要导出的符号名以及其对应的符号地址和所有需要导入的符号名。当某个PE文件被加载时,加载器的任务之一即确定所有需要导入的函数的地址。当某个程序调用动态链接库提供的函数时,函数入口即为导入表中的地址指向的位置。从上述分析可以看出,如果我们希望在动态链接库提供的某函数执行之前和之后增添新的功能,那么可以使用上述三种子步骤(子步骤A、B、C)。上述三种手段即为***机制中的钩子机制。通过钩子机制,可以在函数执行之前和之后增添新的功能,截获函数的参数和返回值,以此获得数据的调用方式。
使用上述回调机制和钩子机制可以设计并实现监听工具,以拦截客户端与服务器之间的数据请求和响应。通过对响应进行关键字检索,即可得到客户端请求数据的方式。
根据回调机制和钩子机制,所述子步骤B2在实现时可包括以下步骤:
利用所述回调机制或所述钩子机制监听所述客户端与所述服务端之间的数据请求和响应。
然后针对无法进行定位的数据,可利用回调机制和钩子机制对所述请求和响应的数据来源进行定位。
上述请求地址或请求体中可能存在参数。其中,有些参数是针对数据接口固定的,而有些参数是变化的,例如查询的条件。通过互操作***制作数据接口,对于固定的参数可以直接编码在处理程序中,也可以编写在配置文件中;对于变化的参数则需要在请求地址或请求体中提供。请求中的参数信息以及处理程序中使用的参数都可以在数据接口配置文件中配置。
由于定制处理程序继承运行平台提供的默认处理程序,默认处理程序提供完整的处理流程,那么根据上述处理结果编写的定制处理程序,在定制处理程序中,只需根据定位得到的一个或连续的几个请求向原***发出请求,得到响应后进行相应的处理,将结果返回给默认的处理程序即可。其中,请求的参数或来源于配置文件,或来源于数据接口请求中的参数。
最后,需要编写配置文件,将数据接口配置文件和定制的处理程序相关联,使得运行平台在接收到数据请求后可以通过解析数据接口文件获取参数和配置,从而找到对应的定制处理程序完成请求的处理。
上述步骤中,默认处理程序采用模板方法设计模式,本框架也将提供默认的处理程序以供开发者使用。模板方法设计模式在基类的方法中定义算法流程,而将一些步骤延迟到子类中实现,同时提供某些通用方法供子类方法调用。
在本申请一可选实施例示出了所述默认处理程序包括以下步骤:
进行预处理工作,获得数据库或网络连接;
处理所述数据库或网络发送的请求,并返回至请求对象;
将所述请求对象序列化,并释放连接。
另外,由于上述步骤中的打开或关闭连接十分消耗***性能,在本申请一可选实施例中示出了一种解决方式,可减少***性能的消耗,具体可为:
在所述默认处理程序中,为每一类连接建立一个连接池,并由所述默认处理程序统一管理。
本发明通过子步骤B1~子步骤B5,基于***驱动监听模块、***驱动编排模块、***驱动默认处理程序模块和***驱动定制处理程序模块的功能来提供业务数据接口的管理功能,以此根据客户端应用程序能得到客户端访问服务端的方式;当客户端和服务端之间应用层协议未知的情况,可利用回调机制和钩子机制得到服务端接口的访问方式,以此克服现有技术难题。
在具体实现时,以Web API的形式提供C/S***的业务数据服务。数据请求首先到达管理中心,经过缓存、流量控制、统计模块之后到达运行平台。上述缓存、流量控制、统计模块都属于互操作***中现有的模块,在此不多赘述。访问请求到达运行平台后,API路由模块(也属于互操作***中现有的模块)对请求的参数进行解析,根据参数中的数据接口配置文件找到定制处理程序,调用定制处理程序对访问进行处理。定制处理程序继承默认的处理程序,故请求首先到达默认处理程序,执行框架逻辑。定制处理程序将根据请求的参数和数据接口的配置请求原***,并对响应进行整理,之后将结果返回给默认处理程序,再由默认处理程序返回给上层调用者。
当所述“黑盒”不能提取到目标业务数据时,利用应用驱动服务化方法对所述“灰盒”进行处理,在本发明一优选实施例中,示出了步骤S402的实现步骤:
子步骤C1:确定客户端的运行平台,使用反编译工具对所述客户端进行反编译;
子步骤C2:根据反编译结果,判断业务数据是否可定位;
若不可定位,所述步骤包括:
子步骤C3:根据所述反编译的结果以及逆向工程经验,确定所述客户端的目标插桩函数;
子步骤C4:利用插桩工具对所述目标插桩函数进行插桩,捕获运行时的数据流和控制流,对所述业务数据进行定位;
若可定位,所述步骤包括:
子步骤C5:根据所述反编译结果,对所述业务数据进行定位,编写所述服务化***的定制处理程序,并将所述定制处理程序封装为Web API接口;
子步骤C6:根据所述定位,判断是否需要调用所述客户端的代码;
若需要调用,所述步骤包括:
子步骤C7:编写所述客户端代码的调用函数,并利用插桩工具将所述调用函数和HTTP服务器***所述客户端的应用程序,获得所述应用程序内部代码的Web API接口;其中,所述HTTP服务器被编译为动态链接库;
子步骤C8:编写所述服务化***的定制处理程序及配置文件;
子步骤C9:利用所述定制的处理程序向插桩入客户端内部的HTTP服务器发出访问请求;
子步骤C10:根据所述访问请求,所述HTTP服务器通过调用接入处理程序从遗产Windows应用中获取目标业务数据;其中,所述接入处理程序通过调用客户端代码的方式获取数据;
子步骤C11:所述定制处理程序从所述HTTP服务器获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
使用C#、Java、PowerScript语言开发的应用程序在运行时需要依赖于某种运行时环境。这类应用程序在编译时并不生成目标平台的机器代码,而是生成中间语言(Intermediate Language,IL)代码,在运行时由运行时环境解释执行。这些中间语言不同于汇编语言,他们比较容易被处理,可以使用反编译(decompile)工具察看应用程序的中间语言并反编译为高级语言。.NET平台的反编译工具有Reflector、ILSpy、JustDecompile等。其中,Reflector较其他工具而言更为强大。通过Reflector打开exe或dll文件,可以选择以中间语言、C#、Visual Basic、F#编程语言查看某个类的代码。Java平台的反编译工具有Java Decompile等,该工具可以根据class文件重构出Java代码。PowerBuilder平台的反编译工具有Shudepb等。通过Shudepb打开可执行程序,将自动关联该程序所有引入的PowerBuilder文件并对其进行反编译,由此可以浏览应用程序的内部实现。对于使用C++编写的程序,需要首先对可执行程序进行反汇编,在反汇编的基础上进行反编译。可以使用反汇编工具IDA①和反编译工具Hex-Rays Decompiler。
通过上述反编译工具可以访问应用程序的中间代码或源代码。此时,如果根据静态反编译结果即可对数据服务进行定位,则直接编写互操作***处理程序将业务数据封装为Web API即可。然而,应用程序往往代码量大,静态查看、搜索代码在大部分情况下不能快速定位到目标位置。此时,需要通过插桩技术对应用程序进行修改,以记录客户端运行时的数据流和控制流,并和上述反编译工具相结合实现目标定位。
插桩(instrumentation)技术通过在被测程序中***代码片断,实现在程序执行时获得额外信息的目的。对诸如.NET等平台的程序集插桩实际上是对于中间语言的插桩。在应用驱动的服务化流程中,插桩的目的是为了打印参数值、返回值,调用栈以及部分控制流。需要使用可以对程序集进行编辑的编辑库实现插桩。例如.NET中间语言编辑库Mono.Cecil,它以动态链接库的形式提供。使用时,通过Mono.Cecil的API打开可执行程序或动态链接库,可以对其进行编辑,实现.NET中间语言代码的增、删、改、函数注入,从而实现打印函数参数值、返回值、调用栈等功能。
根据反编译的结果以及逆向工程经验,可以确定需要使用插桩工具进行插桩的目标插桩函数。通过对这些函数进行插桩,可以使得程序在运行时记录函数参数、函数返回值和函数调用栈,从而捕获运行时的数据流和控制流。之后根据客户端界面中的数据在日志中进行关键字检索,即可确定业务数据对应的客户端代码。如无法检索到关键字,则从调用栈出发,继续对函数进行插桩,往复数次后即可成功检索,由此得到获取数据的方式。如果业务数据可以通过Web方式访问,则可以直接编写定制的处理程序。对于无法通过Web方式调用的客户端内部代码,需要首先提供Web接口。通过对应用程序重新插桩,植入负责监听外部请求的HTTP服务器和根据请求调用客户端代码的函数,即可提供客户端内部代码的Web访问接口。其中,HTTP服务器由框架提供,调用客户端代码的函数由服务的开发者编写。HTTP服务器被编译为动态链接库。通过框架提供的插桩工具将HTTP服务器启动语句插桩到应用程序中,即可在应用程序运行时启动HTTP服务器。
当HTTP服务器接收到请求后,需要解析请求参数,并调用“调用客户端代码的函数”。对于存在修饰符的编程语言,应用程序的函数由修饰符限制其访问范围:被public修饰符修饰的函数可以在全局范围内访问,被internal修饰符修饰的函数可以在同一程序集内部访问,被protected修饰符修饰的函数可以在该类及其子类内部访问,被private修饰符修饰的函数只可在该类内部访问。因此,在调用客户端代码的函数中,使用默认的函数调用方法并不能调用应用程序中全部的函数。但反射机制并不受上述局限。在使用反射机制时,首先获取程序集并在程序集中获取类,之后便可通过invokeMember函数调用类中的任意方法。
由此,通过子步骤C1~子步骤C11,基于应用驱动反编译工具、应用驱动插桩工具、应用驱动默认处理程序模块、应用驱动定制处理程序模块和应用驱动处理程序代理模块的功能,通过对可执行程序完成静态分析和动态分析,通过逆向工程技术和程序插桩技术截获客户端运行时的数据流和控制流,实现数据溯源并恢复出业务数据的访问接口,将客户端中的业务数据提供为服务,并提供Web API供服务的消费者访问。
综上,根据实施例2的三种运行服务化方法的描述,如图5所示,示出了本发明一种富客户端的业务服务封装和访问***运行时的架构图。将客户端视为“黑盒”和“灰盒”,通过用户驱动、***驱动、应用驱动三种方式完成了遗产Windows应用的业务数据服务化工作。
需要注意,由于通常情况下运行本发明服务化***的服务器要比运行客户端的计算机性能强大,在定制处理程序中完成数据整理工作时间效率较高,故选择在定制处理程序中完成数据整理。
针对本发明的发明点,采用优选实施例中子步骤B1~子步骤B5的***驱动服务化方法对一具体实例的遗产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。其中,接口请求参数及含义见表2,部分返回参数及含义见表3。
表2:来港箱查询服务请求参数及含义
表3:来港箱查询服务返回参数及含义
在来港箱查询接口的参数中,入港号和出港号分别来自于入港船和出港船对话框。同理,在打开入港船和出港船对话框的时候捕获执行的SQL语句,实现定制处理程序并部署,用户可以通过Web API访问数据。具体API为:https://localhost:1626/hd/?iw-apikey=123&iw-cmd=inship。Y市码头***入港船查询服务执行结果见图7.5,部分返回参数的含义见表4。
表4:Y市码头***入港船查询服务返回参数及含义
本发明针对真实的遗产Windows应用,对应用中的来港数据实现了服务化,制作了查询接口,使用本文提出的框架完成了其业务数据的服务化工作,提供Web API供服务的消费者访问。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例3
如图6所示,基于同一发明构思,对应本发明实施例2中的方法,示出了本发明一种富客户端的业务服务封装和访问装置的结构框图,所述装置应用于本发明实施例1所述的***,所述装置包括以下模块:
黑盒服务化处理模块601,用于将所述客户端作为“黑盒”,利用用户驱动服务化方法和***驱动服务化方法对所述“黑盒”分别进行处理,实现业务数据服务化;
灰盒服务化处理模块602,用于在所述“黑盒”不能提取到目标业务数据时,将所述客户端作为“灰盒”,利用应用驱动服务化方法对所述“灰盒”进行处理,实现业务数据服务化。
对应本发明实施例2的优选实施例,所述黑盒服务化处理模块601具体可以包括以下子步骤:
操作流记录子模块,用于记录所述客户端界面的操作流;其中,所述操作流由运行用户操作记录工具后,在接收到用户在所述客户端界面的触发操作时生成;
操作流编排子模块,用于编排所述操作流,合并冗余的操作步骤;
界面数据提取子模块,用于根据编排后的操作流编写所述接入处理程序,回放操作并从所述客户端界面中提取数据;
用户驱动服务化接口子模块,用于在所述客户端所在的计算机运行所述HTTP服务器,并将所述接入处理程序提供为网络应用程序Web API接口;
用户驱动编写子模块,用于编写所述服务化***的定制处理程序及配置文件;
用户驱动访问请求发送子模块,用于利用所述定制处理程序向与所述客户端运行在同一计算机上的HTTP服务器发送访问请求;
用户驱动获取业务数据子模块,用于根据所述访问请求,所述HTTP服务器通过调用接入处理程序从遗产Windows应用中获取目标业务数据;其中,所述接入处理程序通过模拟用户操作,从所述客户端界面中获取目标业务数据;
用户驱动数据整理子模块,用于所述定制处理程序从所述HTTP服务器获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
对应本发明实施例2的优选实施例,所述黑盒服务化处理模块601还具体可以包括以下子步骤:
监听工具选择子模块,用于确定所述客户端访问数据源时使用的程序库,并选择目标监听工具;
请求和响应监听子模块,用于利用所述目标监听工具监听所述客户端与服务端之间的数据请求和响应;
请求和响应定位子模块,用于分析所述请求和响应,对所述请求和响应的数据来源进行定位;
***驱动编写子模块,用于根据所述定位结果,编写所述服务化***的定制处理程序及配置文件,其中,所述定制处理程序继承默认处理程序;
***驱动数据整理子模块,用于利用所述目标定制处理程序从所述服务端获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
对应本发明实施例2的优选实施例,所述灰盒服务化处理模块602具体包括以下子模块:
反编译子模块,用于确定客户端的运行平台,使用反编译工具对所述客户端进行反编译;
定位判断子模块,用于根据反编译结果,判断业务数据是否可定位;
插桩函数确定子模块,用于在所述业务数据不可定位时,根据所述反编译的结果以及逆向工程经验,确定所述客户端的目标插桩函数;
业务数据定位子模块,用于利用插桩工具对所述目标插桩函数进行插桩,捕获运行时的数据流和控制流,对所述业务数据进行定位;
应用驱动服务化接口子模块,用于在所述业务数据可定位时,根据所述反编译结果,对所述业务数据进行定位,编写所述服务化***的定制处理程序,并将所述定制处理程序封装为Web API接口;
客户端代码调用子模块,用于根据所述定位,判断是否需要调用所述客户端的代码;
再插桩子模块,用于在需要调用所述客户端的代码时,编写所述客户端代码的调用函数,并利用插桩工具将所述调用函数和HTTP服务器***所述客户端的应用程序,获得所述应用程序内部代码的Web API接口;其中,所述HTTP服务器被编译为动态链接库;
应用驱动编写子模块,用于编写所述服务化***的定制处理程序及配置文件;
应用驱动访问请求发送子模块,用于利用所述定制的处理程序向插桩入客户端内部的HTTP服务器发出访问请求;
应用驱动获取业务数据子模块,用于根据所述访问请求,所述HTTP服务器通过调用接入处理程序从遗产Windows应用中获取目标业务数据;其中,所述接入处理程序通过调用客户端代码的方式获取数据;
应用驱动数据整理子模块,用于所述定制处理程序从所述HTTP服务器获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
本申请实施例还提供了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行本申请实施例所述的一个或多个的方法。
本申请实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本申请实施例所述的一个或多个的方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种富客户端的业务服务封装和访问***,一种富客户端的业务服务封装和访问方法,以及一种富客户端的业务服务封装和访问装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种富客户端的业务服务封装和访问***,包括互操作***,所述互操作***包括数据接口生成平台和数据接口运行平台,其特征在于,
所述数据接口生成平台还包括:
用户驱动记录模块,用于记录用户的操作;
用户驱动操作编排模块,用于对所述记录的操作进行编排;
***驱动监听模块,用于记录客户端对数据的调用请求;
***驱动编排模块,用于辅助开发者快速定位到一个或连续几个请求;
应用驱动反编译工具,用于对客户端进行反编译;
应用驱动插桩工具,用于使客户端可以记录运行时的数据流和控制流,并将客户端内部代码提供为Web接口;
所述数据接口运行平台还包括:
用户驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
用户驱动定制处理程序模块,用于完成具体的接入数据源工作;
用户驱动处理程序代理模块,包括超文本传输协议HTTP服务器和接入处理程序,其中,所述接入处理程序由服务的开发者实现,通过动作回放的方式从界面获取数据服务;用于使客户端对外提供业务数据访问接口,供定制处理程序调用;
***驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
***驱动定制处理程序模块,用于完成具体的接入数据源工作;
应用驱动默认处理程序模块,用于采用模板方法设计模式,提供除具体接入数据源之外的处理过程的框架方法;
应用驱动定制处理程序模块,用于完成具体的接入数据源工作;
应用驱动处理程序代理模块,包括超文本传输协议HTTP服务器和接入处理程序,其中,所述接入处理程序由服务的开发者实现,通过调用客户端代码的方式从客户端内部获取数据服务;用于使客户端对外提供业务数据访问接口,供定制处理程序调用。
2.一种富客户端的业务服务封装和访问方法,其特征在于,所述方法应用于权利要求1所述的***,所述方法包括:
将所述客户端作为“黑盒”,利用用户驱动服务化方法和***驱动服务化方法对所述“黑盒”分别进行处理,实现业务数据服务化;
当所述“黑盒”不能提取到目标业务数据时,将所述客户端作为“灰盒”,利用应用驱动服务化方法对所述“灰盒”进行处理,实现业务数据服务化。
3.根据权利要求2所述的方法,其特征在于,所述用户驱动服务化方法应用于客户端界面,利用用户驱动服务化方法对所述“黑盒”进行处理,实现业务数据服务化的步骤包括:
子步骤A1:记录所述客户端界面的操作流;其中,所述操作流由运行用户操作记录工具后,在接收到用户在所述客户端界面的触发操作时生成;
子步骤A2:编排所述操作流,合并冗余的操作步骤;
子步骤A3:根据编排后的操作流编写所述接入处理程序,回放操作并从所述客户端界面中提取数据;
子步骤A4:在所述客户端所在的计算机运行所述HTTP服务器,并将所述接入处理程序提供为网络应用程序Web API接口;
子步骤A5:编写所述服务化***的定制处理程序及配置文件;
子步骤A6:利用所述定制处理程序向与所述客户端运行在同一计算机上的HTTP服务器发送访问请求;
子步骤A7:根据所述访问请求,所述HTTP服务器通过调用接入处理程序从遗产Windows应用中获取目标业务数据;其中,所述接入处理程序通过模拟用户操作,从所述客户端界面中获取目标业务数据;
子步骤A8:所述定制处理程序从所述HTTP服务器获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
4.根据权利要求2所述的方法,其特征在于,所述***驱动服务化方法基于客户端与服务端及数据源交互的信息协议,利用***驱动服务化方法对所述“黑盒”进行处理,实现业务数据服务化的步骤包括:
子步骤B1:确定所述客户端访问数据源时使用的程序库,并选择目标监听工具;
子步骤B2:利用所述目标监听工具监听所述客户端与服务端之间的数据请求和响应;
子步骤B3:分析所述请求和响应,对所述请求和响应的数据来源进行定位;
子步骤B4:根据所述定位结果,编写所述服务化***的定制处理程序及配置文件,其中,所述定制处理程序继承默认处理程序;
子步骤B5:利用所述目标定制处理程序从所述服务端获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
5.根据权利要求4所述的方法,其特征在于,所述监听工具基于回调机制实现,所述回调机制的实现步骤包括:
根据第三方库的用户自定义回调函数机制,按照所述机制规范编写目标回调函数并将其编译为动态链接库;其中,所述目标回调函数用于截获所述客户端与服务端之间的数据请求和响应;
配置当前环境变量,当所述目标回调函数运行时,自动加载所述动态链接库并执行所述目标回调函数。
6.根据权利要求4所述的方法,其特征在于,所述监听工具基于钩子机制实现,所述钩子机制的实现步骤包括:
确定所述动态链接库提供的目标函数;
加载所述目标函数的可执行文件PE文件;其中,所述PE格式文件包括导出表和导入表,所述导出表用于存放所有需要导出的符号名,与所述符号名对应的符号地址;所述导入表用于存放所有需要导入的符号名;
根据所述加载,确定所述目标函数在所述导入表/导出表中的地址指向的位置;
在执行所述目标函数之前和/或之后,利用以下一个或多个子步骤,截获所述目标函数的参数和返回值;
其中,所述子步骤包括:
修改所述导出表,使所述导出表中的地址指向某个新函数,在新函数中调用需要导出的函数;
修改所述导入表,使所述导入表中的地址指向某个新函数;
修改所述目标函数的前几个字节,使所述目标函数在导入表中的地址跳往某个新地址。
7.根据权利要求2所述的方法,其特征在于,所述应用驱动服务化方法包括应用驱动服务化管理方法和应用驱动服务化运行方法;
当所述“黑盒”不能提取到目标业务数据时,将所述客户端作为“灰盒”,利用应用驱动服务化方法对所述“灰盒”进行处理,实现业务数据服务化的步骤包括:
子步骤C1:确定客户端的运行平台,使用反编译工具对所述客户端进行反编译;
子步骤C2:根据反编译结果,判断业务数据是否可定位;
若不可定位,所述步骤包括:
子步骤C3:根据所述反编译的结果以及逆向工程经验,确定所述客户端的目标插桩函数;
子步骤C4:利用插桩工具对所述目标插桩函数进行插桩,捕获运行时的数据流和控制流,对所述业务数据进行定位;
若可定位,所述步骤包括:
子步骤C5:根据所述反编译结果,对所述业务数据进行定位,编写所述服务化***的定制处理程序,并将所述定制处理程序封装为Web API接口;
子步骤C6:根据所述定位,判断是否需要调用所述客户端的代码;
若需要调用,所述步骤包括:
子步骤C7:编写所述客户端代码的调用函数,并利用插桩工具将所述调用函数和HTTP服务器***所述客户端的应用程序,获得所述应用程序内部代码的Web API接口;其中,所述HTTP服务器被编译为动态链接库;
子步骤C8:编写所述服务化***的定制处理程序及配置文件;
子步骤C9:利用所述定制的处理程序向插桩入客户端内部的HTTP服务器发出访问请求;
子步骤C10:根据所述访问请求,所述HTTP服务器通过调用接入处理程序从遗产Windows应用中获取目标业务数据;其中,所述接入处理程序通过调用客户端代码的方式获取数据;
子步骤C11:所述定制处理程序从所述HTTP服务器获取目标业务数据,并完成对所述目标业务数据的请求和整理,生成处理结果并返回给调用方。
8.一种富客户端的业务服务封装和访问装置,其特征在于,所述装置应用于权利要求1所述的***,所述装置包括:
黑盒服务化处理模块,用于将所述客户端作为“黑盒”,利用用户驱动服务化方法和***驱动服务化方法对所述“黑盒”分别进行处理,实现业务数据服务化;
灰盒服务化处理模块,用于在所述“黑盒”不能提取到目标业务数据时,将所述客户端作为“灰盒”,利用应用驱动服务化方法对所述“灰盒”进行处理,实现业务数据服务化。
9.一种装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1-7所述的一个或多个的方法。
10.一个或多个机器可读介质,其特征在于,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-7所述的一个或多个的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910517103.8A CN110381026B (zh) | 2019-06-14 | 2019-06-14 | 一种富客户端的业务服务封装和访问***、方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910517103.8A CN110381026B (zh) | 2019-06-14 | 2019-06-14 | 一种富客户端的业务服务封装和访问***、方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110381026A true CN110381026A (zh) | 2019-10-25 |
CN110381026B CN110381026B (zh) | 2021-12-10 |
Family
ID=68250354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910517103.8A Active CN110381026B (zh) | 2019-06-14 | 2019-06-14 | 一种富客户端的业务服务封装和访问***、方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110381026B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124692A (zh) * | 2020-01-02 | 2020-05-08 | 神州数码融信软件有限公司 | 一种业务请求处理*** |
CN112995259A (zh) * | 2019-12-17 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 业务信息的推送方法、装置、***、设备及存储介质 |
CN113805868A (zh) * | 2021-09-15 | 2021-12-17 | 上海得帆信息技术有限公司 | 一种基于html实现api编排的方法和*** |
CN116070004A (zh) * | 2023-01-28 | 2023-05-05 | 北京亿赛通科技发展有限责任公司 | 用户行为关联插件***及其控制方法、电子设备、介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030004746A1 (en) * | 2001-04-24 | 2003-01-02 | Ali Kheirolomoom | Scenario based creation and device agnostic deployment of discrete and networked business services using process-centric assembly and visual configuration of web service components |
CN101699393A (zh) * | 2009-10-09 | 2010-04-28 | 中国电子科技集团公司第二十八研究所 | 一种面向网络的智能化软件界面动态生成方法 |
CN101895431A (zh) * | 2010-08-20 | 2010-11-24 | 烽火通信科技股份有限公司 | 一种基于RIA的高性能Web传输网管***及实现方法 |
CN102790708A (zh) * | 2012-08-08 | 2012-11-21 | 中国海洋大学 | 一种应用于家庭网络的设备服务适配方法 |
CN103838558A (zh) * | 2012-11-22 | 2014-06-04 | ***通信集团公司 | 网站建站***及方法、访问网站的方法及网页适配*** |
CN108228192A (zh) * | 2016-12-14 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向服务的机载软件的动态管理的实现方法 |
CN108737548A (zh) * | 2018-05-24 | 2018-11-02 | 南京邮电大学 | 分布式web微服务容器集群架构***及其实现方法 |
CN110069267A (zh) * | 2019-03-15 | 2019-07-30 | 平安普惠企业管理有限公司 | 数据更新方法、装置、计算机设备及存储介质 |
-
2019
- 2019-06-14 CN CN201910517103.8A patent/CN110381026B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030004746A1 (en) * | 2001-04-24 | 2003-01-02 | Ali Kheirolomoom | Scenario based creation and device agnostic deployment of discrete and networked business services using process-centric assembly and visual configuration of web service components |
CN101699393A (zh) * | 2009-10-09 | 2010-04-28 | 中国电子科技集团公司第二十八研究所 | 一种面向网络的智能化软件界面动态生成方法 |
CN101895431A (zh) * | 2010-08-20 | 2010-11-24 | 烽火通信科技股份有限公司 | 一种基于RIA的高性能Web传输网管***及实现方法 |
CN102790708A (zh) * | 2012-08-08 | 2012-11-21 | 中国海洋大学 | 一种应用于家庭网络的设备服务适配方法 |
CN103838558A (zh) * | 2012-11-22 | 2014-06-04 | ***通信集团公司 | 网站建站***及方法、访问网站的方法及网页适配*** |
CN108228192A (zh) * | 2016-12-14 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向服务的机载软件的动态管理的实现方法 |
CN108737548A (zh) * | 2018-05-24 | 2018-11-02 | 南京邮电大学 | 分布式web微服务容器集群架构***及其实现方法 |
CN110069267A (zh) * | 2019-03-15 | 2019-07-30 | 平安普惠企业管理有限公司 | 数据更新方法、装置、计算机设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
GUIDO NUÑEZ;MAGALÍ GONZÁLEZ;NATHALIE AQUINO;LUCA CERNUZZI: "A model-driven approach to develop rich web applications", 《2017 XLIII LATIN AMERICAN COMPUTER CONFERENCE (CLEI)》 * |
应康兴: "基于富网络应用的远动监控界面无刷新技术研究", 《中国优秀硕士学位论文全文库 工程科技Ⅱ辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112995259A (zh) * | 2019-12-17 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 业务信息的推送方法、装置、***、设备及存储介质 |
CN111124692A (zh) * | 2020-01-02 | 2020-05-08 | 神州数码融信软件有限公司 | 一种业务请求处理*** |
CN113805868A (zh) * | 2021-09-15 | 2021-12-17 | 上海得帆信息技术有限公司 | 一种基于html实现api编排的方法和*** |
CN116070004A (zh) * | 2023-01-28 | 2023-05-05 | 北京亿赛通科技发展有限责任公司 | 用户行为关联插件***及其控制方法、电子设备、介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110381026B (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11422778B2 (en) | Development environment for real-time dataflow programming language | |
USRE49486E1 (en) | System and method for tracking web interactions with real time analytics | |
CN110381026A (zh) | 一种富客户端的业务服务封装和访问***、方法和装置 | |
US9959198B1 (en) | Simulated testing of API | |
CN108319547B (zh) | 测试用例生成方法、装置和*** | |
US20100082773A1 (en) | Screen scraping interface | |
CN109684370A (zh) | 日志数据处理方法、***、设备及存储介质 | |
Baresi et al. | Microservices: The evolution and extinction of web services? | |
US20200133829A1 (en) | Methods and systems for performance testing | |
CN110347374A (zh) | 一种富客户端业务服务封装和调用***、方法和装置 | |
CN109885624A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
JP2019510282A (ja) | グロッサリを用いたストリーミング分析アプリケーションの生成 | |
CN104731606B (zh) | 基于识别抓取技术实现企业应用集成管理的***及方法 | |
CN114706579A (zh) | 页面开发方法、装置、服务器及存储介质 | |
CN111797340B (zh) | 一种自定义提取流程的服务封装*** | |
CN113010395A (zh) | 数据采集方法、装置、设备、介质和程序产品 | |
JP2023070148A (ja) | ロボティックプロセスオートメーション(rpa)ロボットをリソースへ動的にバインドさせるためのシステムおよび方法 | |
CN113849156A (zh) | OpenHarmony操作***应用的无代码智能开发***及其使用方法 | |
Chen et al. | Service encapsulation for middleware management interfaces | |
US20220269586A1 (en) | Systems and methods for automating test and validity | |
CN114706738A (zh) | 客户端自动埋点的方法及装置 | |
CN109062785B (zh) | 接口参数约束代码定位方法与*** | |
US20240255920A1 (en) | Selective Invocation of RPA Workflows Via API Calls | |
US20240256370A1 (en) | Selective Invocation of RPA Workflows Via API Calls | |
US8977901B1 (en) | Generating service call patterns for systems under test |
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 |