面向复杂Web应用的服务化方法技术

技术编号:22330291 阅读:38 留言:0更新日期:2019-10-19 12:18
本发明专利技术公开了一种面向复杂Web应用的服务化方法,利用运行时信息与分析结果采集工具,捕捉运行时信息并进行动态数据依赖关系分析,通过控制流与数据流可视化与分析工具对Web应用前端的控制流与数据流进行分析,以辅助开发者快速、高效地分析与理解复杂Web应用前端的控制流与数据流,得到获取所需数据或实现所需功能需要执行的网络请求以及JavaScript业务逻辑与数据处理逻辑,以及业务逻辑与数据处理逻辑之间的串联关系,然后根据控制流与数据流分析结果,在Web应用前端JavaScript代码中定位业务逻辑与数据处理逻辑并进行提取与重构,最后将构造的Web服务处理程序部署到Web服务运行时环境中运行,快速、高效地完成了复杂Web应用的服务化,对Web服务提供了可靠的运行支持。

【技术实现步骤摘要】
面向复杂Web应用的服务化方法
本专利技术涉及Web应用服务化技术,尤其涉及一种面向复杂Web应用的服务化方法。
技术介绍
在大数据时代,将信息系统中的数据与功能服务化,以便更好地处理、分析与集成,具有十分重要的价值与意义。然而,大量信息系统在设计与实现时并未考虑到服务化的需求,且许多系统原开发商不再提供技术支持,使得系统拥有者或第三方常常难以开展系统的服务化工作。因此,如何辅助他们实现信息系统的服务化已成为大数据时代的关键问题。特别地,针对大量复杂Web应用,即具有前端视图渲染、前端包含大量业务逻辑与数据处理逻辑、前端与服务器动态交换数据等特征的Web应用,其服务化面临如下三个挑战:1)浏览器环境的复杂性,使得许多传统的程序分析手段难以有效应用于前端JavaScript的分析,也给从其中提取业务逻辑与数据处理逻辑带来了难度。2)JavaScript的高度动态性,也使得静态程序分析手段难以有效应用于JavaScript的分析。3)事务的关联性,增加了服务化的分析与开发工作的难度与工作量。上述挑战使得复杂Web应用的服务化非常繁琐与耗时,通常需要很长的开发周期与高昂的开发成本。
技术实现思路
本专利技术主要目的在于,提供一种面向复杂Web应用的服务化方法,以解决现有的对复杂Web应用进行服务化的方法非常繁琐与耗时的问题。本专利技术是通过如下技术方案实现的:一种面向复杂Web应用的服务化方法,包括如下步骤:步骤S1:利用运行时信息与分析结果采集工具,捕捉运行时信息并进行动态数据依赖关系分析,并采集运行记录日志、SourceMaps以及动态数据依赖关系的分析结果;步骤S2:根据所述运行记录日志、SourceMaps以及动态数据依赖关系的分析结果,使用控制流与数据流可视化与分析工具对Web应用前端的控制流与数据流进行分析,得到获取所需数据或实现所需功能需要执行的网络请求以及JavaScript业务逻辑与数据处理逻辑,以及所述业务逻辑与数据处理逻辑之间的串联关系;步骤S3:根据步骤S2的分析结果,在所述Web应用前端JavaScript代码中定位所需JavaScript业务逻辑与数据处理逻辑,并对所需JavaScript业务逻辑与数据处理逻辑进行提取与重构;步骤S4:构造Web服务处理程序,根据步骤S2得到的Web应用前端的逻辑顺序,执行获取所需数据或实现所需功能需要执行的网络请求,并通过所述Web服务运行时环境中的支持HTML与DOMAPI的JavaScritp运行时环境来执行步骤S3中所提取的JavaScript业务逻辑与数据处理逻辑,并将它们串联,得到Web服务处理程序;步骤S5:将步骤S4中得到的Web服务处理程序部署到所述Web服务运行时环境中运行。进一步地,所述运行记录日志保存在数据库中,记录了Web应用前端的控制流信息、UI与网络事件及其相关的数据;所述SourceMaps以JSON格式记录了运行记录日志的ID与Web应用原JavaScript代码相应位置之间的映射关系;所述动态数据依赖关系的分析结果保存在文件中,以JSON格式记录了运行记录日志中所记录的JavaScript操作与数据之间的动态数据依赖关系。进一步地,所述运行时信息与分析结果采集工具的前端包括Web应用前端运行时分析程序、所述Web应用插桩模块、代理服务器,所述运行时信息与分析结果采集工具的后端包括WebSocket服务器、数据库更新模块、文件更新模块;所述Web应用前端运行时分析程序以所述运行记录日志的方式记录所述Web应用前端的控制流信息、UI与网络事件及其相关的数据,并分析所述运行记录日志中所记录的JavaScript操作与事件之间的动态数据依赖关系;所述代理服务器用于截获浏览器与Web应用服务器之间所有HTTP请求与响应,并发送给所述所述Web应用插桩模块;所述所述Web应用插桩模块通过对JavaScript代码进行插桩的方式将所述Web服务运行时环境和Web应用前端运行时分析程序插入所述Web应用前端;所述WebSocket服务器用于接收Web应用前端运行时分析程序发送的运行时信息与分析结果;所述数据库更新模块用于将运行记录日志写入到日志数据库中;所述文件更新模块用于将JSON格式的SourceMaps与动态数据依赖关系的分析结果序列化并保存到文件中。进一步地,所述步骤S1包括:启动所述代理服务器,并设置其将所截获的HTTP请求与响应发送给所述所述Web应用插桩模块处理,同时启动所述运行时信息与分析结果采集工具;在浏览器中设置代理到所述代理服务器所监听的端口,访问所需服务化的Web应用并进行操作,使得界面中显示所需服务化的数据或完成所需服务化的功能,该过程中,所述代理服务器截获所有HTTP请求与响应,并发送给所述所述Web应用插桩模块处理,若所请求的资源为HTML或JavaScript文件,则所述所述Web应用插桩模块对所述Web应用前端进行插桩,插入所述Web应用插桩模块的运行时环境与Web应用前端运行时分析程序;在所述Web应用前端运行时,所述Web应用前端运行时分析程序执行分析,捕捉所述Web应用前端的运行时信息并进行动态数据依赖关系分析,并采集运行记录日志、SourceMaps以及动态数据依赖关系的分析结果。进一步地,所述Web应用前端运行时分析程序采用基于资源URL与基于数据搜索相结合的方式过滤掉所述运行记录日志中的无用运行记录。进一步地,所述控制流与数据流可视化与分析工具的前端包括运行记录的可视化查看器、代码与数据查看器、数据流分析模块,控制流与数据流可视化与分析工具的后端包括数据服务器、数据库读取模块、文件读取模块;所述运行记录的可视化查看器以可折叠的树型结构呈现所述Web应用前端的控制流;所述代码与数据查看器用于格式化并显示运行记录日志中所记录的操作对应的Web应用原JavaScript代码位置与相关数据;所述数据流分析模块基于动态数据依赖图与基于数据搜索两种数据流分析方式对数据流进行分析,以得到获取所需数据或实现所需功能需要执行的网络请求以及JavaScript业务逻辑与数据处理逻辑;所述数据库读取模块用于从日志数据库读取运行记录日志;所述文件读取模块用于从文件中读取SourceMaps与动态数据依赖关系的分析结果;所述数据服务器用于向前端Web界面提供运行记录日志、SourceMaps与动态数据依赖关系的分析结果。进一步地,所述步骤S2包括:启动所述控制流与数据流可视化与分析工具的后端,并通过浏览器访问所述控制流与数据流可视化与分析工具的前端Web界面;所述数据服务器通过所述数据库读取模块读取所述运行记录日志,通过所述文件读取模块读取所述SourceMaps与动态数据依赖关系的分析结果,并将所述运行记录日志、所述SourceMaps与动态数据依赖关系的分析结果发送给所述控制流与数据流可视化与分析工具的前端Web界面;所述前端Web界面以可视化的方式呈现所述Web应用前端的控制流,同时数据流分析模块基于动态数据依赖图与基于数据搜索两种数据流分析方式对数据流进行分析,得到获取所需数据或实现所需功能需要执行的网络请求以及JavaScript业务逻辑与数据处理逻辑,以及所述业务逻辑与数据处理逻辑之间的串联关系。本文档来自技高网...

【技术保护点】
1.一种面向复杂Web应用的服务化方法,其特征在于,包括如下步骤:步骤S1:利用运行时信息与分析结果采集工具,捕捉运行时信息并进行动态数据依赖关系分析,并采集运行记录日志、Source Maps以及动态数据依赖关系的分析结果;步骤S2:根据所述运行记录日志、Source Maps以及动态数据依赖关系的分析结果,使用控制流与数据流可视化与分析工具对Web应用前端的控制流与数据流进行分析,得到获取所需数据或实现所需功能需要执行的网络请求以及JavaScript业务逻辑与数据处理逻辑,以及所述业务逻辑与数据处理逻辑之间的串联关系;步骤S3:根据步骤S2的分析结果,在所述Web应用前端JavaScript代码中定位所需JavaScript业务逻辑与数据处理逻辑,并对所需JavaScript业务逻辑与数据处理逻辑进行提取与重构;步骤S4:构造Web服务处理程序,根据步骤S2得到的Web应用前端的逻辑顺序,执行获取所需数据或实现所需功能需要执行的网络请求,并通过所述Web服务运行时环境中的支持HTML与DOM API的JavaScritp运行时环境来执行步骤S3中所提取的JavaScript业务逻辑与数据处理逻辑,并将它们串联,得到Web服务处理程序;步骤S5:将步骤S4中得到的Web服务处理程序部署到所述Web服务运行时环境中运行。...

【技术特征摘要】
1.一种面向复杂Web应用的服务化方法,其特征在于,包括如下步骤:步骤S1:利用运行时信息与分析结果采集工具,捕捉运行时信息并进行动态数据依赖关系分析,并采集运行记录日志、SourceMaps以及动态数据依赖关系的分析结果;步骤S2:根据所述运行记录日志、SourceMaps以及动态数据依赖关系的分析结果,使用控制流与数据流可视化与分析工具对Web应用前端的控制流与数据流进行分析,得到获取所需数据或实现所需功能需要执行的网络请求以及JavaScript业务逻辑与数据处理逻辑,以及所述业务逻辑与数据处理逻辑之间的串联关系;步骤S3:根据步骤S2的分析结果,在所述Web应用前端JavaScript代码中定位所需JavaScript业务逻辑与数据处理逻辑,并对所需JavaScript业务逻辑与数据处理逻辑进行提取与重构;步骤S4:构造Web服务处理程序,根据步骤S2得到的Web应用前端的逻辑顺序,执行获取所需数据或实现所需功能需要执行的网络请求,并通过所述Web服务运行时环境中的支持HTML与DOMAPI的JavaScritp运行时环境来执行步骤S3中所提取的JavaScript业务逻辑与数据处理逻辑,并将它们串联,得到Web服务处理程序;步骤S5:将步骤S4中得到的Web服务处理程序部署到所述Web服务运行时环境中运行。2.如权利要求1所述的面向复杂Web应用的服务化方法,其特征在于,所述运行记录日志保存在数据库中,记录了Web应用前端的控制流信息、UI与网络事件及其相关的数据;所述SourceMaps以JSON格式记录了运行记录日志的ID与Web应用原JavaScript代码相应位置之间的映射关系;所述动态数据依赖关系的分析结果保存在文件中,以JSON格式记录了运行记录日志中所记录的JavaScript操作与数据之间的动态数据依赖关系。3.如权利要求1所述的面向复杂Web应用的服务化方法,其特征在于,所述运行时信息与分析结果采集工具的前端包括Web应用前端运行时分析程序、Web应用插桩模块与代理服务器,所述运行时信息与分析结果采集工具的后端包括WebSocket服务器、数据库更新模块、文件更新模块;所述Web应用前端运行时分析程序以所述运行记录日志的方式记录所述Web应用前端的控制流信息、UI与网络事件及其相关的数据,并分析所述运行记录日志中所记录的JavaScript操作与事件之间的动态数据依赖关系;所述代理服务器用于截获浏览器与Web应用服务器之间所有HTTP请求与响应,并发送给所述所述Web应用插桩模块;所述所述Web应用插桩模块通过对JavaScript代码进行插桩的方式将所述Web服务运行时环境和Web应用前端运行时分析程序插入所述Web应用前端;所述WebSocket服务器用于接收Web应用前端运行时分析程序发送的运行时信息与分析结果;所述数据库更新模块用于将运行记录日志写入到日志数据库中;所述文件更新模块用于将JSON格式的SourceMaps与动态数据依赖关系的分析结果序列化并保存到文件中。4.如权利要求3所述的面向复杂Web应用的服务化方法,其特征在于,所述步骤S1包括:启动所述代理服务器,并设置其将所截获的HTTP请求与响应发送给所述所述Web应用插桩模块处理,同时启动所述运行时信息与分析结果采集工具;在浏览器中设置代理到所述代理服务器所监听的端口,访问所需服务化的Web应用并进行操作,使得界面中显示所需服务化的数据或完成所需服务化的功能,该过程中,所述代理服务器截获所有HTTP请求与响应,并发送给所述所述Web应用插桩模块处理,若所请求的资源为HTML或JavaScript文件,则所述所述Web应用插桩模块对所述Web应用前端进行插桩,插入所述Web应用插桩模块的运行时环境与Web应用前端运行时分析程序;在所述Web应用前端运行时,所述Web应用前端运...

【专利技术属性】
技术研发人员:张颖朱晓旻黄罡苏星蔡斯博
申请(专利权)人:北京因特睿软件有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1