WebIM在农产品电子商务系统中的应用研究
2013-04-29金晓丹王波赵晓倩
金晓丹 王波 赵晓倩
摘要:为解决农产品信息不流畅而导致的农产品滞销问题,在农产品电子商务系统中引入WebIM技术。设计了WebIM系统的各个关键类和具体功能,通过Comet技术实现了维护客户端和服务器端通信的HTTP长连接,利用Servlet异步特性实现了关键的即时通信的Pushlet框架。WebIM技术适合实现交互性和实时性较强的web应用,可有效解决农产品买卖双方的实时沟通和农产品信息的實时更新问题。
关键词:电子商务;WebIM;Comet;Pushlet; Servlet
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2013)07-1720-03
近年来,农产品滞销现象成为阻碍农村经济健康发展、影响农民收入增长的重要问题之一。解决好农产品市场存在的农产品结构性、季节性、区域性过剩问题成为当务之急。随着计算机技术、网络技术和远程通信技术的不断发展,电子商务成为一种新型的商业运营模式。农产品电子商务系统能够使围绕农产品的各种交易活动实现电子化、数字化和网络化,农民与收购商之间可以不受地域的限制,以非常便捷的方式完成交易过程,对于促进农民增收、引导农业结构调整、加快农村市场流通等起到了积极的作用。
IM (Instant messaging,即时通讯)是一个终端服务,允许多用户通过使用网路即时的传递文字、档案、语音与视频进行交流。WebIM将IM服务嵌套在网页中,这种技术不仅继承了IM互动性强、营销效率高、传播范围大的优点,同时打破了用户必须安装IM插件的局限性。农产品电子商务系统应用WebIM技术后,买卖双方可以即时的在线交流,使农产品销售者掌握主动权,及时的将农产品信息的展示给收购商,摆脱以往等待关注的被动局面。农产品销售者也可以通过电子商务系统用户的注册需求信息,将符合潜在采购需求的用户组成群组,以群发的形式对特定用户群发送其可能感兴趣的农产品信息,寻求潜在收购商,从而扩大农产品销售渠道。
1 WebIM常用技术
WebIM是基于Web浏览器所构建的一种即时通讯方式,常用技术包括:轮询(polling)和服务器推送。
1.1 轮询
轮询的核心思想是,在客户端和服务器之间建立连接,客户端以固定时间间隔从服务器端查询数据是否有改变,从而进行增量式的更新。此技术具有实现容易,服务器资源占用少的优点。但这种拉取数据的方式需要时间间隔足够短才能保证数据传递的及时性。时间间隔过短,即使数据没有更新,客户端仍会在短时间内对服务器发送多个请求,导致服务器资源的大量浪费。
1.2 服务器推送
以服务器推送方式实现WebIM时,服务器能实时地将更新的信息传送到客户端,而无须浏览器一端发出请求。服务器推送解决了在保证传送性能的前提下进行协同多用户的响应问题。
传统的服务器推送是通过基于浏览器的插件实现的,例如使用RMI、CORBA进行服务器端的远程调用。这些技术实现复杂、存在防火墙限制、需要对客户端维护。现在的服务器推送已经向无插件推送(Comet)方式发展。Comet较适合事件驱动的Web应用,以及对交互性和实时性要求很强的应用,如证券交易分析、投票和实时监控等。
Comet目前有两种实现方式:长轮询和HTTP流。
使用长轮询方式时,浏览器会发出请求与服务器建立一个连接,保持该连接直到有数据传递或超时才返回。浏览器端响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。使用HTTP流的方式时,HTML标记iframe会在 HTML 页面里嵌入一个隐蔵帧,然后将这个隐蔵帧的 SRC 属性设为对一个长连接的请求,服务器端将不断向客户端传送实时数据。Pushlet架构是Comet的开源框架,从功能上实现了无插件的服务器推技术。该文基于Pushlet架构,设计了一个B/S模式的可应用于农产品电子商务系统的WebIM系统。
2 系统架构设计
系统要求农产品采购方能够与销售者之间实时的建立联系、订阅感兴趣的农产品主题、接收系统公告。针对以上需求,WebIM系统应具有实时会话功能,并能订阅农产品信息、查询历史订阅信息和相应的农产品信息管理功能,其系统架构设计如图1所示。
WebIM 客户端客户登录系统后首先需要进行初始化,通过启用一个临时的AJAX线程加载客户个人信息和好友列表,同时将用户上线信息更新给服务器端。初始化完毕后,客户端通过HTTP流的方式监听服务器端数据,如果数据有变化,则以XML流的方式在通道上进行传输,接受数据的客户端会更新客户端消息和客户端UI界面,从而保证获得通信发起端发送的消息。申请订阅农产品信息、查询历史订阅信息和信息管理功能都通过命令管理器来实现。当用户订阅了服务器端的某个农产品主题时,一旦服务器端有关于该主题的新消息产生,服务器会主动将其推送到订阅了该主题的客户端。当用户查询历史订阅信息时,命令控制器将查询命令会通过查询管理器搜索信息数据库,并返回查询结果。当客户端客户退出系统时,AJAX线程会将用户下线状态信息更新给服务器端,该用户好友则通过服务器端的更新获得好友下线信息。
3 WebIM系统实现
3.1 WebIM系统核心类及职能
Pushlet类:是一种Servlet类,将所有接收到的用户请求包装为事件对象,再根据会话对象、事件对象、请求对象、反馈对象构造一个命令对象,将命令对象交由控制类处理。
会话类:代表一次用户会话,使用类似URL重写方式,通过服务器为每个会话分配一个会话ID,通过会话ID标识会话。会话在其存活期内有效。
控制类:是所有控制命令以及数据推送命令的执行器。
客户类:维护了一个阻塞的事件队列。根据客户端使用的连接模式处理服务器端的返回信息,并重新建立连接。
分发类:是事件分发器。对来源于客户或者事件源的事件根据要求实现多播,广播以及单播。
客户分发类:根据不同的客户端分发Javasc_ ript、XML、序列化数据。
3.2 WebIM系统具体实现
在WebIM系统中包含三种消息:聊天消息,用户订阅农产品消息和农产品公告消息。在设计客户端时,可以为每个WebIM客户和服务器建立一个HTTP的长连接(HTTP流)。服务器推送技术要求Web容器自身支持HTTP长连接。Jetty是由Java编写的Web容器,通过Java中新的I/O包优化了数据输出缓冲架构。Jetty可以使HTTP长连接具有数据交流的特性。因此Jetty可以作为服务器端的Web容器。在设计服务器端时,由于需要维持客户端和服务器端的HTTP长连接,Pushlet类的连接Servlet的设计最为关键。本系统可以通过继承HttpServlet实现连接Servlet。
4 性能测试
测试使用两台计算机,中央处理器为Intel i5-3570,内存为4G。一台计算机模拟客户机,一台计算机模拟服务器。
客户机模拟N个客户端对服务器发送请求,逐步增加客户端N的个数,判断在客户端个数N增加的情况下,客户端能否得到正常响应,逼近并发性能的极限值。实验采用九组数据进行测试,测试结果如表1所示。每组测试,客户机均向服务器发送十次请求。
从表1可以看出,随着模拟客户端的数量增加,客户机cpu占用率不断增加。当模拟客户端数量达到1000时,并发请求已经达到10000,客户端仍能正常响应消息,表示客户机在发送大量请求后,仍可正常运行。实验结果表明,该文设计WebIM系统,并发吞吐能力较大,可以支持大量用户同时使用,而不会发生请求无法响应的现象。
5 结束语
WebIM 系统作为能够进行实时交流的网页IM系统,用户无需安装IM插件,使进入农产品电子商务系统的买卖双方的交流更加方便,简化了买家与卖家交流沟通农产品信息的中间环节。通过WebIM系统,农产品信息能够更加快速的在买卖双方之间进行传播。
参考文献:
[1] 申艳光,王飞,申静.农产品电子商务中多层关联规则挖掘技术的应用[J].农机化研究,2012(2):24-27,37.
[2] 景慎艳.基于Pushlet的服务器推技术的研究与应用[J].現代计算机,2009(10):132-134.
[3] 孙清国,朱玮,刘华军.Web应用中的服务器推送技术研究综述[J].计算机系统应用,2008(11):116-120.