CN102932390B - 一种网络请求的处理方法和系统、网络服务提供装置 - Google Patents
一种网络请求的处理方法和系统、网络服务提供装置 Download PDFInfo
- Publication number
- CN102932390B CN102932390B CN201110229622.8A CN201110229622A CN102932390B CN 102932390 B CN102932390 B CN 102932390B CN 201110229622 A CN201110229622 A CN 201110229622A CN 102932390 B CN102932390 B CN 102932390B
- Authority
- CN
- China
- Prior art keywords
- service
- proxy
- called
- class
- called service
- 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
Links
- 238000003672 processing method Methods 0.000 title abstract description 4
- 238000012545 processing Methods 0.000 claims abstract description 80
- 238000000034 method Methods 0.000 claims description 155
- 230000000875 corresponding effect Effects 0.000 claims description 148
- 230000009471 action Effects 0.000 claims description 78
- 230000008569 process Effects 0.000 claims description 29
- 238000005516 engineering process Methods 0.000 claims description 24
- 230000000903 blocking effect Effects 0.000 claims description 11
- 238000004458 analytical method Methods 0.000 claims description 7
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 abstract description 40
- 230000006399 behavior Effects 0.000 description 10
- 238000009877 rendering Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 239000008358 core component Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Telephonic Communication Services (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种网络请求的处理方法和系统、一种网络服务提供装置,其中的处理方法具体包括:接收浏览器客户端提交的网络请求;依据该网络请求,初始化相应的动作对象;所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载;在某一代理服务将相应的被调用服务提交至线程池时,生成与该代理服务相应的代理返回对象;所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕;所述网络服务器依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端。本申请能够大大减少网络请求的响应时间。
Description
技术领域
本申请涉及网络请求处理技术领域,特别是涉及一种网络请求的处理方法和系统、一种网络服务提供装置。
背景技术
现有的业务系统往往充斥着大量网络请求的处理。例如,每个网络服务提供者都希望他们的网站拥有广泛的用户群并且能够在同一时间内为尽量多的用户提供服务。特别是提供在线事务处理的网站,比如银行的网站,网上购物的网站等。对于这些网站而言,同时在线的用户数越多就意味着能够处理的事务量越多,进而网络服务提供者能够获得的收益也就越丰厚。
但是,在网络请求的数量达到一定的量级时,比如较为复杂的电子商务网站页面,在性能分析时,发现后台代码执行过程中90%的时间都是处于等待外部资源的响应,CPU利用率不高(在10%以下),单次网络请求的响应时间在200ms左右,这样,tps(每秒处理请求数,Transaction Per Second)为20并发*(1000/200)=100。
针对上述性能不高的缺点,现有技术通常使用页面Ajax(异步JavaScript和XML,Asynchronous JavaScript and XML),在前台实现数据的异步加载。以HTML(文本标记语言,Hypertext Markup Language)页面渲染的网络请求为例,现有技术加载数据的方法具体可以包括:
步骤1、浏览器接收来自用户的HTML页面渲染的请求;
步骤2、浏览器首先给页面的一块区域渲染一块空的div id=A内容和一块div id=B的内容;div是指HTML页面中的div标签,div id=A主要是代表HTML页面上的一块显示内容;
步骤3、浏览器继续渲染页面的其他内容;
步骤4、浏览器在页面底部执行具体的JavaScript时,向服务器发起divid=A的网络请求,等相应数据结果返回后填充对应的div内容,然后向服务器发起div id=B的网络请求,返回后同样填充。
现有技术通过前台HTML页面的异步加载处理,能够减少网络请求的响应时间,提升用户体验,但浏览器在向服务器发起网络请求时都会发起一次HTTP(超文本传输协议,HyperText Transfer Protocol)调用,由于页面上的每个区块都会发起一次网络请求,这样,在页面区块比较多时,就会发起多次HTTP调用。
而每个HTTP调用都会发起一次和服务端的TCP(传输控制协议,Transmission Control Protocol)链接,并且,后台服务器会为每个HTTP调用分配一个线程处理,每个线程都会占用系统的一定(例如:2MB)的内存;这样,在线程数量多的情况下,操作系统的调度,会导致出现大量的上下文切换和频繁中断响应,所述内存消耗和线程调度消耗都会严重影响后台服务器的性能。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够更好地处理来自用户的网络请求,以减少网络请求的响应时间。
发明内容
本申请所要解决的技术问题是提供一种网络请求的处理方法和系统、一种网络服务提供装置,能够大大减少网络请求的响应时间。
为了解决上述问题,本申请公开了一种网络请求的处理方法,包括:
网络服务器接收浏览器客户端提交的网络请求;
网络服务器依据该网络请求,初始化相应的动作对象,所述初始化过程包括:根据预先定义的需要拦截的被调用服务信息,拦截需要向所述动作对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并注入至所述动作对象;
所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载;
在某一代理服务将相应的被调用服务提交至线程池时,生成与该代理服务相应的代理返回对象;其中,下一代理服务的调用等待直至上一代理服务的代理返回对象返回;
所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述网络服务器,否则,进行阻塞等待;
所述网络服务器依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端。
优选的,所述生成与所述被调用服务相应的代理服务的步骤,包括:
依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
依据所述类信息,搜集所述被调用服务的类的方法;
采用字节码处理技术,生成与所述被调用服务相应的代理服务的类和代理服务的类的方法,其中,所述代理服务的类继承相应被调用服务的类,所述代理服务的类的方法重载相应被调用服务的类的方法,所述代理服务的类的方法包括将该被调用服务提交至线程池的方法。
优选的,所述生成与该代理服务相应的代理返回对象的步骤,包括:
在某一代理服务将相应的被调用服务提交至线程池时,线程池返回与所述被调用服务相应的线程句柄;
依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象;
所述检查线程池中相应的被调用服务是否加载完毕的步骤为,依据线程句柄检查线程池中相应的被调用服务是否加载完毕。
优选的,所述依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象的步骤,包括:
依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
依据所述类信息,搜集所述被调用服务的类的方法;
采用字节码处理技术,生成与所述被调用服务相应的代理返回对象的类和代理返回对象的类的方法,其中,所述代理返回对象的类继承相应被调用服务的返回对象类,所述代理返回对象的类的方法重载相应被调用服务的返回对象类的方法,所述代理返回对象的类的方法包括依据线程句柄检查线程池中相应的被调用服务是否加载完毕的方法。
优选的,所述将该被调用服务提交至线程池的方法为,将被调用服务的名称、类方法名称和类方法参数提交至线程池。
优选的,所述方法还包括:
预置被调用服务的异步加载信息,所述被调用服务的异步加载信息包括:线程池的大小、任务就绪队列、线程处理模型的行为定义和线程之间数据共享的行为中的一种或多种;
所述采用多线程池对该代理服务进行加载的步骤为,依据所述被调用服务的异步加载信息,采用多线程池对该代理服务进行加载。
优选的,所述依据所有代理服务的加载结果,处理得到相应的网页代码结果的步骤,包括:
采用基于Java语言的服务器端脚本技术将所有代理服务的加载结果在页面上进行组装,形成最后的页面代码结果。
优选的,通过如下步骤对所述动作对象中代理服务发起调用:
检测所述动作对象中代理服务的服务依赖关系;
按照所述服务依赖关系中代理服务的执行顺序,对所述动作对象中代理服务发起调用,其中,后一个代理任务阻塞等待至前一个代理任务的加载结果返回。
优选的,所述网络请求包括针对主体页面的网络请求。
另一方面,本申请还公开了一种网络服务提供装置,其与网络服务器相连,包括:
配置模块,用于预先定义需要拦截的被调用服务信息;
代理模块,包括:
代理服务生成子模块,用于在初始化动作对象的过程中,根据所述配置模块的定义拦截需要向所述动作对象中注入的被调用服务,并生成与所述被调用服务相应的代理服务,由所述网络服务器注入至所述动作对象,其中,所述代理服务用于在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池模块,所述动作对象与浏览器客户端提交的网络请求相应;及
代理返回对象生成子模块,用于在某一代理服务将相应的被调用服务提交至线程池模块时,生成与该代理服务相应的代理返回对象,并返回给所述网络服务器;其中,所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述浏览器客户端,否则,进行阻塞等待;下一代理服务的调用等待直至上一代理服务的代理返回对象返回;及
线程池模块,用于接收加载单元提交的调用服务,并采用多线程池对所述调用服务进行加载。
优选的,所述代理服务生成子模块,包括:
第一分析单元,用于依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
第一搜集单元,用于依据所述类信息,搜集所述被调用服务的类的方法;及
第一类方法生成单元,用于采用字节码处理技术,生成与所述被调用服务相应的代理服务的类和代理服务的类的方法,其中,所述代理服务的类继承相应被调用服务的类,所述代理服务的类的方法重载相应被调用服务的类的方法,所述代理服务的类的方法包括将该被调用服务提交至线程池的方法。
优选的,所述代理返回对象生成子模块包括:
接收单元,用于在某一代理服务将相应的被调用服务提交至线程池时,接收线程池返回的与所述被调用服务相应的线程句柄;
生成单元,用于依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象;
所述代理返回对象,具体用于在接受调用时,依据线程句柄检查线程池中相应的被调用服务是否加载完毕。
优选的,所述生成单元包括:
第二分析子单元,用于依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
第二搜集子单元,用于依据所述类信息,搜集所述被调用服务的类的方法;
第二类方法生成子单元,用于采用字节码处理技术,生成与所述被调用服务相应的代理返回对象的类和代理返回对象的类的方法,其中,所述代理返回对象的类继承相应被调用服务的返回对象类,所述代理返回对象的类的方法重载相应被调用服务的返回对象类的方法,所述代理返回对象的类的方法包括依据线程句柄检查线程池中相应的被调用服务是否加载完毕的方法。
优选的,所述装置还包括:
配置模块,用于预置被调用服务的异步加载信息,所述被调用服务的异步加载信息包括:线程池的大小、任务就绪队列、线程处理模型的行为定义和线程之间数据共享的行为中的一种或多种;
所述线程池模块,具体用于依据所述被调用服务的异步加载信息,采用多线程池对该代理服务进行加载。
优选的,所述网络请求包括针对主体页面的网络请求。
另一方面,本申请还公开了一种网络请求的处理系统,包括:浏览器客户端、网络服务器和前述权利要求10至15中任一项所述的网络服务提供装置;其中,
所述网络服务器,包括:
接口模块,用于接收所述浏览器客户端提交的网络请求;
初始化模块,用于依据该网络请求,通过注入被调用服务初始化相应的动作对象,所述初始化过程包括:根据预先定义的需要拦截的被调用服务信息,拦截需要向所述动作对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并注入至所述动作对象;
第一调用模块,用于调用所述动作对象中的代理服务;其中,所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载;
第二调用模块,用于调用返回的代理返回对象;其中,所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述网络服务器,否则,进行阻塞等待;其中,下一代理服务的调用等待直至上一代理服务的代理返回对象返回;及
处理模块,用于依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端。
优选的,所述处理模块,包括:
组装子模块,用以采用基于Java语言的服务器端脚本技术将所有代理服务的加载结果在页面上进行组装,形成最后的页面代码结果。
优选的,所述第一调用模块包括:
检测子模块,用于检测所述动作对象中代理服务的服务依赖关系;及
调用子模块,用于按照所述服务依赖关系中代理服务的执行顺序,对所述动作对象中代理服务发起调用,其中,后一个代理任务阻塞等待至前一个代理任务的加载结果返回。
与现有技术相比,本申请具有以下优点:
首先,本申请对后台技术进行改进,提出了一种在后台对网络请求进行异步和并行处理的技术方案;该技术方案的异步处理主要体现在代理服务的调用上,在针对所述动作对象中某一代理服务发起调用时,会立刻构造一个代理返回对象,所以代理服务的调用者,会即时得到一个假的返回结果,无需等待就可以调用下一个被调用对象;并行处理主要体现在异步提交的被调用服务的处理上,由于采用线程池进行加载处理,任意两个加载请求之间互不影响,不会因为上一个加载请求时间的过长影响下一个请求的响应时间;因此,对于一个网络请求来说,现有技术的响应时间等于所有被调用服务的响应时间的总和,而本申请的并行加载使得一个网络请求的响应时间等于各被调用服务的响应时间中最长的一个,因而,能够大大减少网络请求的响应时间。
其次,在前台用户向浏览器客户端发起HTML页面渲染的网络请求时,现有技术强制性地要求浏览器客户端向网络服务器发起多次网络请求,才能减少响应时间;由于本申请的技术方案是在后台对网络请求进行异步和并行处理,以减少网络请求的响应时间的,相对于现有技术强制性的浏览器客户端与网络服务器之间的多次交互,本申请的技术方案对浏览器客户端与网络服务器之间的交互次数是没有限制的,浏览器客户端可以应用户需求,选择向网络服务器发起一次还是多次相应的网络请求,而在选择一次时,本申请能够避免造成大量内存消耗和线程调度消耗,从而能够避免对网络服务器后台性能的影响。
再者,相对于现有技术在前台大量的异步加载多次输出HTML代码导致会严重影响搜索引擎优化(SEO,Search Engine Optimization)的效果,在所述网络请求为针对主体页面的网络请求时,本申请的异步并行加载完全作用于后台,整个HTML代码都是一次性通过浏览器前端输出,这样,搜索引擎在正常的HTML代码解析过程中不会丢失任何的关键字、外部链接等数据,因此不会对页面SEO有任何的影响。
附图说明
图1是本申请一种网络请求的处理方法实施例的流程图;
图2是传统方式与本申请异步并行加载的响应时间对比示意图;
图3是本申请一种异步并行处理的设计时序图示意;
图4是本申请一种网络服务提供装置的结构图;
图5是本申请一种网络请求的处理系统实施例的流程图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为了达到减少网络请求的响应时间,提升用户友好型的目的,已有技术通常对前台技术进行改进,这也是本领域技术人员的惯性思维。例如,现有技术通过前台HTML页面的异步加载处理,能够达到上述目的。但是,由于Ajax处理必须是串行的处理,在加载完一个页面区块后才能去加载下一个页面区块,所以,页面上的每个区块都需要浏览器客户端向网络服务器发起一次网络请求,这样,在页面区块比较多时,与多次网络请求相应的多次HTTP调用,会严重影响后台服务器的性能,如大量内存消耗和线程调度消耗等。
本专利发明人突破惯性思维,对后台技术进行改进,提出了一种在后台对网络请求进行异步和并行处理的技术方案。该技术方案在处理浏览器客户端提交的网络请求的过程中,以Action(动作)对象作为网络请求和业务逻辑之间的桥梁,也即,每一个网络请求,都会有一个Action对象与其对应,以页面加载的网络请求为例,现有的页面需要展示什么样的内容,决定了Action对象需要依赖后台的哪些被调用服务。
由于Action对象与被调用服务之间是同步调用的过程,在一个被调用服务被加载完毕并返回加载结果后,必须等到返回值才能调用下一个被调用任务。
为了实现异步和并行加载的目的,本申请在初始化一个Action对象的过程中,会根据预先定义的需要拦截的被调用服务信息,拦截需要向所述Action对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并注入至所述动作对象,该技术方案的异步和并行加载分别体现在:
1、异步加载主要体现在代理服务的调用上,在针对所述动作对象中某一代理服务发起调用时,会立刻构造一个代理返回对象,所以代理服务的调用者,会即时得到一个假的返回结果,无需等待就可以调用下一个被调用对象;
2、在接受调用时,所述代理服务将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该代理服务进行加载;因此,实际上,真正的加载请求其实目前还处于线程池中进行加载;
这样,并行加载主要体现在异步提交的被调用服务的处理上,由于采用线程池进行加载,任意两个加载请求之间互不影响,不会因为上一个加载请求时间的过长影响下一个请求的响应时间。
对于一个网络请求来说,现有技术的响应时间等于各被调用服务的响应时间的总和,而本申请的并行加载使得一个网络请求的响应时间等于所有被调用服务的响应时间中最长的一个,因而,能够大大减少网络请求的响应时间。
由于本申请的技术方案是在后台对网络请求进行异步和并行处理,以减少网络请求的响应时间的。这样,在前台用户向浏览器客户端发起HTML页面渲染的网络请求时,无论浏览器客户端向网络服务器发起多少次相应的网络请求,都能够减少网络请求的响应时间;而不会类似现有技术,强制性地要求浏览器客户端向网络服务器发起多次网络请求,才能减少响应时间;也即,在处理来自用户的网络请求时,本申请对浏览器客户端与网络服务器之间的交互次数是没有限制的,浏览器客户端可以应用户需求,选择向网络服务器发起一次还是多次相应的网络请求。因此,相对于现有技术强制性的浏览器客户端与网络服务器之间的多次交互,本申请能够避免造成大量内存消耗和线程调度消耗,从而能够避免对网络服务器后台性能的影响。
参照图1,示出了本申请一种网络请求的处理方法实施例的流程图,具体可以包括:
步骤101、网络服务器接收浏览器客户端提交的网络请求;
本申请可以应用于各种业务系统,特别是提供在线事务处理的网站,比如银行的网站,网上购物的网站等;这些网站通常通过处理用户提交的网络请求,来为用户提供各式各样的服务;对于这些网站而言,如果能够在同一时间内为尽量多的用户提供服务,就意味着能够处理的事务量越多,进而网络服务提供者能够获得的收益也就越丰厚。本申请正是采用异步和并行技术处理所述网络请求的,该处理能够极大减少单次网络请求的响应时间,从而提升客户友好度。
在实际中,用户往往通过浏览器客户端发起服务请求,然后由浏览器客户端提交相应的网络请求到网络服务器;因此,所述网络请求是与服务挂钩的,例如,用户发起HTML页面渲染的网络请求时,则会在浏览器客户端中输入某个URL(统一资源定位符,Uniform Resource Locator),由浏览器客户端向网络服务器提交相应的页面请求。
步骤102、网络服务器依据该网络请求,初始化相应的动作对象,所述初始化过程包括:根据预先定义的需要拦截的被调用服务信息,拦截需要向所述动作对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并注入至所述动作对象;
本申请以Action对象作为网络请求和业务逻辑之间的桥梁。Action对象可应用于众多网络服务器设计模式(MVC、builder、Bridge等)中,例如,MVC(模型-视图-控制器,Model View Controller)设计模式,强制性的使应用程序的输入、处理和输出分开,使MVC应用程序被分成三个核心部件:模型、视图、控制器,它们各自处理自己的任务,Action属于控制器层面的核心部件。
在接收到浏览器客户端提交的页面请求时,MVC网络服务器会将该页面请求转到Action对象进行页面数据加载。现有的页面需要展示什么样的内容,决定了Action对象需要依赖后台的哪些被调用服务。这里的被调用服务可以为SOA(面向服务的体系结构,service-oriented architecture)服务。在实际中,每个业务都可以被抽象成一个被调用服务,比如电子商务网站中的会员进行一次注册行为,则会调用后台的会员注册的服务接口,创建公司库的服务接口等,这两个服务接口都属于SOA服务的范畴。当然,除了服务接口外,所述被调用服务还可以为服务类,本申请对被调用服务的类型不加以限制。
传统初始化Action对象的过程往往为,整个MVC容器会根据Action对象中所定义的被调用服务,进行注入。
在引入了异步并行加载后,在MVC容器查找向所述Action对象中注入的被调用服务时,本申请会根据预先定义的需要拦截的被调用服务信息(下面简称拦截定义),拦截需要向所述Action对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并由MVC容器注入至所述Action对象。
本申请的拦截定义具有如下特点:
1.支持细粒度的拦截定义,可以指定代理类的某个方法需要进行代理;
2.可以和现有的spring Ioc/Aop机制相结合,可以提供ProxyFactoryBean,Interceptor,BeanCreator等多种配置定义方式,同样可以支持到某个方法细粒度的拦截定义。
在本申请的一种优选实施例中,所述生成与所述被调用服务相应的代理服务的步骤,可以进一步包括:
子步骤A1、依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
子步骤A2、依据所述类信息,搜集所述被调用服务的类的方法;
子步骤A3、采用字节码处理技术,生成与所述被调用服务相应的代理服务的类和代理服务的类的方法,其中,所述代理服务的类继承相应被调用服务的类,所述代理服务的类的方法重载相应被调用服务的类的方法,所述代理服务的类的方法可以包括将该被调用服务提交至线程池的方法。
对于网络服务器而言,Action对象中注入的代理服务就是原始的被调用服务,它们会像传统技术调用被调用服务一样去调用Action对象中的代理服务,而由于代理服务对相应被调用服务的类的所有方法进行了重载,在后续调用代理服务的方法时,在代理服务的方法中会将调用请求委托给原始的被调用服务的方法;并且,由于所述代理服务的类的方法包括有将该被调用服务提交至线程池的方法代码,在代理服务的方法中还会将这样的一个委托调用请求提交到线程池中进行加载。
步骤103、所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载;
在本申请的一种优选实施例中,所述将该被调用服务提交至线程池的方法具体可以为,将被调用服务的名称、类方法名称和类方法参数提交至线程池。
采用多线程池进行加载,主要具有如下功能:
1.线程的重复利用,一个线程完成一个加载请求后,会被重新丢回到该线程池,继续等待处理下一个加载请求;
2.线程的创建,假如当前的加载请求多于了当前了处理线程,新的加载请求得不到处理后,线程池模块会主动创建新的线程处理新的请求;
3.线程的销毁,假如当前的加载请求比较少,大部分线程处于空闲状态中得不到加载任务,线程池模块会主动关闭一些长时间没处理加载请求的线程,减少资源。
由于采用线程池进行加载,任意两个加载请求之间互不影响,不会因为上一个加载请求时间的过长影响下一个请求的响应时间,因此能够实现被调用服务的并行加载,从而能够大大减少网络请求的响应时间。
在本申请的一种优选实施例中,所述方法还可以包括:
预置被调用服务的异步加载信息,所述被调用服务的异步加载信息可以进一步包括:线程池的大小、任务就绪队列、线程处理模型的行为定义和线程之间数据共享的行为中的一种或多种;
此时,所述采用多线程池对该代理服务进行加载的步骤可以为,依据所述被调用服务的异步加载信息,采用多线程池对该代理服务进行加载。
其中,所述线程处理模型的行为定义主要用于满负荷时的线程处理,假设当前的加载请求达到了一个极限值,已经不能再增加新的线程,则会提供几种策略,例如比如丢弃一些新的加载请求,或者将新的加载请求同步处理等。本领域技术人员可以根据实际需求,选择相应的策略,本申请对此不加以限制。
步骤104、在某一代理服务将相应的被调用服务提交至线程池时,生成与该代理服务相应的代理返回对象;其中,下一代理服务的调用等待直至上一代理服务的代理返回对象返回;
由于Action对象与被调用服务之间是同步调用的过程,现有技术中,在一个被调用服务被加载完毕并返回加载结果后,必须等到返回值才能调用下一个被调用任务。
本申请在针对Action对象中某一代理服务发起调用时,会立刻构造一个代理返回对象,所以代理服务的调用者(网络服务器),会即时得到一个假的返回结果,无需等待就可以调用下一个被调用对象,因此,能够达到异步调用的目的。实际上,真正的加载请求其实目前还处于线程池中进行加载。
在本申请的一种优选实施例中,所述生成与该代理服务相应的代理返回对象的步骤,可以进一步包括:
首先,在某一代理服务将相应的被调用服务提交至线程池时,线程池返回与所述被调用服务相应的线程句柄;
然后,依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象;
在本申请的一种优选实施例中,所述生成与该代理服务相应的代理返回对象的步骤,可以进一步包括:
子步骤B1、依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
子步骤B2、依据所述类信息,搜集所述被调用服务的类的方法;
子步骤B3、采用字节码处理技术,生成与所述被调用服务相应的代理返回对象的类和代理返回对象的类的方法,其中,所述代理返回对象的类继承相应被调用服务的返回对象类,所述代理返回对象的类的方法重载相应被调用服务的返回对象类的方法,所述代理返回对象的类的方法可以包括依据线程句柄检查线程池中相应的被调用服务是否加载完毕的方法。
对于网络服务器而言,代理返回对象就是原始的返回对象,它们会像传统技术调用返回对象一样去调用代理返回对象,以得到加载结果。由于代理返回对象对原始的返回对象的所有方法做了重载,因此在调用代理返回对象的方法时,在代理返回对象的方法中会去线程池中去查找其代理服务委托的加载是否已经完成,没有完成则阻塞等待其完成,如果已完成则代理返回对象会将调用请求委托给这个真实结果,最终返回原始的返回对象的返回值。
步骤105、所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述网络服务器,否则,进行阻塞等待;
在实际中,所述检查可以为,依据线程句柄检查线程池中相应的被调用服务是否加载完毕。
步骤106、所述网络服务器依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端。
在具体实现中,代理服务的加载结果包括原始的返回对象的属性,如标识、名称等,故需要网络服务器将所有代理服务的加载结果处理为网页代码结果,并一次性返回给浏览器客户端。
例如,所述处理过程可以为,采用JSP(基于Java语言的服务器端脚本)页面技术将所有代理服务的加载结果在页面上进行组装,形成最后的页面代码结果。又如,所述处理过程还可以将所有代理服务的加载结果,处理为序列化的HTML代码。总之,本领域技术人员可以采用上述两种处理技术,或者其它处理技术,如Velocity(基于java的模板引擎,template engine)等页面模板,将所有代理服务的加载结果处理为相应的网页代码结果,本申请对具体的处理技术不加以限制。
假设一个Action对象中被注入了3个代理服务:A、B、C,假设A、B、C的加载时间分别为150ms、150ms、300ms、则现有技术Action在调用A后,需要等待A的结果返回后,才会去调用B,需要等待B的结果返回后,才会去调用C,因此,与该Action对象相应的网络请求的响应时间为150ms+150ms+300ms=600ms。
而本申请在调用A后,由于立即返回了A的代理返回对象,故可以立即调用B,由于立即返回了B的代理返回对象,也可以立即调用C,并立即返回了C的代理返回对象,然后,后台的线程池在同时加载A、B、C三个服务;因此,在后台处理完C的200ms时间内,线程池中也同样完成了加载请求A和B的150ms的动作。最终,与该Action对象相应的网络请求的响应时间为300ms。
因此,对于一个网络请求来说,现有技术的响应时间等于所有被调用服务的响应时间的总和,而本申请的并行加载使得一个网络请求的响应时间等于所有被调用服务的响应时间中最长的一个,因而,能够大大减少网络请求的响应时间。
本申请的网络请求可以进一步包括针对主体页面的网络请求和针对页面区块的网络请求。
现有技术在前台进行异步加载不是类似前台非异步加载时,页面上需要的div A,B,C,D的数据都是由后台服务器一次性将结果输出,而是需要将原有结果拆分为两部分输出:一部分继续输出C,D的数据,另一部分输出A,B的结果。也即,现有技术的异步加载是基于页面的JavaScript执行来完成动态加载的过程,浏览器则会在渲染页面过程中执行JavaScript完成页面HTML div的动态变化。
而目前的搜索引擎大都通过模拟一些用户的访问行为来一次性获取页面的源HTML代码,也即直接分析静态的HTML代码提取页面的关键字、外部链接等数据,并不会去执行HTML代码中的JavaScript代码,从而搜索引擎不会收录动态加载部分的内容,因此,现有技术大量的异步加载会严重影响SEO(搜索引擎优化,Search Engine Optimization)的效果。
而在所述网络请求为针对主体页面的网络请求时,本申请的异步并行加载完全作用于后台,整个HTML代码都是一次性通过浏览器前端输出,这样,搜索引擎在正常的HTML代码解析过程中不会丢失任何的关键字、外部链接等数据,此时,不会对页面SEO有任何的影响。
在本申请的一种优选实施例中,可以通过如下步骤对所述动作对象中代理服务发起调用:
检测所述动作对象中代理服务的服务依赖关系;
按照所述服务依赖关系中代理服务的执行顺序,对所述动作对象中代理服务发起调用,其中,后一个代理任务阻塞等待至前一个代理任务的加载结果返回。
例如,上例中C依赖服务A的返回结果,则C会阻塞等待至A的结果返回,最后A和C的处理就又回归到一个串行的请求处理。参照图2,示出了此例中传统方式与本申请异步并行加载的响应时间对比,其中,传统方式的响应时间为150ms+150ms+300ms=600ms,而本申请的响应时间为150ms+300ms=45ms。
为使本领域技术人员更好地理解本申请,以下通过图3所示的异步并行处理的设计时序图来说明,假设浏览器客户端发起一个页面请求到网络服务器时,后台MVC框架会将改网页请求转到Action进行页面数据加载,此页面会依赖后台的两个外部服务:A、B,则所述Action处理具体可以包括:
1、在通过获取getxxx()数据调用A时,A立即返回假的ModelA对象;
2、在通过获取getxxx()数据调用B时,B立即返回假的ModelB对象;
3、异步加载ModelA();
4、异步加载ModelB();这里,ModelA()和ModelB()分别为ModelA对象和ModelB对象的方法;
5、操作ModelA();
6、操作ModelB()。
对于网络服务器而言,其表面看到的就是原始的服务A和服务A的原始的返回结果,假设服务A的原始的返回对象是一个ModelA,里面包含了id,name等属性,则步骤1中返回的假的ModelA对象,可命名为ProxyModelA(它自身没有任何属性和数据)。因此,在网络服务器欲通过model.getName()获取name属性时,实际上会调用ProxyModelA.getName()方法,ProxyModelA.getName()方法会首先去检查后台线程池中服务A的加载结果是否已经返回,如果已经返回则提取其name属性,作为返回结果返回,如果此时请求服务A的加载结果没有返回,则会进行阻塞等待。直到服务A结果返回后,提取其name属性进行返回。
以HTMl页面渲染应用为例,网络服务器在接收浏览器客户端提交的表单参数时,根据这些表单参数加载被调用服务,并将后台返回的加载结果再回传到页面模板(如JSP,Velocity等),由页面模板动态生成HTML代码返回给浏览器客户端,由浏览器客户端完成HTML代码渲染(这里,可以采用或不采用Ajax处理),最终用户看到的就是已经渲染好的结果。
参照图4,示出了本申请一种网络服务提供装置的结构图,其与网络服务器相连,具体可以包括:
配置模块401,用于预先定义需要拦截的被调用服务信息;
代理模块402,可以进一步包括:
代理服务生成子模块421,用于在初始化动作对象的过程中,根据所述配置模块的定义拦截需要向所述动作对象中注入的被调用服务,并生成与所述被调用服务相应的代理服务,由所述网络服务器注入至所述动作对象,其中,所述代理服务用于在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池模块,所述动作对象与浏览器客户端提交的网络请求相应;及
代理返回对象生成子模块422,用于在某一代理服务将相应的被调用服务提交至线程池模块时,生成与该代理服务相应的代理返回对象,并返回给所述网络服务器;其中,所述代理返回对象在接受调用时,依据线程句柄检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述浏览器客户端,否则,进行阻塞等待;下一代理服务的调用等待直至上一代理服务的代理返回对象返回;及
线程池模块403,用于接收加载单元提交的调用服务,并采用多线程池对所述调用服务进行加载。
在本申请实施例中,优选的是,所述网络请求可以包括针对主体页面的网络请求。
在本申请的一种优选实施例中,所述代理服务生成子模块421可以进一步包括:
第一分析单元,用于依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
第一搜集单元,用于依据所述类信息,搜集所述被调用服务的类的方法;及
第一类方法生成单元,用于采用字节码处理技术,生成与所述被调用服务相应的代理服务的类和代理服务的类的方法,其中,所述代理服务的类继承相应被调用服务的类,所述代理服务的类的方法重载相应被调用服务的类的方法,所述代理服务的类的方法可以包括将该被调用服务提交至线程池的方法。
在本申请的另一种优选实施例中,所述代理返回对象生成子模块422可以进一步包括:
接收单元,用于在某一代理服务将相应的被调用服务提交至线程池时,接收线程池返回的与所述被调用服务相应的线程句柄;
生成单元,用于依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象;
此时,所述代理返回对象,可具体用于在接受调用时,依据线程句柄检查线程池中相应的被调用服务是否加载完毕。
在本申请的再一种优选实施例中,所述生成单元可以进一步包括:
第二分析子单元,用于依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
第二搜集子单元,用于依据所述类信息,搜集所述被调用服务的类的方法;
第二类方法生成子单元,用于采用字节码处理技术,生成与所述被调用服务相应的代理返回对象的类和代理返回对象的类的方法,其中,所述代理返回对象的类继承相应被调用服务的返回对象类,所述代理返回对象的类的方法重载相应被调用服务的返回对象类的方法,所述代理返回对象的类的方法可以包括依据线程句柄检查线程池中相应的被调用服务是否加载完毕的方法。
在本申请的再一种优选实施例中,所述装置还可以进一步包括:
配置模块,用于预置被调用服务的异步加载信息,所述被调用服务的异步加载信息包括:线程池的大小、任务就绪队列、线程处理模型的行为定义和线程之间数据共享的行为中的一种或多种;
此时,所述线程池模块403,可具体用于依据所述被调用服务的异步加载信息,采用多线程池对该代理服务进行加载。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
与前述方法实施例相应,本申请还公开了一种网络请求的处理系统,参照图5,具体可以包括:浏览器客户端501、网络服务器502和网络服务提供装置503;其中,
所述网络服务器502,具体可以包括:
接口模块521,用于接收所述浏览器客户端提交的网络请求;
初始化模块522,用于依据该网络请求,通过注入被调用服务初始化相应的动作对象,所述初始化过程包括:根据预先定义的需要拦截的被调用服务信息,拦截需要向所述动作对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并注入至所述动作对象;
第一调用模块523,用于调用所述动作对象中的代理服务;其中,所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载;;
第二调用模块524,用于调用返回的代理返回对象;其中,所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述网络服务器,否则,进行阻塞等待;其中,下一代理服务的调用等待直至上一代理服务的代理返回对象返回;及
处理模块525,用于依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端;
所述网络服务提供装置503可以进一步包括:
配置模块531,用于预先定义需要拦截的被调用服务信息;
代理模块532,可以进一步包括:
代理服务生成子模块5321,用于在初始化动作对象的过程中,根据所述配置模块的定义拦截需要向所述动作对象中注入的被调用服务,并生成与所述被调用服务相应的代理服务,由所述网络服务器注入至所述动作对象,其中,所述代理服务用于在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池模块,所述动作对象与浏览器客户端提交的网络请求相应;及
代理返回对象生成子模块5322,用于在某一代理服务将相应的被调用服务提交至线程池模块时,获取相应的线程句柄,并依据所述线程句柄和所述配置模块的定义,生成与该代理服务相应的代理返回对象,并返回给所述网络服务器;其中,所述代理返回对象在接受调用时,依据线程句柄检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述浏览器客户端,否则,进行阻塞等待;及
线程池模块533,用于接收加载单元提交的调用服务,并采用多线程池对所述调用服务进行加载。
在本申请实施例中,优选的是,所述处理模块525可以进一步包括:
组装子模块,用以采用基于Java语言的服务器端脚本技术将所有代理服务的加载结果在页面上进行组装,形成最后的页面代码结果。
在本申请的一种优选实施例中,所述第一调用模块523可以进一步包括:
检测子模块,用于检测所述动作对象中代理服务的服务依赖关系;及
调用子模块,用于按照所述服务依赖关系中代理服务的执行顺序,对所述动作对象中代理服务发起调用,其中,后一个代理任务阻塞等待至前一个代理任务的加载结果返回。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本申请所提供的一种网络请求的处理方法和系统、一种网络服务提供装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (18)
1.一种网络请求的处理方法,其特征在于,包括:
网络服务器接收浏览器客户端提交的网络请求;
网络服务器依据该网络请求,初始化相应的动作对象,所述初始化过程包括:根据预先定义的需要拦截的被调用服务信息,拦截需要向所述动作对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并注入至所述动作对象;
所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载;
在某一代理服务将相应的被调用服务提交至线程池时,生成与该代理服务相应的代理返回对象;其中,下一代理服务的调用等待直至上一代理服务的代理返回对象返回;
所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述网络服务器,否则,进行阻塞等待;
所述网络服务器依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端。
2.如权利要求1所述的方法,其特征在于,所述生成与所述被调用服务相应的代理服务的步骤,包括:
依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
依据所述类信息,搜集所述被调用服务的类的方法;
采用字节码处理技术,生成与所述被调用服务相应的代理服务的类和代理服务的类的方法,其中,所述代理服务的类继承相应被调用服务的类,所述代理服务的类的方法重载相应被调用服务的类的方法,所述代理服务的类的方法包括将该被调用服务提交至线程池的方法。
3.如权利要求1所述的方法,其特征在于,所述生成与该代理服务相应的代理返回对象的步骤,包括:
在某一代理服务将相应的被调用服务提交至线程池时,线程池返回与所述被调用服务相应的线程句柄;
依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象;
所述检查线程池中相应的被调用服务是否加载完毕的步骤为,依据线程句柄检查线程池中相应的被调用服务是否加载完毕。
4.如权利要求3所述的方法,其特征在于,所述依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象的步骤,包括:
依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
依据所述类信息,搜集所述被调用服务的类的方法;
采用字节码处理技术,生成与所述被调用服务相应的代理返回对象的类和代理返回对象的类的方法,其中,所述代理返回对象的类继承相应被调用服务的返回对象类,所述代理返回对象的类的方法重载相应被调用服务的返回对象类的方法,所述代理返回对象的类的方法包括依据线程句柄检查线程池中相应的被调用服务是否加载完毕的方法。
5.如权利要求1所述的方法,其特征在于,所述将该被调用服务提交至线程池的方法为,将被调用服务的名称、类方法名称和类方法参数提交至线程池。
6.如权利要求1所述的方法,其特征在于,还包括:
预置被调用服务的异步加载信息,所述被调用服务的异步加载信息包括:线程池的大小、任务就绪队列、线程处理模型的行为定义和线程之间数据共享的行为中的一种或多种;
所述多线程池对该被调用服务进行加载的步骤为,依据所述被调用服务的异步加载信息,采用多线程池对该被调用服务进行加载。
7.如权利要求1所述的方法,其特征在于,所述依据所有代理服务的加载结果,处理得到相应的网页代码结果的步骤,包括:
采用基于Java语言的服务器端脚本技术将所有代理服务的加载结果在页面上进行组装,形成最后的页面代码结果。
8.如权利要求1所述的方法,其特征在于,通过如下步骤对所述动作对象中代理服务发起调用:
检测所述动作对象中代理服务的服务依赖关系;
按照所述服务依赖关系中代理服务的执行顺序,对所述动作对象中代理服务发起调用,其中,后一个代理任务阻塞等待至前一个代理任务的加载结果返回。
9.如权利要求1所述的方法,其特征在于,所述网络请求包括针对主体页面的网络请求。
10.一种网络服务提供装置,其特征在于,其与网络服务器相连,包括:
配置模块,用于预先定义需要拦截的被调用服务信息;
代理模块,包括:
代理服务生成子模块,用于在初始化动作对象的过程中,根据所述配置模块的定义拦截需要向所述动作对象中注入的被调用服务,并生成与所述被调用服务相应的代理服务,由所述网络服务器注入至所述动作对象,其中,所述代理服务用于在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池模块,所述动作对象与浏览器客户端提交的网络请求相应;及
代理返回对象生成子模块,用于在某一代理服务将相应的被调用服务提交至线程池模块时,生成与该代理服务相应的代理返回对象,并返回给所述网络服务器;其中,所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述浏览器客户端,否则,进行阻塞等待;下一代理服务的调用等待直至上一代理服务的代理返回对象返回;及
线程池模块,用于接收所述代理服务生成子模块提交的调用服务,并采用多线程池对所述调用服务进行加载。
11.如权利要求10所述的装置,其特征在于,所述代理服务生成子模块,包括:
第一分析单元,用于依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
第一搜集单元,用于依据所述类信息,搜集所述被调用服务的类的方法;及
第一类方法生成单元,用于采用字节码处理技术,生成与所述被调用服务相应的代理服务的类和代理服务的类的方法,其中,所述代理服务的类继承相应被调用服务的类,所述代理服务的类的方法重载相应被调用服务的类的方法,所述代理服务的类的方法包括将该被调用服务提交至线程池的方法。
12.如权利要求10所述的装置,其特征在于,所述代理返回对象生成子模块包括:
接收单元,用于在某一代理服务将相应的被调用服务提交至线程池时,接收线程池返回的与所述被调用服务相应的线程句柄;
生成单元,用于依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象;
所述代理返回对象,具体用于在接受调用时,依据线程句柄检查线程池中相应的被调用服务是否加载完毕。
13.如权利要求12所述的装置,其特征在于,所述生成单元包括:
第二分析子单元,用于依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;
第二搜集子单元,用于依据所述类信息,搜集所述被调用服务的类的方法;
第二类方法生成子单元,用于采用字节码处理技术,生成与所述被调用服务相应的代理返回对象的类和代理返回对象的类的方法,其中,所述代理返回对象的类继承相应被调用服务的返回对象类,所述代理返回对象的类的方法重载相应被调用服务的返回对象类的方法,所述代理返回对象的类的方法包括依据线程句柄检查线程池中相应的被调用服务是否加载完毕的方法。
14.如权利要求10所述的装置,其特征在于,所述配置模块,还用于预置被调用服务的异步加载信息,所述被调用服务的异步加载信息包括:线程池的大小、任务就绪队列、线程处理模型的行为定义和线程之间数据共享的行为中的一种或多种;
则所述线程池模块,具体用于依据所述被调用服务的异步加载信息,采用多线程池对该被调用服务进行加载。
15.如权利要求10所述的装置,其特征在于,所述网络请求包括针对主体页面的网络请求。
16.一种网络请求的处理系统,其特征在于,包括:浏览器客户端、网络服务器和前述权利要求10至15中任一项所述的网络服务提供装置;其中,
所述网络服务器,包括:
接口模块,用于接收所述浏览器客户端提交的网络请求;
初始化模块,用于依据该网络请求,通过注入被调用服务初始化相应的动作对象,所述初始化过程包括:根据预先定义的需要拦截的被调用服务信息,拦截需要向所述动作对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并注入至所述动作对象;
第一调用模块,用于调用所述动作对象中的代理服务;其中,所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载;
第二调用模块,用于调用返回的代理返回对象;其中,所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述网络服务器,否则,进行阻塞等待;其中,下一代理服务的调用等待直至上一代理服务的代理返回对象返回;及
处理模块,用于依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端。
17.如权利要求16所述的系统,其特征在于,所述处理模块,包括:
组装子模块,用以采用基于Java语言的服务器端脚本技术将所有代理服务的加载结果在页面上进行组装,形成最后的页面代码结果。
18.如权利要求16所述的系统,其特征在于,所述第一调用模块包括:
检测子模块,用于检测所述动作对象中代理服务的服务依赖关系;及
调用子模块,用于按照所述服务依赖关系中代理服务的执行顺序,对所述动作对象中代理服务发起调用,其中,后一个代理任务阻塞等待至前一个代理任务的加载结果返回。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110229622.8A CN102932390B (zh) | 2011-08-11 | 2011-08-11 | 一种网络请求的处理方法和系统、网络服务提供装置 |
HK13103838.5A HK1176485A1 (zh) | 2011-08-11 | 2013-03-27 | 種網絡請求的處理方法和系統、網絡服務提供裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110229622.8A CN102932390B (zh) | 2011-08-11 | 2011-08-11 | 一种网络请求的处理方法和系统、网络服务提供装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102932390A CN102932390A (zh) | 2013-02-13 |
CN102932390B true CN102932390B (zh) | 2015-07-08 |
Family
ID=47647091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110229622.8A Active CN102932390B (zh) | 2011-08-11 | 2011-08-11 | 一种网络请求的处理方法和系统、网络服务提供装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102932390B (zh) |
HK (1) | HK1176485A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103618762A (zh) * | 2013-11-08 | 2014-03-05 | 中标软件有限公司 | 一种基于aop的企业服务总线状态预处理系统及方法 |
CN103761317B (zh) * | 2014-01-27 | 2017-08-29 | 北京京东尚科信息技术有限公司 | 一种多线程异步渲染系统及方法 |
CN106293794A (zh) * | 2015-06-05 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 加载页面的方法、装置和系统 |
CN105068912B (zh) * | 2015-07-29 | 2020-05-01 | 北京京东尚科信息技术有限公司 | 用于执行网页任务的方法和装置 |
CN105141549B (zh) * | 2015-08-17 | 2018-09-21 | 北京京东尚科信息技术有限公司 | 网络请求处理方法和装置 |
CN105447138A (zh) * | 2015-11-20 | 2016-03-30 | 北京京东尚科信息技术有限公司 | 用于服务器的方法及系统 |
CN106776623B (zh) * | 2015-11-23 | 2020-04-21 | 阿里巴巴集团控股有限公司 | 一种用户行为分析方法和设备 |
CN106095506A (zh) * | 2016-06-14 | 2016-11-09 | 乐视控股(北京)有限公司 | 一种页面加载方法及装置 |
CN108733461B (zh) * | 2017-04-18 | 2021-09-14 | 北京京东尚科信息技术有限公司 | 分布式任务调度方法和装置 |
CN114253535A (zh) * | 2017-06-02 | 2022-03-29 | 创新先进技术有限公司 | H5页面多语言渲染方法及装置 |
CN107577529A (zh) * | 2017-09-21 | 2018-01-12 | 浪潮软件股份有限公司 | 一种请求处理方法及装置 |
CN109491802A (zh) * | 2018-10-10 | 2019-03-19 | 福建天泉教育科技有限公司 | 一种基于Unity的RESTFul网络请求的方法及适配器 |
CN109361757B (zh) * | 2018-11-09 | 2022-02-25 | 网宿科技股份有限公司 | 一种数据传输方法、装置及计算机可读存储介质 |
CN110673918B (zh) * | 2019-09-27 | 2021-10-01 | 北京猎户星空科技有限公司 | 智能设备的控制方法、装置以及智能设备、存储介质 |
CN111314419B (zh) * | 2020-01-16 | 2023-01-10 | 广州酷狗计算机科技有限公司 | 网络请求方法及装置 |
CN111428171B (zh) * | 2020-03-23 | 2023-06-30 | 郑州悉知信息科技股份有限公司 | 接口调用处理方法和系统 |
CN113852647A (zh) * | 2020-06-26 | 2021-12-28 | 武汉斗鱼鱼乐网络科技有限公司 | 基于顶层视图标记网络请求的方法、装置、介质及设备 |
CN113377446B (zh) * | 2021-05-07 | 2023-07-28 | 北京水滴科技集团有限公司 | 一种线程池的运行状态获取方法、装置和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154223A (zh) * | 2006-09-27 | 2008-04-02 | 阿里巴巴公司 | 查看与系统功能对应的源代码的方法及系统 |
CN101291335A (zh) * | 2008-06-13 | 2008-10-22 | 中兴通讯股份有限公司 | 一种基于浏览器获取服务器动态数据的方法及装置 |
CN101615179A (zh) * | 2008-06-25 | 2009-12-30 | 国际商业机器公司 | 用于Web应用的跨域交互的方法和系统 |
WO2011023456A2 (en) * | 2009-08-27 | 2011-03-03 | International Business Machines Corporation | A method and system for establishing and maintaining an improved single sign-on (sso) facility |
CN101997854A (zh) * | 2009-08-31 | 2011-03-30 | 阿里巴巴集团控股有限公司 | 一种提供数据服务的处理系统及方法 |
-
2011
- 2011-08-11 CN CN201110229622.8A patent/CN102932390B/zh active Active
-
2013
- 2013-03-27 HK HK13103838.5A patent/HK1176485A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154223A (zh) * | 2006-09-27 | 2008-04-02 | 阿里巴巴公司 | 查看与系统功能对应的源代码的方法及系统 |
CN101291335A (zh) * | 2008-06-13 | 2008-10-22 | 中兴通讯股份有限公司 | 一种基于浏览器获取服务器动态数据的方法及装置 |
CN101615179A (zh) * | 2008-06-25 | 2009-12-30 | 国际商业机器公司 | 用于Web应用的跨域交互的方法和系统 |
WO2011023456A2 (en) * | 2009-08-27 | 2011-03-03 | International Business Machines Corporation | A method and system for establishing and maintaining an improved single sign-on (sso) facility |
CN101997854A (zh) * | 2009-08-31 | 2011-03-30 | 阿里巴巴集团控股有限公司 | 一种提供数据服务的处理系统及方法 |
Non-Patent Citations (2)
Title |
---|
"Load testing and performance monitoring tools in use with AJAX based web";J. Krizanic, A. Grguric, M. Mosmondor, P. Lazarevski等;《MIPRO 2010》;20100528;第428-434页 * |
田福生,张燕平."用Ajax技术实现B/S模式下客户端间信息交互".《计算机技术与发展》.2007,第17卷(第10期),第92-98页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102932390A (zh) | 2013-02-13 |
HK1176485A1 (zh) | 2013-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102932390B (zh) | 一种网络请求的处理方法和系统、网络服务提供装置 | |
US11144711B2 (en) | Webpage rendering method, device, electronic apparatus and storage medium | |
KR102220127B1 (ko) | 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치 | |
CN104603756B (zh) | 经由沙盒执行的推测性的资源预提取 | |
US10148794B1 (en) | Methods, systems, and articles of manufacture for configuration-based client-side resource resolution framework for customizable user experience | |
WO2017124952A1 (zh) | 一种网页脚本加载方法和装置 | |
US8245125B1 (en) | Hybrid rendering for webpages | |
US8527862B2 (en) | Methods for making ajax web applications bookmarkable and crawlable and devices thereof | |
Lazuardy et al. | Modern front end web architectures with react. js and next. js | |
EP2339465A1 (en) | Location independent execution of user interface operations | |
US9787597B1 (en) | Methods, systems, and articles of manufacture for implementing model definition and constraint enforcement and validation | |
US20140068412A1 (en) | Method and Apparatus of Responding to Webpage Access Request | |
US20150067024A1 (en) | Autobatching | |
CN103559097B (zh) | 一种浏览器中进程间通信的方法、装置和浏览器 | |
WO2015080903A1 (en) | Systems and methods for executing aspects of a document | |
KR20130085856A (ko) | 이종 웹서비스의 조합 응용에서 웹서비스 호출을 위한 위젯 자동 생성 방법 및 그 장치 | |
CN104270443A (zh) | 一种能够动态解析Web应用的云计算系统及方法 | |
Oh et al. | Automated transformation of template-based web applications into single-page applications | |
WO2023212393A1 (en) | Distributed application development platform | |
US20030080994A1 (en) | System, method and computer program product for recognizing a state of a remote application | |
US10182102B1 (en) | Methods, systems, and articles of manufacture for configuration-based client-side flow control framework for customizable user experience | |
Williamson et al. | PySy: a Python package for enhanced concurrent programming | |
Chorazyk et al. | Volunteer computing in a scalable lightweight web-based environment | |
US9426258B1 (en) | Expression based declarative data service execution chaining | |
Østerbye et al. | Synchronization abstraction in the BETA programming language |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1176485 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1176485 Country of ref document: HK |