国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

B/S架構(gòu)中的數(shù)據(jù)推送設(shè)計與實現(xiàn)

2013-12-29 00:00:00錢敬
電腦知識與技術(shù) 2013年10期

摘要:以B/S系統(tǒng)中的數(shù)據(jù)推送開發(fā)為背景,選取了通過客戶端瀏覽器的定時刷新來定時向服務(wù)器請求新數(shù)據(jù)的方式,基于J2EE架構(gòu)完成了整個推送技術(shù)的設(shè)計與實現(xiàn),著重對所使用的關(guān)鍵技術(shù)、設(shè)計思想、具體實現(xiàn)進(jìn)行了分析。在某呼叫中心應(yīng)用系統(tǒng)的實際應(yīng)用表明,該技術(shù)達(dá)到了設(shè)計目標(biāo),并成功的實施與運行,對業(yè)務(wù)開展起到了積極的推動作用,對企業(yè)開發(fā)類似應(yīng)用具有一定的借鑒意義。

關(guān)鍵詞:B/S架構(gòu);數(shù)據(jù)推送;jquery;ajax;json

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2013)10-2356-04

現(xiàn)在B/S架構(gòu)的系統(tǒng)逐漸成為企業(yè)應(yīng)用的主流,由于B/S系統(tǒng)都是基于HTTP協(xié)議的,這就決定了它在實時應(yīng)用方面的缺陷,因為服務(wù)器端的信息發(fā)生了任何變化都不會主動發(fā)送到客戶端。但是在B/S架構(gòu)中服務(wù)器向瀏覽器推送數(shù)據(jù)在許多場合都有需求,例如實時監(jiān)控報警、即時消息等。這就存在一個問題,客戶端如何才知道服務(wù)器端數(shù)據(jù)發(fā)生了變化?何時才該去向服務(wù)器請求新數(shù)據(jù)呢?現(xiàn)在,在B/S架構(gòu)中通常的解決方案是通過客戶端瀏覽器的定時刷新來定時向服務(wù)器請求新數(shù)據(jù)。雖然這種方式存在著一定時差,實時性不高,并且會增加服務(wù)器和網(wǎng)絡(luò)負(fù)擔(dān)等問題,但由于在實際應(yīng)用中,這種方式便于快速開發(fā)實現(xiàn),依然是眾多系統(tǒng)設(shè)計、開發(fā)人員的首選解決方案。以下將以在J2EE中的具體應(yīng)用為例,來探討基于這種思想的推送機制的設(shè)計與實現(xiàn)。

1 設(shè)計與實現(xiàn)

1.1 設(shè)計概述

在設(shè)計上,考慮到常見的B/S應(yīng)用中經(jīng)常采用三層架構(gòu)模型,即數(shù)據(jù)層、功能層、表示層。數(shù)據(jù)推送也針對這三層架構(gòu)模型,分別在每一層實現(xiàn)不同的功JLamiJz5s0FllCpoBujSSn6UUAisdjcJnLVGN+vqp68=能,并有機組合成一個完整的推送機制:

數(shù)據(jù)層:用于存儲需要推送的數(shù)據(jù),以及與推送相關(guān)的控制信息。

功能層:用于收集、生成需推送的數(shù)據(jù),并存入數(shù)據(jù)層;以及根據(jù)從客戶端的請求從數(shù)據(jù)層獲取推送數(shù)據(jù),并反饋到表示層。

表示層:用于定時向服務(wù)器請求刷新待推送數(shù)據(jù),并展現(xiàn)獲取到的推送數(shù)據(jù)。

1.2 數(shù)據(jù)層設(shè)計與實現(xiàn)

定義存儲推送數(shù)據(jù)的數(shù)據(jù)庫表結(jié)構(gòu),至少包括以下字段:主鍵、推送內(nèi)容、推送對象、推送狀態(tài)。推送狀態(tài)可包括:未獲取、已獲取、已過期。為了使推送過程的管理更靈活,可以加上相關(guān)的控制信息,如:推送內(nèi)容有效期、客戶端展示時長、客戶端刷新請求間隔時長、推送開關(guān)等。以上字段、狀態(tài)等可根據(jù)具體業(yè)務(wù)使用場景,加以擴(kuò)展。

1.3功能層設(shè)計與實現(xiàn)

功能層至少包括產(chǎn)生、獲取推送數(shù)據(jù)2個不同的action。

產(chǎn)生推送數(shù)據(jù)的action,根據(jù)業(yè)務(wù)觸發(fā)條件,生成推送內(nèi)容、推送對象,并寫入推送數(shù)據(jù)表中。其中,業(yè)務(wù)觸發(fā)條件可以是來自接口的數(shù)據(jù),或者由客戶端主動發(fā)送的請求,或者系統(tǒng)定時執(zhí)行收集的信息等。

獲取推送數(shù)據(jù)的action,根據(jù)客戶端的定時刷新觸發(fā),訪問推送數(shù)據(jù)表,獲取與客戶端推送對象一致的數(shù)據(jù),并構(gòu)造成JSON字符串,返回給客戶端。

在這里用到了JSON(JavaScript Object Notation)。JSON是一種輕量級的數(shù)據(jù)交換格式。JSON采用完全獨立于語言的文本格式,這使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。它基于JavaScript的一個子集。JSON 是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON 數(shù)據(jù)不需要任何特殊的 API 或工具包。JSON 可以將 JavaScript 對象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個字符串,或者在異步應(yīng)用程序中將字符串在客戶端和服務(wù)器端進(jìn)行傳遞。比起XML來說,JSON在數(shù)據(jù)傳輸上對網(wǎng)絡(luò)的壓力要小得多,對數(shù)據(jù)的編碼、解碼也比XML要簡單。當(dāng)然,如果你習(xí)慣使用XML,那么在這里采用XML替代JSON也是一樣的,不影響功能的實現(xiàn)。

1.4表示層設(shè)計與實現(xiàn)

表示層通常為JSP頁面,要實現(xiàn)實時刷新、數(shù)據(jù)獲取、數(shù)據(jù)展示三項功能。

在數(shù)據(jù)推送中,要通過客戶端瀏覽器的定時刷新來定時向服務(wù)器請求新數(shù)據(jù),就必須使用AJAX,同時為了方便的處理JSON對象,以及在頁面上靈活的進(jìn)行展示,訪問各個頁面元素,采用jquery無疑是最簡便的選擇。jquery是繼prototype之后又一個優(yōu)秀的JavaScrīpt框架。它是輕量級的js庫(壓縮后只有21k),它兼容CSS3,還兼容各種瀏覽器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jquery使用戶能更方便地處理HTML documents、events、實現(xiàn)動畫效果,并且方便地為網(wǎng)站提供AJAX交互。

實時刷新有2種方式,即window.setTimeout或window.setInterval。本例子中,為了對實時刷新的頻率加以控制,可根據(jù)服務(wù)器的負(fù)載等具體情況,調(diào)整refreshTime,因此采用setTimeout方法,以保證刷新的間隔時間是可控的。

頁面展示采用了marquee跑馬燈的方式,可將多次獲取到的推送信息滾動進(jìn)行顯示。根據(jù)具體應(yīng)用場景的不同,還可以采用其它方式,如提示性更強的alert,在模擬實時聊天的業(yè)務(wù)中,還可以采用模仿聊天窗口的方式??傊?,在表示層的展示方式是豐富多樣的,完全依據(jù)業(yè)務(wù)場景的需要靈活的定制。

2 結(jié)束語

在B/S架構(gòu)中通過客戶端瀏覽器的定時刷新來定時向服務(wù)器請求新數(shù)據(jù)的數(shù)據(jù)推送機制,在某呼叫中心的應(yīng)用中,不僅實現(xiàn)了話務(wù)系統(tǒng)實時告警信息及時傳遞到坐席客戶端的功能,同時向坐席提供了模擬即時聊天的消息傳遞機制。經(jīng)過,500名坐席同時在線并發(fā)使用的實際檢驗,不僅能滿足話務(wù)系統(tǒng)的實時性要求,同時也滿足大規(guī)模并發(fā)的性能要求,在實際應(yīng)用中取得了良好的效果,對其它有類似業(yè)務(wù)場景的應(yīng)用系統(tǒng)可以借鑒。

參考文獻(xiàn):

[1] Jonathan Chaffer, Karl Swedberg. jQuery基礎(chǔ)教程 [M]. 李松峰,譯. 3版.北京:人民郵電出版社,2012.

[2] Bear Bibeault ,Yehuda Katz. jQuery實戰(zhàn) [M]. 三生石上,譯.2版.北京:人民郵電出版社,2012.

[3] Harwani B M. jQuery攻略[M]. 侯伯薇,陳寧,譯.北京:人民郵電出版社,2010.

[4] 弗蘭納根. JavaScript權(quán)威指南[M]. 淘寶前端團(tuán)隊,譯.6版.北京:機械工業(yè)出版社,2012.

[5] Zakas N C. JavaScript高級程序設(shè)計[M]. 李松峰,曹力,譯. 3版.北京:人民郵電出版社,2012.

[6] 李剛.瘋狂Ajax講義 [M]. 3版.北京:電子工業(yè)出版社,2013.

[7] 高洪巖.至簡SSH:精通Java Web實用開發(fā)技術(shù):Struts+Spring+Hibernate[M]. 北京:電子工業(yè)出版社,2009.

[8] 蔣衛(wèi)祥,朱利華,閭楓.J2EE案例開發(fā)教程[M]. 北京:化學(xué)工業(yè)出版社,2011.

尉氏县| 德庆县| 湖南省| 南溪县| 新乡县| 苍南县| 双江| 莱芜市| 专栏| 淮阳县| 昌江| 漳平市| 益阳市| 始兴县| 米脂县| 军事| 沧源| 中阳县| 临漳县| 额尔古纳市| 廉江市| 定襄县| 武隆县| 新巴尔虎右旗| 丰宁| 富顺县| 临汾市| 高雄市| 濮阳市| 白山市| 都江堰市| 芜湖市| 林芝县| 东辽县| 海口市| 措勤县| 津南区| 调兵山市| 沈阳市| 浑源县| 竹北市|