CN104932892B - 一种基于WebWorker实现的Web应用中间件异步嵌套调用方法 - Google Patents

一种基于WebWorker实现的Web应用中间件异步嵌套调用方法 Download PDF

Info

Publication number
CN104932892B
CN104932892B CN201510343506.7A CN201510343506A CN104932892B CN 104932892 B CN104932892 B CN 104932892B CN 201510343506 A CN201510343506 A CN 201510343506A CN 104932892 B CN104932892 B CN 104932892B
Authority
CN
China
Prior art keywords
middleware
webworker
event
asynchronous
javascript
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.)
Active
Application number
CN201510343506.7A
Other languages
English (en)
Other versions
CN104932892A (zh
Inventor
张家重
荆秀丽
许金源
李光瑞
王玉奎
王红娟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Software Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Software Group Co Ltd filed Critical Inspur Software Group Co Ltd
Priority to CN201510343506.7A priority Critical patent/CN104932892B/zh
Publication of CN104932892A publication Critical patent/CN104932892A/zh
Application granted granted Critical
Publication of CN104932892B publication Critical patent/CN104932892B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于WebWorker实现的Web应用中间件异步嵌套调用方法,其具体实现过程为:搭建Web应用运行环境,然后部署应用,完成参数配置,最后注册中间件;准备完成后即可启动应用,展示用户交互Web页面,接受用户操作;在后台始终运行JavaScript主线程,处理相关业务流程,WebWorker在应用启动时完成检测,实例化为worker对象;在收到中间件指令时,通过WebWorker为事件处理单独创建一个后台子线程,实现了中间件的异步嵌套调用。该一种基于WebWorker实现的Web应用中间件异步嵌套调用方法与现有技术相比,开辟一个新的线程,互不阻塞执行,而且WebWorker是在后台运行,不会影响页面的性能,实现中间件接口异步嵌套调用,实用性强,适用范围广泛,易于推广。

Description

一种基于WebWorker实现的Web应用中间件异步嵌套调用方法
技术领域
本发明涉及计算机技术领域,具体地说是一种实用性强、基于WebWorker实现的Web应用中间件异步嵌套调用方法。
背景技术
现阶段互联网行业飞速发展,各种Web应用层出不穷,中间件技术的使用提供了上层应用与底层系统软件或服务程序之间的桥梁,屏蔽了操作系统或服务的复杂性,实现了各种技术之间的资源共享,减少了程序设计的复杂性。Web应用与中间件通过接口和事件通讯,应用调用中间件接口,中间件通过事件进行反馈,事件发生时触发在Web应用中绑定的代码完成处理任务。JavaScript是一种在Web应用开发中广泛使用的直译式脚本语言,可以实现在HTML页面嵌入动态文本,对浏览器事件做出响应,对即将提交到服务器的数据进行验证,对访客信息进行检测等等功能,非常强大,但是众所周知,Javascript语言的执行环境是相对单纯的"单线程"(single thread),所有任务顺序执行,一方面限制了处理速度,另一方面应用技术的扩展也受到了局限。目前多线程技术在服务端已经发展的很成熟了,但是在Web端的应用中却一直是鸡肋,中间件调用又是Web开发不可获取的组成部分,直接影响了中间件的调用。在Web应用中调用中间件有时需要中间件的事件反馈,这时如果需要再次调用中间件接口,需要等到事件处理完成中间件资源释放后,才能再次调用中间件接口,而无法实现嵌套调用。这种处理方式耗时较长,对界面响应产生很大影响,用户体验较差。如果能在JavaScript接到中间件事件反馈后就能立即释放中间件资源,这样再次调用中间件接口就不会出现冲突了。对此虽然JavaScript中也提供了一些方法,例:setTimeout、setInterval,但是它们不是真正意义上的多线程,而只是将任务分配到了JavaScript引擎任务队列的后端,不能实现事件处理与资源释放的同步,需要等到任务队列前端任务都执行完成才能执行。基于此,现提供一种基于WebWorker实现的Web应用中间件异步嵌套调用方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、基于WebWorker实现的Web应用中间件异步嵌套调用方法。
一种基于WebWorker实现的Web应用中间件异步嵌套调用方法,其具体实现过程为:
一、首先搭建Web应用运行环境,然后部署应用,完成参数配置,最后注册中间件;
二、准备完成后即可启动应用,展示用户交互Web页面,接受用户操作;
三、在后台始终运行JavaScript主线程,处理相关业务流程,WebWorker在应用启动时完成检测,实例化为worker对象;
四、在收到中间件指令时,通过WebWorker为事件处理单独创建一个后台子线程,JavaScript主线程将事件转发之后,中间件资源立刻得到释放;
五、该后台子线程收到事件后进行一定处理或者直接将事件再转给JavaScript主线程,这时主线程再次收到最初的中间件反馈事件,事件处理任务位于JavaScript引擎任务队列的前端,而且此时中间件已经完成资源释放可以接受再次调用,从而同步实现了中间件的异步嵌套调用。
搭建web应用环境过程中,中间件与webworker的实例化同时进行,其具体过程为:
首先将应用初始化,实现中间件加载;
将中间件实例化,方便后面调用;
中间件加载实例化的同时,判断浏览器是否支持webWorker;
同时将webWorker实例化。
所述后台子线程通过Js文件定义创建,从而实现worker子线程处理;通过该Js文件创建一个worker,指向特定的JS文件,同时返回一个worker实例。
所述步骤四中,当JavaScript主线程接收到需调用中间件指令后,自动通过中间件实例调用目标API,待中间件处理完成并反馈事件时自动触发JavaScript主线程中绑定的事件处理函数,在该函数中完成worker子线程的调用,同时释放中间件资源;在JavaScript主线程中等待子线程转发回中间件反馈事件,并在事件处理函数中进行中间件接口的再次调用,这样就实现了中间件接口的异步嵌套调用。
所述异步嵌套调用的详细过程为:
JavaScript主线程实现中间件接口API调用;
定义并绑定中间件事件处理函数,利用webWorker.postMessage实现中间件事件的转发,由JavaScript主线程切换到子线程执行;
转发完成,JavaScript主线程中间件事件处理结束,中间件资源;
在worker子线程Js文件中完成中间件事件消息处理并利用postMessage将事件再回传给JavaScript主线程;
在JavaScript主线程中绑定worker.onmessage方法接收worker子线程事件;
在JavaScript主线程事件处理函数中调用中间件接口,实现中间件接口的异步嵌套调用。
本发明的一种基于WebWorker实现的Web应用中间件异步嵌套调用方法,具有以下优点:
该发明的一种基于WebWorker实现的Web应用中间件异步嵌套调用方法JavaScript的主线程中,开辟一个新的线程,互不阻塞执行,而且WebWorker是在后台运行,不会影响页面的性能,实现中间件接口异步嵌套调用,实用性强,适用范围广泛,易于推广。
附图说明
附图1为本发明的整体架构图。
附图2为本发明的实现流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如附图1所示,一种基于WebWorker实现的Web应用中间件异步嵌套调用方法,该方法是基于HTML5 最新提供的API——WebWorker技术实现的。WebWorker的出现解决了JavaScript只能单线程执行的问题,它是 HTML5 提供的一个新的API,一个JavaScript多线程解决方案。WebWorker支持在当前JavaScript的主线程中,开辟一个新的线程,互不阻塞执行,而且WebWorker是在后台运行,不会影响页面的性能,目前所有主流浏览器均支持WebWorker。将WebWorker与中间件调用技术相结合,在收到中间件反馈事件的时候,利用WebWorker为事件处理单独创建一个后台子线程,JavaScript主线程将事件转发之后,中间件资源立刻得到释放,该后台子线程收到事件后可以进行一定处理或者直接将事件再转给JavaScript主线程,这时主线程再次收到最初的中间件反馈事件,事件处理任务位于JavaScript引擎任务队列的前端,而且此时中间件已经完成资源释放可以接受再次调用,这样就同步实现了中间件的异步嵌套调用。
其具体实现过程为:
一、首先搭建Web应用运行环境,然后部署应用,完成参数配置,最后注册中间件;
二、准备完成后即可启动应用,展示用户交互Web页面,接受用户操作;
三、在后台始终运行JavaScript主线程,处理相关业务流程,WebWorker在应用启动时完成检测,实例化为worker对象;
四、在收到中间件指令时,通过WebWorker为事件处理单独创建一个后台子线程,JavaScript主线程将事件转发之后,中间件资源立刻得到释放;
五、该后台子线程收到事件后进行一定处理或者直接将事件再转给JavaScript主线程,这时主线程再次收到最初的中间件反馈事件,事件处理任务位于JavaScript引擎任务队列的前端,而且此时中间件已经完成资源释放可以接受再次调用,从而同步实现了中间件的异步嵌套调用。
所述步骤四中,当JavaScript主线程接收到需调用中间件指令后,自动通过中间件实例调用目标API,待中间件处理完成并反馈事件时自动触发JavaScript主线程中绑定的事件处理函数,在该函数中完成worker子线程的调用,同时释放中间件资源;在JavaScript主线程中等待子线程转发回中间件反馈事件,并在事件处理函数中进行中间件接口的再次调用,这样就实现了中间件接口的异步嵌套调用。
具体实施例如附图2所示,包括以下步骤:
应用初始化,实现中间件加载;
将中间件实例化,方便后面调用;
判断浏览器是否支持webWorker,if(typeof(Worker)!=="undefined");
定义Js文件jsfilename用于实现worker子线程处理;
通过 worker = new Worker( jsfilename)创建一个worker,指向特定的JS文件,同时返回一个worker实例;
JavaScript主线程实现中间件接口API调用;
定义并绑定中间件事件处理函数,利用webWorker.postMessage实现中间件事件的转发,由JavaScript主线程切换到子线程执行;
转发完成,JavaScript主线程中间件事件处理结束,中间件资源;
在worker子线程jsfilename中完成中间件事件消息处理并利用postMessage将事件再回传给JavaScript主线程;
在JavaScript主线程中绑定worker.onmessage方法接收worker子线程事件;
在JavaScript主线程事件处理函数中调用中间件接口,实现中间件接口的异步嵌套调用;
可以使用 worker.terminate() 来终止worker的执行。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种基于WebWorker实现的Web应用中间件异步嵌套调用方法的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

Claims (4)

1.一种基于WebWorker实现的Web应用中间件异步嵌套调用方法,其特征在于,其具体实现步骤为:
一、首先搭建Web应用运行环境,然后部署应用,完成参数配置,最后注册中间件;
二、准备完成后即可启动应用,展示用户交互Web页面,接受用户操作;
三、在后台始终运行JavaScript主线程,处理相关业务流程,WebWorker在应用启动时完成检测,实例化为worker对象;
四、在收到中间件指令时,通过WebWorker为事件处理单独创建一个后台子线程,JavaScript主线程将事件转发之后,中间件资源立刻得到释放;当JavaScript主线程接收到需调用中间件指令后,自动通过中间件实例调用目标API,待中间件处理完成并反馈事件时自动触发JavaScript主线程中绑定的事件处理函数,在该函数中完成worker子线程的调用,同时释放中间件资源;
五、该后台子线程收到事件后通过事件处理函数或者直接将事件再转给JavaScript主线程,在JavaScript主线程中等待子线程转发回中间件反馈事件,并在事件处理函数中进行中间件接口的再次调用,这时主线程再次收到最初的中间件反馈事件,事件处理任务位于JavaScript引擎任务队列的前端,而且此时中间件已经完成资源释放可以接受再次调用,从而同步实现了中间件的异步嵌套调用。
2.根据权利要求1所述的一种基于WebWorker实现的Web应用中间件异步嵌套调用方法,其特征在于,搭建web应用运行环境过程中,中间件与webworker的实例化同时进行,其具体过程为:
首先将应用初始化,实现中间件加载;
将中间件实例化,方便后面调用;
中间件加载实例化的同时,判断浏览器是否支持webWorker;
同时将webWorker实例化。
3.根据权利要求1所述的一种基于WebWorker实现的Web应用中间件异步嵌套调用方法,其特征在于,所述后台子线程通过Js文件定义创建,从而实现worker子线程处理;通过该Js文件创建一个worker,指向特定的JS文件,同时返回一个worker实例。
4.根据权利要求1所述的一种基于WebWorker实现的Web应用中间件异步嵌套调用方法,其特征在于,所述异步嵌套调用的详细过程为:
JavaScript主线程实现中间件接口API调用;
定义并绑定中间件事件处理函数,利用webWorker.postMessage实现中间件事件的转发,由JavaScript主线程切换到子线程执行;
转发完成,JavaScript主线程中间件事件处理结束,中间件资源;
在worker子线程Js文件中完成中间件事件消息处理并利用postMessage将事件再回传给JavaScript主线程;
在JavaScript主线程中绑定worker.onmessage方法接收worker子线程事件;
在JavaScript主线程事件处理函数中调用中间件接口,实现中间件接口的异步嵌套调用。
CN201510343506.7A 2015-06-19 2015-06-19 一种基于WebWorker实现的Web应用中间件异步嵌套调用方法 Active CN104932892B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510343506.7A CN104932892B (zh) 2015-06-19 2015-06-19 一种基于WebWorker实现的Web应用中间件异步嵌套调用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510343506.7A CN104932892B (zh) 2015-06-19 2015-06-19 一种基于WebWorker实现的Web应用中间件异步嵌套调用方法

Publications (2)

Publication Number Publication Date
CN104932892A CN104932892A (zh) 2015-09-23
CN104932892B true CN104932892B (zh) 2017-11-21

Family

ID=54120068

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510343506.7A Active CN104932892B (zh) 2015-06-19 2015-06-19 一种基于WebWorker实现的Web应用中间件异步嵌套调用方法

Country Status (1)

Country Link
CN (1) CN104932892B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106028254B (zh) * 2016-05-05 2018-09-18 惠州Tcl移动通信有限公司 一种移动终端自动切换左右声道的方法及移动终端
CN108089927B (zh) * 2016-11-23 2022-01-14 阿里巴巴集团控股有限公司 基于Web Worker实现消息通信的方法以及装置
CN110636359B (zh) * 2018-06-21 2021-11-23 杭州海康威视数字技术股份有限公司 音视频同步播放的方法及装置
CN111432262B (zh) * 2020-02-24 2022-05-24 杭州海康威视数字技术股份有限公司 页面视频渲染方法及装置
CN112527413B (zh) * 2020-12-23 2024-06-14 平安普惠企业管理有限公司 一种页面加载方法、装置、设备及存储介质
CN113419842B (zh) * 2021-08-25 2021-11-16 北京翼辉信息技术有限公司 一种基于JavaScript构建边缘计算微服务的方法、装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046878A (zh) * 2006-03-28 2007-10-03 上海卓繁信息技术有限公司 农村合作医疗管理信息系统架构
CN101114226A (zh) * 2007-08-28 2008-01-30 北京中企开源信息技术有限公司 一种基于模型组件的代码自动生成装置、系统及方法
CN101276279A (zh) * 2008-05-21 2008-10-01 天柏宽带网络科技(北京)有限公司 一种统一开发系统和方法
CN101980213A (zh) * 2010-11-23 2011-02-23 中国科学院软件研究所 一种基于j2ee的数据持久化方法及系统
CN102592248A (zh) * 2012-01-12 2012-07-18 江苏电力信息技术有限公司 一种用于手机终端的电力互动服务系统
CN103677788A (zh) * 2012-09-25 2014-03-26 深圳市金正方科技股份有限公司 基于j2ee分布式架构的重用框架生成方法、装置及应用系统
CN103995692A (zh) * 2013-02-16 2014-08-20 马侠安 构建动态应用系统的vnms
EP2808792A1 (en) * 2013-05-28 2014-12-03 ZFaas Pty Ltd Method and system for using arbitrary computing devices for distributed data processing

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9154540B2 (en) * 2012-12-11 2015-10-06 Microsoft Technology Licensing, Llc Smart redirection and loop detection mechanism for live upgrade large-scale web clusters

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046878A (zh) * 2006-03-28 2007-10-03 上海卓繁信息技术有限公司 农村合作医疗管理信息系统架构
CN101114226A (zh) * 2007-08-28 2008-01-30 北京中企开源信息技术有限公司 一种基于模型组件的代码自动生成装置、系统及方法
CN101276279A (zh) * 2008-05-21 2008-10-01 天柏宽带网络科技(北京)有限公司 一种统一开发系统和方法
CN101980213A (zh) * 2010-11-23 2011-02-23 中国科学院软件研究所 一种基于j2ee的数据持久化方法及系统
CN102592248A (zh) * 2012-01-12 2012-07-18 江苏电力信息技术有限公司 一种用于手机终端的电力互动服务系统
CN103677788A (zh) * 2012-09-25 2014-03-26 深圳市金正方科技股份有限公司 基于j2ee分布式架构的重用框架生成方法、装置及应用系统
CN103995692A (zh) * 2013-02-16 2014-08-20 马侠安 构建动态应用系统的vnms
EP2808792A1 (en) * 2013-05-28 2014-12-03 ZFaas Pty Ltd Method and system for using arbitrary computing devices for distributed data processing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于MVC的学生管理信息系统的设计与实现";宋羽韬;《中国优秀硕士学位论文全文数据库 信息科技辑 I138-1062》;20120315;正文第5-13、36-48页 *

Also Published As

Publication number Publication date
CN104932892A (zh) 2015-09-23

Similar Documents

Publication Publication Date Title
CN104932892B (zh) 一种基于WebWorker实现的Web应用中间件异步嵌套调用方法
US8572236B2 (en) Distributing services in graph-based computations
EP2990942B1 (en) Service extraction and application composition
CN104866327B (zh) 一种php开发方法及框架
CN106055368B (zh) 应用更新方法和装置
EP1835397A1 (en) Application framework
CN103617066A (zh) 一种工作流引擎及其实现方法
CN101311903A (zh) 对基于组件的软件系统中的组件进行重用的方法和装置
CN111090431A (zh) 一种数据处理方法及装置
CN104423948B (zh) 自动化脚本运行方法及装置
US20180025162A1 (en) Application program analysis apparatus and method
CN105068801A (zh) 修改json日期格式的方法及系统
CN104317573A (zh) 安卓安装包转换方法和装置以及运行应用的方法和装置
CN103559097B (zh) 一种浏览器中进程间通信的方法、装置和浏览器
CN108038009A (zh) 基于Web应用的前后端交互方法、装置及计算机设备
CN104573110B (zh) 一种浏览器中图形的动态展示方法及装置
CN102129385B (zh) 一种虚拟机管理功能动态扩展的管理方法
CN103914292A (zh) 基于丰富互联网应用ria的用户界面生成方法和装置
CN107193952A (zh) 基于多线程优化HTML5的Canvas性能的方法
CN105930166A (zh) 一种基于web界面弹出层的方法
JP4702835B2 (ja) Webサービスカスタマイズシステム
CN102170428B (zh) 一种异构虚拟机平台动态扩展管理方法
JP2006276939A (ja) 仮想マシンのプログラム起動方法およびクライアントサーバシステム
CN102591714A (zh) 一种流程调用方法、系统及应用服务器
JPH08263299A (ja) プログラム変換方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180212

Address after: Wusong Industrial Park, Wuzhong Development District of Suzhou City, Jiangsu province 215100 Wusong Road No. 818

Patentee after: Tide Financial Information Technology Co Ltd

Address before: 250100 Ji'nan science and Technology Development Zone, Shandong Branch Road No. 2877

Patentee before: Inspur Group Co., Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180807

Address after: 250100 S06 tower, 1036, Chao Lu Road, hi tech Zone, Ji'nan, Shandong.

Patentee after: Shandong wave cloud Mdt InfoTech Ltd

Address before: 215100 818 Wusong Road, Wusong River Industrial Park, Wuzhong development area, Suzhou, Jiangsu

Patentee before: Tide Financial Information Technology Co Ltd

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Patentee after: Inspur cloud Information Technology Co., Ltd

Address before: 250100 Ji'nan science and technology zone, Shandong high tide Road, No. 1036 wave of science and Technology Park, building S06

Patentee before: SHANDONG LANGCHAO YUNTOU INFORMATION TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address