数据的分割传送及处理的方法和客户端与流程

文档序号:12278832阅读:281来源:国知局
数据的分割传送及处理的方法和客户端与流程

本发明涉及一种在下基于JavaScript脚本语言的异步通讯环境中客户端和服务器间进行大量数据的分割传送及处理的方法及适用该方法的客户端。



背景技术:

AJA(Asynchronous JavaScript and XML)用于异步网络应用(Web Application)的制作,是概述下列网络开发技术组合的术语:用于表达信息的HTML(或XHTML)、用于与CSS动态画面输出及标示信息相互作用的DOM(Document Object Model)、用于通过异步方式与Java Script网络服务器进行数据交换及操作的XML、XSLT、XMLHttpRequest(在AJAX应用中,可以使用事先定义的HTML、Text、JSON等代替XML、XSLT)。如DHTML或LAMP(Linux,Apache、MySQL/Maria DB、PHP/Perl或Python编程语言)等术语,AJAX本身并非一种特定的技术,而是指一同使用的技术的组合。AJAX应用被用作执行支持上述技术的网络浏览器的平台,其中IE、Chrome、Mozilla、Safari、Opera等大部分最新浏览器都符合要求。

与现有的网络应用相比,AJAX具有很多优点。现有网页每次向服务器传送数据时,都会采用修改整个画面(刷新,Refresh)的方法。即使使用者在画面中开展其它作业,整个画面也被重新传送,这令使用者感到不便。另外,因为每次都必须从服务器读取相当于整个画面内容的数据,所以处理、传送的数据量增大,从而出现服务器速度变慢的现象。

与此形成对比的是,使用AJAX与服务器收发数据时,因为只需传送特定作业所需核心数据,所以客户端每次向服务器发送数据时,无需重新修改客户端的整个画面。服务器方面则与现有的网络应用相比减少了处理数据的负担,从而使速度加快。

不过虽然具有这么多优点,但AJAX存在不适合进行大量数据的传送及处理的一个非常大的缺点,因此AJAX一般主要用于少量数据(几byte~几Kbyte)的异步发送·接收,而不用于大量数据(几百Kbyte~几百Mbyte)的异步发送·接收。

这是AJAX的基本构成要素-XMLHttpRequest并未以处理大量数据为目的进行设计导致的问题。XMLHttpRequest作为与网络服务器通讯的异步对象,起到向网络服务器传送使用者的要求及向网络浏览器传达来自网络服务器的结果的作用。大部分最新浏览器基本上都提供XMLHttpRequest Class。

为进一步具体说明XMLHttpRequest不适合处理大量数据的理由,对一般AJAX事件发生的过程进行如下阐述。

(1)客户端通过XMLHttpRequest对象向服务器传达要求。

(2)服务器处理通过XMLHttpRequest接收到的要求后,生成XML或单纯文本格式的结果并向XMLHttpRequest传送。

(3)从服务器处接收数据后,XMLHttpRequest对象告知基于JavaScript的客户端应用数据到达的事实(出现数据接收事件),客户端应用将数据处理为使用者要求的形态。

如上述过程所述,AJAX基本采用通过1次通讯传送、处理数据的方式,所以不适合进行大量数据的传送。即使利用异步通讯方式的优点,在接收数据期间,客户端可以从事其它作业,但在所有数据被接收前无法进行数据处理,因此在进行大量数据处理方面效率低下。

即使为了解决上述问题,结合一般的分割传送或Chunked Response方法(为提高使用者对大量数据的反应速度,将大量数据分成小单位数据进行传送的方法),也会出现①“blocking”和②“频繁的数据处理”等其它问题。与Chunked Response结合时的启动过程如下:

(1)客户端通过XMLHttpRequest对象向服务器传达要求。

(2)服务器处理通过XMLHttpRequest接收到的要求后,生成XML或单纯文本格式的结果,进行数据分割后向XMLHttpRequest传送。

(3)从服务器处接收数据后,XMLHttpRequest对象告知基于JavaScript的客户端应用数据到达的事实,客户端应用将数据处理为使用者要求的形态。

(4)完成数据处理后,向服务器传送“数据接收应答”。

(5)服务器接收到客户端传送的接收应答后,如果服务器中仍存在准备向客户端传送的数据时,则再次开始发送数据,不再存在向客户端传送的数据时,发送传送完成信息。

由上述过程中的(3)~(5)可知,客户端在处理接收到的数据的期间,不向服务器发送“数据接收应答”,必须在完成接收数据的处理后,才向服务器发送接收应答,在此期间出现服务器不能发送下一个数据,只能等待的“blocking现象”。出现这种现象成为传送大量数据时,数据传送等待时间变长,性能低下的因素。

另外,传送大量数据时,服务器和客户端间的发送及接收事件出现的次数与传送少量数据时相比要多得多,客户端每次都处理接收到的数据的话,处理次数增多,因此成为性能低下的又一因素。



技术实现要素:

本发明为解决上述问题而进行,目的在于提供一种在基于JavaScript脚本语言的异步通讯环境中最大程度减少与服务器间进行大量数据的处理及传送过程中出现的blocking现象的方案,另外提供了一种减少数据处理次数、提高性能的方案。

技术方案

为达成上述目的,根据本发明的在基于JavaScript脚本语言的异步通讯环境中客户端和服务器间进行数据的分割传送及处理方法之一的特征在于,包括:a)所述服务器将数据按一定的单位分割并向所述客户端的缓冲存储器传送的阶段;b)出现所述被分割的数据被所述客户端接收的接收事件时,所述客户端向所述服务器传送接收应答的阶段;c)所述服务器收到所述接收应答后,再次开始向所述客户端进行数据分割传送的阶段;d)首次出现所述接收事件时,在所述客户端生成计时器的阶段;e)所述客户端在所述计时器设置的每个时间间隔处理所述缓冲存储器接收到的数据的阶段。

另外,数据的分割传送及处理方法的特征在于,所述e)阶段的数据处理只有在所述缓冲存储器接收到的数据量超出规定值的情况下才能进行。

在基于JavaScript脚本语言的异步通讯环境中,处理从服务器接收到的数据的客户端之一的特征在于,包括:采用异步方式和所述服务器进行数据通讯的异步通讯单元;从所述服务器接收按一定的单位分割的数据的缓冲存储器;首次出现接收被分割的数据的所述接收事件时生成的计时器;出现所述被分割的数据被接收的接收事件时,向所述服务器传送接收应答,所述服务器再次开始数据的分割传送,在所述计时器设置的每个时间间隔处理所述缓冲存储器接收到的数据的数据处理单元。

另外,客户端的特征在于,所述数据处理单元只有在所述缓冲存储器接收到的数据量超出规定值的情况下才能进行所述数据的处理。

在基于JavaScript脚本语言的异步通讯环境中,从服务器向客户端分割传送数据的方法之一的特征在于,包括:a)所述服务器将数据按一定的单位分割并向所述客户端传送的阶段;b)与所述被分割的数据被接收的接收事件相对应,所述服务器基于所述客户端发送的接收应答再次开始向所述客户端进行数据的分割传送的阶段。所述服务器进行的所述传送和再次传送的阶段与在首次出现所述接收事件时生成的计时器设置的每个时间间隔处理所述缓冲存储器接收的数据的所述客户端数据处理阶段分别启动。

另外,所述服务器进行的所述传送和再次传送的阶段与只有在所述缓冲存储器接收到的数据量超过规定值的情况下才进行所述数据处理的所述客户端数据处理阶段分别启动。

有益效果

根据本发明在基于JavaScript脚本语言的异步通讯环境中客户端和服务器间进行大量数据的分割传送及处理最大程度地减少了服务器向客户端传送数据后,不再继续传送下一个数据而进行等待的blocking现象。另外,在服务器和客户端间进行大量数据的传送及处理的过程中,数据处理次数减少,从而提高了客户端的性能。

附图说明

图1是根据本发明在基于JavaScript脚本语言的异步通讯环境中传送大量数据的系统构成图。

图2是根据本发明解决服务器与客户端间大量数据传送及处理过程中出现的blocking现象的流程概要图。

图3是根据本发明减少服务器与客户端间大量数据传送及处理过程中的数据处理次数,提高性能的流程概要图。

具体实施方式

下面参考附图对本发明的实施例进行详细说明。

图1是根据本发明在基于JavaScript脚本语言的异步通讯环境中进行大量(本发明虽然同样适用于一般规模而非大量数据的传送及处理,但预计主要应用于大量数据的传送及处理,所以以大量数据为例进行说明)数据的传送的系统构成图。图1图示了客户端在网络浏览器中的驱动。另外,图1的网络浏览器还同时图示了作为异步通讯所需的AJAX对象,大部分网络浏览器提供的对象-XMLHttpRequest。XMLHttpRequest包含可以存储从服务器处接收的数据的缓冲存储器。

基于上述结构,根据本发明的数据处理方法如图2所示。图2提出了根据本发明服务器和客户端间进行数据通讯时,客户端接收服务器发送的大量数据的方法。

客户端通过XMLHttpRequest对象要求服务器传送数据。服务器基于XML、JSON、CSV等格式向XMLHttpRequest发送要求的数据。此时,服务器并不是一次发送要求的所有数据,而是首先按事先设置的规定单位进行分割然后传送(例如,即使接到发送10万个数据的要求时,也是按照服务器事先的设置以1000个为单位发送数据)。使用者可以进行上述规定单位的设置及变更,确定规定单位时,最好考虑XMLHttpRequest一次可以发送的数据量、准备传送的文件的特性、接收事件出现的频度、网络的速度等,不过考虑对象并不仅限于此。

从服务器处接收数据后,XMLHttpRequest生成“数据接收事件”,向客户端传达接收数据的事实。此时,服务器从传送数据后,直到从客户端收到“数据接收应答”时为止不再发送下一个数据,而是进行等待,接到上述接收应答后,再次重新开始数据的分割传送。

一般情况下,客户端在出现数据接收事件时进行反应并立即处理数据,只有在完成处理后,才向服务器发送数据接收应答。但是,如上所述,客户端只有处理了从服务器处接收到的数据后才能发送数据接收应答,这种情况下就出现了服务器在此期间无法传送下一个数据,只能等待的blocking现象。

为解决上述问题,在本发明中出现数据接收事件时,不再进行数据处理相关任何作业。XMLHttpRequest接收数据后,向服务器发送“数据接收应答”。即,出现接收事件时,不进行(bypass)数据处理作业。另外,因为XMLHttpRequest一接到数据就可以向服务器发送完成接收的接收应答,所以避免服务器出现blocking现象。

另一方面,首次出现数据接收事件时,客户端生成计时器,之后在计时器设置的每个一定的时间间隔进行数据处理(首次出现数据接收事件时,必须从那一刻开始经过一次计时器设置的时间后处理数据,即可以不进行数据处理,立即发送数据接收应答),使用者可以进行计时器设置时间的设置和变更,设置·变更时间间隔时最好考虑客户端的性能、传送文件的特性等,但考虑对象不仅限于此。

如上所述,本发明将“数据传送部分(接收数据,发送数据接收事件相关接收应答,再次开始发送下一个数据的部分)”和“数据处理部分”分离,使它们同时、独立进行,从而解决了blocking问题。

下面在解决blocking问题方面更进一步,图3图示了解决客户端频繁进行数据处理导致的性能低下问题的过程。根据图3启动的客户端并不在每一个计时器设置的时间间隔读取并处理数据,而是在每个计时器设置的时间间隔确认缓冲存储器接收到的数据总量,只有当接收的数据量超过事先设定的数值时才进行数据的处理。即,接收到的数据量低于事先设置的数值时,不执行数据处理功能,一直等到计时器设置的下一个时间间隔。使用者可以进行事先设置数值的设置及变更,设置·变更该值时最好考虑缓冲存储器的大小、客户端的性能、传送文件的特性等,但考虑对象并不仅限于此。

与在每个计时器设置的时间间隔处理数据的情况相比,根据图3启动的客户端处理数据的次数更少,因此具有提高性能的效果。

读取并处理接收到的数据的方法是采用分析字符串的方式(Parsing)。因为是大量数据,所以不采用分割字符串等方法,而是使用正规的表达式查找字符串的特定范围。为确保能够在服务器与XMLHttpRequest、客户端之间接收·发送的数据使用正规的表达式,事先制定了规定,因为其形态具有JSON、XML、CSV等格式所以成为可能。

本发明并不局限于上述特定实施例,具有本发明所属技术领域普遍知识的任何人都可以在不脱离权利要求范围要求的本发明要旨的情况下进行多种变形,与此相同的变更属于权利要求范围记载的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1