B/S架构中的数据推送设计与实现
摘要:以b/s系统中的数据推送开发为背景,选取了通过客户端浏览器的定时刷新来定时向服务器请求新数据的方式,基于j2ee架构完成了整个推送技术的设计与实现,着重对所使用的关键技术、设计思想、具体实现进行了分析。在某呼叫中心应用系统的实际应用表明,该技术达到了设计目标,并成功的实施与运行,对业务开展起到了积极的推动作用,对企业开发类似应用具有一定的借鉴意义。
关键词:b/s架构;数据推送;jqueryajaxjson
中图分类号:tp311 文献标识码:a 文章编号:1009-3044201310-2356-04
现在b/s架构的系统逐渐成为企业应用的主流,由于b/s系统都是基于http协议的,这就决定了它在实时应用方面的缺陷,因为服务器端的信息发生了任何变化都不会主动发送到客户端。但是在b/s架构中服务器向浏览器推送数据在许多场合都有需求,例如实时监控报警、即时消息等。这就存在一个问题,客户端如何才知道服务器端数据发生了变化?何时才该去向服务器请求新数据呢?现在,在b/s架构中通常的解决方案是通过客户端浏览器的定时刷新来定时向服
务器请求新数据。虽然这种方式存在着一定时差,实时性不高,并且会增加服务器和网络负担等问题,但由于在实际应用中,这种方式便于快速开发实现,依然是众多系统设计、开发人员的首选解决方案。以下将以在j2ee中的具体应用为例,来探讨基于这种思想的推送机制的设计与实现。
1 设计与实现
1.1 设计概述
在设计上,考虑到常见的b/s应用中经常采用三层架构模型,即数据层、功能层、表示层。数据推送也针对这三层架构模型,分别在每一层实现不同的功能,并有机组合成一个完整的推送机制:
数据层:用于存储需要推送的数据,以及与推送相关的控制信息。
功能层:用于收集、生成需推送的数据,并存入数据层;以及根据从客户端的请求从数据层获取推送数据,并反馈到表示层。
表示层:用于定时向服务器请求刷新待推送数据,并展现获取到的推送数据。
1.2 数据层设计与实现
定义存储推送数据的数据库表结构,至少包括以下字段:主键、推送内容、推送对象、推送状态。推送状态可包括:未获取、已获取、已过期。为了使推送过程的管理更灵活,可以加上相关的控制信息,如:推送内容有效期、客户端展示时长、客户端刷新请求间隔时长、推送开关等。以上字段、状态等可根据具体业务使用场景,加以扩展。
1.3功能层设计与实现
功能层至少包括产生、获取推送数据2个不同的action
产生推送数据的action,根据业务触发条件,生成推送内容、推送对象,并写入推送数据表中。其中,业务触发条件可以是来自接口的数据,或者由客户端主动发送的请求,或者系统定时执行收集的信息等。
获取推送数据的action,根据客户端的定时刷新触发,访问推送数据表,获取与客户端推送对象一致的数据,并构造成json字符串,返回给客户端。
在这里用到了jsonjavascript object notation)。json是一种轻量级的数据交换格式。json采用完全独立于语言的文本格式,这使json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。它基于javascript的一个子集。json javascript 原生格式,这意味着在 javascript 中处理 json 数据不需要任何特殊的 api 或工具包。json 可以将 javascript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串在客户端和服务器端进行传递。比起xml来说,json在数据传输上对网络的压力要小得多,对数据的编码、解码也比xml要简单。当然,如果你习惯使用xml,那么在这里采用xml替代json也是一样的,不影响功能的实现。
1.4表示层设计与实现
表示层通常为jsp页面,要实现实时刷新、数据获取、数据展示三项功能。
在数据推送中,要通过客户端浏览器的定时刷新来定时向服务器请求新数据,就必须使用ajax,同时为了方便的处理json对象,以及在页面上灵活的进行展示,访问各个页面元素,采用jquery无疑是最简便的选择。jquery是继prototype之后又一个优秀的javascrīpt框架。它是轻量级的js库(压缩后只有21k),它兼容css3,还兼容各种浏览器(ie 6.0+ ff 1.5+ s
afari 2.0+ opera 9.0+)。jquery使用户能更方便地处理html documentsevents、实现动画效果,并且方便地为网站提供ajax交互。
实时刷新有2种方式,即window.settimeoutwindow.setinterval。本例子中,为了对实时刷新的频率加以控制,可根据服务器的负载等具体情况,调整refreshtime,因此采用settimeout方法,以保证刷新的间隔时间是可控的。
页面展示采用了marquee跑马灯的方式,可将多次获取到的推送信息滚动进行显示。根据具体应用场景的不同,还可以采用其它方式,如提示性更强的alert,在模拟实时聊天的业务中,还可以采用模仿聊天窗口的方式。总之,在表示层的展示方式是丰富多样的,完全依据业务场景的需要灵活的定制。
2 结束语
b/s架构中通过客户端浏览器的定时刷新来定时向服务器请求新数据的数据推送机制,在某呼叫中心的应用中,不仅实现了话务系统实时告警信息及时传递到坐席客户端的功能,同时向坐席提供了模拟即时聊天的消息传递机制。经过,500名坐席同时在线并发使用的实际检
验,不仅能满足话务系统的实时性要求,同时也满足大规模并发的性能要求,在实际应用中取得了良好的效果,对其它有类似业务场景的应用系统可以借鉴。
参考文献:
[1] jonathan chaffer karl swedberg. jquery基础教程 [m]. 李松峰,译. 3.北京:人民邮电出版社,2012.
[2] bear bibeault yehuda katz. jquery实战 [m]. 三生石上,译.2.北京:人民邮电出版社,2012.
[3] harwani b m. jquery攻略[m]. 侯伯薇,陈宁,译.北京:人民邮电出版社,2010.
[4] 弗兰纳根. javascript权威指南[m]. 淘宝前端团队,译.6.北京:机械工业出版社,2012.
[5] zakas n c. javascript高级程序设计[m]. 李松峰,曹力,译. 3.北京:人民邮电出版社,2012.
[6] 李刚.疯狂ajax讲义 [m]. 3.北京:电子工业出版社,2013.
[7] 高洪岩.至简ssh:精通java web实用开发技术:struts+spring+hibernate[m]. 北京:电子工业出版社,jquery实现ajax2009.
[8] 蒋卫祥,朱利华,闾枫.j2ee案例开发教程[m]. 北京:化学工业出版社,2011.