劉 焱,劉甫迎
(成都電子機械高等??茖W校 計算機工程系,成都 611730)
基于Android的網絡新聞應急管理系統(tǒng)的研究
劉 焱,劉甫迎
(成都電子機械高等??茖W校 計算機工程系,成都 611730)
通過論述網絡新聞應急管理系統(tǒng)(FoxNews)的功能、特點,討論其關鍵技術,最終實現了該系統(tǒng)的研制,給出了實現的關鍵程序。經試運行后表明,FoxNews系統(tǒng)可以實現基于Android面向消息的中間件(MOM)技術的對手持移動終端等遠程信息的推送、基于Android的手持終端等信息的接收和當地與情新聞信息及數字媒體數據的上傳。
網絡新聞應急系統(tǒng);面向消息的中間件;應急信息推送;Android;Oracle數據庫;Java EE規(guī)范結構
當我國的經濟改革取得舉世矚目的巨大成就,改革進入深層次、轉型時期時,及時掌握與情已成為建設和諧社會的需要。將與情以網絡新聞應急信息的形式及時推送到各級領導的使用終端指揮處理,對維護社會穩(wěn)定不無意義。FoxNews管理系統(tǒng)就是我們參與定制的一套針對各地黨政機關、企事業(yè)單位進行信息收集、信息編排、信息管理、信息推送、信息發(fā)布等功能的綜合性質的網絡新聞應急管理平臺系統(tǒng)。其可通過人工采集或者自動采集的信息,將與情及時推送到上萬個桌面終端、數千個手持終端、上萬個政府外掛終端。由于國內還未見同類系統(tǒng)、且意義重大,故此系統(tǒng)的開發(fā)已作為緊急任務來完成。
FoxNews網絡新聞應急管理系統(tǒng)是基于廣域網范圍設計的綜合性系統(tǒng),其主要功能分為客戶端系統(tǒng)和中心管理系統(tǒng)2個構成部分(共10個系統(tǒng)組成)。前者主要包括:基于Android的桌面終端應急信息管理系統(tǒng)、基于Android的手持終端應急信息管理系統(tǒng)、基于Android的外掛終端應急信息管理系統(tǒng);后者主要包括:基于Web技術的智能網絡新聞信息釆集系統(tǒng)、基于Web技術的新聞信息工作流程管理系統(tǒng)、基于Web技術的新聞信息內容倉庫管理系統(tǒng)、基于Web技術的新聞信息編排管理系統(tǒng)、基于Web技術的新聞信息后臺管理系統(tǒng)、基于Web技術的客戶管理及基于Android的信息推送系統(tǒng)。
本系統(tǒng)使用了Android、Linux平臺和Oracle數據庫等先進技術,很好地支持了Java EE規(guī)范結構。其人機交互能力強、界面友好、速度快,具有系統(tǒng)的幫助信息,便于廣大用戶使用。設置了用戶權限管理,可向不同的用戶或用戶組(例如常委或者非常委)權限推送不同的信息內容,保證了系統(tǒng)安全以及簽核安全。
本系統(tǒng)適用于各地黨政機關、企事業(yè)單位與情與新聞應急信息的管理和推送,具有廣闊的市場前景和社會效益。

圖1 系統(tǒng)體系結構示意圖
整個系統(tǒng)的體系結構示意圖如圖1。
本系統(tǒng)使用高版本Oracle DBMS,以實現集群、負載均衡和高可用性。包括多個數據服務器,例如,數據服務器資源:用于系統(tǒng)數據庫,以及大量文件存放的服務器;系統(tǒng)應用服務器資源:用于部署基于流程系統(tǒng)的服務;發(fā)布服務器資源:用于向客戶端推送信息及接收客戶端查詢;認證的服務器資源:用于提供DID及MID的身份認證和安全認證;狀態(tài)監(jiān)控的服務器資源:用于監(jiān)控DID及MID的狀態(tài)和接收反饋信息等。
系統(tǒng)流程:Web客戶終端(即本地終端)使用服務器n(即系統(tǒng)應用服務器——后臺管理服務器)進行信息收集、信息編排、工作流程管理審批后,將之存入數據庫服務器的中心數據庫,并由服務器1(發(fā)布服務器)根據不同權限將推送到Android桌面終端、Android手持終端MID、遠程外掛終端DID3類應用客戶終端。系統(tǒng)進行了用戶權限(包含身份認證、安全認證)、工作量察看(日志)等后臺管理,還進行了新聞信息內容倉庫管理和終端狀態(tài)監(jiān)控的管理。另外,Android手持終端MID用戶也可將當地與情與新聞(文章、圖片、視頻)上傳至數據庫服務器用于信息編排,經工作流程管理審批后發(fā)布。
盡管Java EE是基于Java的,但是Web應用體系結構卻不只限于使用Java組件。對于某一層的組件而言,只要能提供明確定義的接口且可以進行互操作通信,就可以使用Java之外的語言實現,如圖1所示的前端用戶便使用了Android,后臺中心管理系統(tǒng)使用了ASP.Net+C#。一個用C#語言或者Android實現的客戶端應用可訪問一個用Java實現的Web服務。Web服務接口在客戶端和Web服務之間提供了定義良好的接口??梢杂萌魏我环N支持發(fā)起HTTP請求的語言來實現客戶端。例如,用Android語言編寫客戶端程序,然后由Java編寫EJB;客戶端向應用服務器發(fā)送符合格式的Web服務請求,Java EE應用服務器運行EJB來為客戶端提供服務,本系統(tǒng)體系結構很好地支持和體現了這類Java EE規(guī)范。
研發(fā)的任務之一是建立一個系統(tǒng)使之可以根據權限通過系統(tǒng)的推送技術,把要聞、每日輿情、突發(fā)事件發(fā)給上萬個遠程桌面終端。新聞中心產生上述消息,所有消息都保存在一個中心數據庫中。這實際上是在新聞數據中心及其遠程桌面終端之間的數據流,本系統(tǒng)設計一種方案,使這種數據傳輸處理更為高效。
就推送信息而言,數據流是單向的,即從一個源到多個目標。新聞數據中心希望確保輿情等消息最終會送達每個終端,因此,可以稍后再得到相應的確認(如果存在確認的話)。與交互式Web應用不同的是,人本身不會在系統(tǒng)間傳輸這些消息。實際上,整個處理都是通過1個生產應用(新聞中心的推送消息應用)和下面的使用應用之間的通信完成。這種解決方案只涉及到2個應用相互通信,而沒有任何交互式用戶。2個應用之間的中間消息服務往往可以加速集成過程,因為它能夠使2個系統(tǒng)通過1個公開的API很輕松地實現數據傳輸。更重要的是,基于消息,使集成技術人員不用花太多時間來討論應用API的調整、中間件技術和其他一些問題。
1)PTP與Pub/Sub相結合的消息服務模型
當前,CORBA,DCOM,RMI等RPC中間件技術已廣泛應用于各個領域。但是,這些技術也存在局限性:①同步通信:客戶發(fā)出調用后,必須等待服務對象完成處理并返回結果后才能繼續(xù)執(zhí)行;②客戶和服務對象的生命周期緊密耦合:客戶進程和服務對象進程都必須正常運行,如果由于服務對象崩潰或者網絡故障導致消息推送不可達,客戶會接收到異常;③點對點通信:客戶的一次調用只發(fā)送給某個單獨的目標對象。
面向消息的中間件(Message Oriented Middleware,MOM)較好地解決了以上問題。發(fā)送者將消息發(fā)送給消息服務器,消息服務器將消息存放在若干隊列中,在合適的時候再將消息轉發(fā)給接收者。這種模式下,發(fā)送和接收是異步的,發(fā)送者無需等待;二者的生命周期未必相同:發(fā)送消息的時候接收者不一定運行,接收消息的時候發(fā)送者也不一定運行;一對多通信:對于一個消息可以有多個接收者。
消息服務是旨在統(tǒng)一各種MOM系統(tǒng)接口的規(guī)范,它包含點對點(Point to Point,PTP)和發(fā)布/訂閱(Publish/Subscribe,Pub/Sub)2種消息模式,提供可靠消息傳輸、事務和消息過濾等機制。
①點對點模式:
點對點模型應用于一個或多個組件(發(fā)布者)僅僅給一個組件收件人(接收者)發(fā)送消息的情形。這種模型是基于消息隊列概念的:發(fā)送者把消息發(fā)送到隊列中,接收者從該隊列中讀取消息。在點對點模型中,相同的隊列上可能存在多個接收者,但是MOM只給其中一個傳遞消息。給哪一個傳遞消息依賴于MOM的實現。這種方式適用于發(fā)送方和接收方為一對一的情形。
②發(fā)布—訂閱模式:
發(fā)布—預訂模型應用于一個或多個組件(發(fā)布者)給一個或多個組件收件人(預訂者)發(fā)送消息的情形。這種特定的模型是基于消息主題(Message Topic)概念的:發(fā)表者把消息發(fā)送到某個主題中,而該特定主題的預訂者接收這些消息,如圖2所示。這種方式適用于一對多進行信息發(fā)布的場合。

圖2 發(fā)布/預約消息模型
筆者研發(fā)的新聞信息應急管理平臺消息推送系統(tǒng),采用PTP與Pub/Sub相結合的消息服務模型:個別重要領導干部客戶采用PTP模式推送消息;權限相同的組(常委、非常委或者地區(qū)等)采用Pub/Sub模式推送消息。
2)消息服務分組推送命名規(guī)則
為了區(qū)分用戶權限、避免混淆,在消息服務分組推送時,采用如下命名規(guī)則:
按地區(qū)分組:以地市名稱每個字第一個的漢語拼音的組成(大寫)
來命名,加上業(yè)務系統(tǒng)名稱縮寫,再加上DQ,連接符用“.”。例如:成都(CD.SCNS.DQ)、綿陽(MY.SCNS.DQ)、德陽(DY.SCNS.DQ)等。
按職能范圍分組:以職位名稱每個字第一個的漢語拼音組成(大寫)+應用名稱(SCNS)再加上ZW來命名,連接符用“.”。例如:常委(CW.SCNS.ZW)、局級(JJ.SCNS.ZW)、普通(PT.SCNS.ZW)。
3)消息格式設置
消息格式按照應用要求存儲不同的序列化對象。本項目OjectMessage存儲對象為List<Map〉對象,List的每個元素為一個Map對象,每個Map對象使用鍵值進行存儲,鍵為數據庫表的字段名。例如:

上述消息格式可以攜帶字串、數據結構、二進制內容(文本、文件、聲音、圖像),適用于多變的數據。
本系統(tǒng)核心對象分別是用戶界面(FoxNews_MainUI)、消息接收器(FoxNews_MassageReceiver)和數據處理器(FoxNews_DataRecord);輔助對象有配置管理對象(FoxNews_Configueration)和數據庫持久化代理(FoxNews_DaoUtil)。業(yè)務類 FoxNews_DataRecord和 FoxNews_MassageReceiver分別實現接口 Job和MassageListener。數據處理器作為M,用戶界面作為V,消息接收器作為C,形成C/S結構的MVC模式。
本系統(tǒng)(平板終端)的關鍵技術是開發(fā)專用的基于Android的消息服務客戶端。Android是Google與其他33家手機制造商(包含摩托羅拉、宏達電、三星、LG)、手機晶片供應商、軟硬件供應商、電信業(yè)者所聯(lián)合組成的開放手持裝置聯(lián)盟(Open Handset Alliance)于2007年發(fā)布的開放手機軟硬件平臺。Android的推出影響了整個移動操作系統(tǒng)行業(yè)的開發(fā)規(guī)則,近年來已成了取代先前諾基亞及其所控制的移動操作系統(tǒng)Symbian占統(tǒng)治地位的新星。本系統(tǒng)(平板終端)使用2011年推出的新版Android3.0,開發(fā)了基于Android的消息服務客戶端,當這種專用的客戶端后臺線程接收到消息時,將調用監(jiān)聽模塊的方法。此方法的實現必須快速地返回,不應做任何不必要的操作。程序不在此方法中接收或處理信息,它只激發(fā)業(yè)務處理模塊的線程。FoxNews_MessageReceiver作為MVC的Controller,在接收到消息時,負責把消息傳遞給業(yè)務處理類FoxNews_DataRecord的實例處理消息數據,在業(yè)務處理類完成并返回結果后,調用FoxNews_MainUI的實例Mywindow顯示處理過程和結果。
正在試用的FoxNews(平板終端)既有先進性又有實用性,適用于各地黨政機關、企事業(yè)單位與情與新聞應急信息的管理和推送,必將得到進一步的推廣,為維護社會穩(wěn)定作出貢獻。
[1]劉甫迎,劉焱.Android移動編程實用教程[M].北京:電子工業(yè)出版社,2011.
[2]劉甫迎,饒斌,鄭顯舉,等.Java EE Web編程技術教程[M].北京:電子工業(yè)出版社,2010.
[3]劉甫迎,劉光會,王蓉.C#程序設計教程[M].2版.北京:電子工業(yè)出版社,2008.
[4]劉甫迎,劉枝盛,王蓉.Web編程實用技術教程(ASP.NET+C#)[M].北京:高等教育出版社,2009.
Study and Implementation of FoxNews based on Android Application
LIU Yan and LIU Fuying
(Department of Computer Engineering,Chengdu Electromechanical College,Chengdu 611730,China)
This paper discusses the function,characteristics,and key technologies of FoxNews(network news emergency management system).The realizations of the key programs are given.The test running shows that the FoxNews system can realize the pushing,receiving,and uploading of information from Android-based handheld terminals.
FoxNews;MOM;pushing News emergency;Android;Oracle;Java EE
TP311
A
1008-5440(2011)04-0026-04
2011-11-07
劉焱(1984-),女(漢族),重慶人,助教,研究方向:數字媒體技術、計算機軟件。
劉甫迎(1948-),男(漢族),重慶人,教授,國家級教學名師,研究方向:計算機軟件、數據庫。