基于反向Ajax技术的终端驱动Web服务

2017-03-06 20:37肖婧
电子技术与软件工程 2017年1期
关键词:二维码互联网

随着互联网技术的发展,Web服务应用也是也来越广泛,涉及到了各行各业,并且对于网页应用有了更深层次的开发应用。Ajax技术已经广泛应用在Web架枸的系统中,但是传统的Ajax不能满足实时性较高的场景。因此通过网页端驱动Web服务器进行业务推送的反向Ajax请求技术成为当前热门的前沿研究方向,并在很多的实际领域中得到实际应用,如当前广泛被应用的二维码扫描后的页面自动跳转等新成果。反向ajax Web开发在最近几年有了很大的发展,已经超过了把静态网页链接在一起的方法,这种做法引起浏览器刷新,等待页面的加载。现在需要的通过Web来访问完全动态应用,这些通常需要尽快解决,提供实时的组件。本文通过对反向Ajax研究对于常用的反向Ajax请求的优缺点进行详细分析,针对当前反向Ajax请求具有的不足点进行优化,实现有更好实时性和更低资源消耗量的反向Ajax请求方式。

【关键词】互联网 Ajax技术 反向Ajax技术 二维码 页面跳转

在最近的几年时间中,Web 开发技术发生了很大的变化。现在,我们需要的Web服务是能够通过 快速Web、动态访问应用。目前Web的开发应用已经远远超出了把各类静态网页链接一起的方法,采用静态页面链接的方法在进行页面切换时能引起浏览器的页面刷新,需要页面发起Ajax请求,需要等待页面回应请求并且加载页面。而现在的Web开发希望目的是能通过 Web页面来访问完全动态的应用。而这样的应用往往都是要求有尽量快的响应速度,几乎接近与实时组建的响应,与一般的实体客户端软件这些应用通常需要尽可能的快,提供近乎实时的组件。因此,需要研究一种具有实时反应速度,能够及时响应页面的访问技术,反向 Ajax 的目的为了让服务器将信息推送至客户端。Ajax 请求发出在一般状态下是不进行状态设定,使用时只能从客户端到服务器端发起请求,服务器端对请求进行处理响应。而该技术是通过使用虚拟的通信技术模拟现有的服务器端和客户端之间形成的响应式通信来绕过这一条件限制,达到客户端可以反向获取到服务器端提供的服务数据。

目前在Web頁面上的响应方式主要有三种常用的技术,分别是Ajax技术、反向Ajax技术和WebSockets技术。他们分别应用与不同的场景中:

Ajax技术为异步的 JavaScript 和 XML (Ajax),一种是可通过 JavaScript 来访问的浏览器功能特性,允许脚本向幕后的网站发送一个 HTTP 请求而又无需重新加载页面。 Ajax 的出现已经超过了10年,尽管其名字中包含了 XML,但您几乎可以在 Ajax 请求中传送任何的东西。最常使用的数据为 JSON,它与 JavaScript 语法非常接近并且消耗更少的带宽。

1 反向Ajax技术实现

反向 Ajax (Reverse Ajax) 原则上是能够从服务器端向客户端发送数据。在标准的 HTTP Ajax 请求中:

数据是发送到服务器端的,反向 Ajax可以某些特定的方式来模拟发出一个 Ajax请求,这些方式本文都会讨论到,服务器就可以尽可能快地向客户端发送事件(低延迟通信)。Ajax 请求默认情况中是无状态的,并且只能从客户端向服务器端发出请求。客户可以通过使用技术模拟服务器端和客户端之间的响应式通信来跳过这一限制。反向Ajax请求主要采用的方式包括Polling,Piggyback等,在每种方式下都进行相应的请求处理,具有一些优势和缺陷。

1.1 Polling

轮询(Polling)常用的包括HTTP 轮询和 JSONP 轮询,轮询主要是进行客户端向服务器端发出请求以获取服务器回显数据的方式,这是一种典型的Ajax HTTP 请求。但是我们希望通过这样的Ajax请求实现反Ajax服务就需要做到客户端尽快获得服务器端的事件,客户端连询间隔(发起两次的请求间隔时间)必须做到非常的小才能保证实现服务在向客户端推送的结果。这样的快速轮询Ajax就是典型的HTTP 轮询方式。JSONP 轮询基本上与 HTTP 轮询实现方式基本采用了同样的方式。主要的不同之处在于JSONP轮询是可以发送跨域请求(在不同域间实现数据请求服务)。通过HTTP轮询实现反向Ajax请求如图1所示。

虽然可以通过传统的Ajax请求方式通过缩短发送间隔时间实现反向Ajax请求。但仍然存在着很明显的缺陷,但凡请求的间隔时间缩短,浏览器端会发出许多请求数据,并且这些请求数据中的很多都不会有任何有效的数据返回,故这样的方式会浪费大量的计算资源和网络的带宽资源。

1.2 Piggyback

捎带轮询 (piggyback polling) 是在轮询的基础上进行的优化处理,主要优化了不到数据返回的无效请求。因此捎带轮询是一种比轮询更智能呢个的方式,它会将请求中的非必需请求(无数据返回的请求)进行过滤删除。这样将不会受限于时间的间隔,因为客户端在有需要的时候才会向服务器端发送请求,而与普通连询不同之处主要在于请求响应上。响应被划分为两个部分:一是对请求数据的响应,二是对服务器事件的响应,如果当任何一部分有事件数据发生,服务器端都会对 Ajax 请求进行响应会返回一个混合的响应数据会客户端。通过piggyback 轮询方式实现反向 Ajax请求如图2所示。

通过实际方法的应用发现使用捎带轮询技术时,通常是客户端向服务器发送一个Ajax请求后才会触发后续的混合响应形成。这样的方式使得客户端的请求没有不返回数据的,因为客户端对什么时候发送请求做了控制,有效提高处理资源和网络资源的利用率,降低了无效的消耗。并且该技术可以在所有的浏览器客户端上应用,不受服务器端功能限制。但是采用捎带轮询的方式也是存在着一个明显的缺陷,就是在进行Ajax请求时都要求客户端优先发起连接请求后才会主动进行事件推送服务,而客户端没有进行请求发起时即使服务器有很多事件需要传送到客户端也不能将事件推送到客户端。造成服务器端传送事件的壅塞和推送服务的失败。

2 反向Ajax技术优化

使用了连询或是捎带连询的反向 Ajax请求因为不具备伸缩性,没能提供低延迟通信(只要事件一旦到达服务器端,它们就以最快的速度到达浏览器端),导致应用非常受限。正式由于当前使用的反向Ajax请求的推送服务存在以上的技术缺陷,使得反向推送服务发展受到了阻碍,因此我们希望对现有的反向Ajax技术进行优化。

在优化时使用了一种基于Web应用模型Comet进行事件推送,在此模型中,请求被发送到服务器端并且保持一个长时间的存活期,一直到超时或是有服务器端事件的发生。在这个请求完成后,另外一个长生存期的 Ajax 请求就被送去等待着另一服务器端事件。使用 Comet时Web 服务器可以在无需显示请求的情况下给客户端发送数据。在Comet模型中使用流 模式,在流模式下会打开一个持久的连接,会保持一个较长的生存期的请求,每一个到达服务器端的事件全部会通过这个同一连接来发送。因此采用Forever Iframe技术把客户端通过这一连接请求发送过来的不同响应分隔开。而目前优化实现 Comet 采取的方法是打开一个能到服务器端的 Ajax 请求然后等待其响应。服务器端需要一些特殊的功能来允许请求被挂起,一旦有事件发生,服务器端就会在挂起的所有请求中送回响应并关闭该请求,完全就像是关闭了 servlet 响应的输出流。然后客户端使用这一响应并且打开一个新的到服务器端的长生存期的 Ajax 请求,从而保证了长生存期的Ajax请求。通过Comet方式实现反向Ajax请求如图3所示。

使用Comet方式的反向Ajax请求主要的优势在于每个客户端都会有一个持续连接到服务器端的通信链路。服务器端可以通过有事件到来时提交响应,把事件推送给客户端,或者也可以累积事件后进行连续发送。因为存在请求需要保持长时间打开状态,所以服务器端需要特别的功能来处理所有这些长生存期请求,保证长生存请求不会丢失和拥塞。

3 反向Ajax优化模型Comet的应用优化

反向Ajax请求常被应用于:

(1)Web网页自动弹出提示信息而无需用户手动的刷新页面的功能;

(2)手机扫描页面中的二维码以后,进行页面的自动跳转功能;

(3)页面聊天的聊天记录自动共享所有用户功能等实际应用。

在使用反向Ajax请求实现的Web 服务器会给每一个连接创建一个线程,如果需要在大型应用中使用 Comet模型,服务器端需维护大量并发的长连接。在这种状态下,服务器端考虑到负载均衡和集群技术;或在服务器端改进长连接。而且AJAX 的应用使请求的出现次数变得更加的频繁,但是 Comet则会很长时间占用一个连接,这样在大量连接出现的应用背景下请求会变得效率非常低,大量的占用线程池里有限的线程数,甚至会阻塞新的连接发起,给集中应用部署帶来了很大困难。

针对这样应用问题在使用反向Ajax请求时对Comet模型进行应用的优化使得在应用连接处于空闲时,将这个空闲连接分配的线程资源返送到线程池,返还资源还可以供新的连接使用;当原来处于空闲的连接客户发出新请求时,会从线程池中重新分配一个线程资源用来处理这个请求。这种状态的优化方式在连接处于空闲机率比较高、并发连接数目多的场景下, 的降低了服务器的资源负载。并且在采取这样的优化方式后还可以确保客户端不工作时服务器端可以自动释放为这些连接分配的资源,有效防止服务器端出现内存泄露,为正常服务提供了保障。

4 结论

本文对现有基于反向Ajax请求的Web服务器推送技术进行了研究。针对反向Ajax请求存在的缺陷进行分析,采取多项技术进行优化保证Ajax请求的有效性和系统的可靠性。通过反向ajax Web开发不止是把静态网页链接在一起,这样做会引起浏览器的刷新,要等待页面的加载。现在需要能够通过Web来访问的完全动态的应用,这些应用通常以最快的速度,提供给Web页面接近实时的组件服务。

Web框架过去通常依赖传统 “请求-响应” 模式,该模式会导致页面刷新,消耗大量的处理资源和网络资源,限制了传统模式的大规模应用实践。随着反向Ajax等新技术的出现和不断发展,现在可以将事件驱动架构的概念轻松应用于 Web,获得去耦合、可伸缩性和反应性强等好处。更良好的用户体验也会带来新的商业应用,带来更多的技术发展。

参考文献

[1]刘媚,王旭阳.基于Comet技术的WEB实时性应用的研究[J].无线互联科技,2016.

[2]李贞.服务器端状态保持机制的软件系统设计与实现[D].成都:电子科技大学,2011.

[3]许建鹏.基于DWR框架的Web应用研究与实现[D].青岛中国海洋大学,2009.

[4]文爱平,文德民.基于IE浏览器的Ajax Comet架构[J].电脑知识与技术,2010(17).

[5]杨逊.基于Ajax的员工报销管理系统设计[D].成都:电子科技大学,2014.

[6]段子飞.支持Ajax的Deep Web网络爬虫系统的设计与实现[D].广州:华南理工大学, 2015.

[7]杨俊峰,黎建辉,杨风雷.深层网站Ajax页面数据采集研究综述[J].计算机应用研究,2013(06).

[8]陈莉莉,张丽,刘正龙.搜索引擎中基于状态的Ajax动态网页提取研究[J].计算机应用与软件,2013(07).

[9]方雪峰,唐珂,夏海军,毛晓丽.基于网络原型挖掘的AjaxCrawler系统研究[J].电子技术与软件工程,2013(18).

[10]陆亮,李东.支持AJAX的网络爬虫设计与实现[J].智能计算机与应用,2013(06).

作者简介

肖婧(1982-),女,硕士学位。现为石河子大学信息科学与技术学院讲师,主要从事计算机基础教学与数据分析的教学研究工作。

作者单位

石河子大学信息科学与技术学院 新疆维吾尔自治区石河子市 832000

猜你喜欢
二维码互联网
二维码迷宫
二维码
让严肃的二维码呆萌起来
二维码让政务公开更直接
“互联网+”环境之下的著作权保护
“互联网+”对传统图书出版的影响和推动作用
从“数据新闻”看当前互联网新闻信息传播生态
互联网背景下大学生创新创业训练项目的实施
二维码,别想一扫了之