摘要:本文對(duì)即時(shí)通訊系統(tǒng)進(jìn)行剖析,從系統(tǒng)客戶端與系統(tǒng)服務(wù)器兩個(gè)方面探析設(shè)計(jì)與實(shí)現(xiàn),為相關(guān)研究人員提供理論參考依據(jù),加大研究力度。
關(guān)鍵詞:設(shè)計(jì)與實(shí)現(xiàn) 即時(shí)通訊系統(tǒng) 客戶端
前言
即時(shí)通訊(IM)主要是在互聯(lián)網(wǎng)中接收與發(fā)送各種消息的業(yè)務(wù)。該系統(tǒng)的出現(xiàn)拓展了人們生活交流空間。
1.即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
當(dāng)客戶和客戶進(jìn)行通訊時(shí),需要將信息發(fā)送到服務(wù)器上,服務(wù)器對(duì)信息進(jìn)行處理后發(fā)到另一個(gè)客戶端上。其系統(tǒng)的拓?fù)浣Y(jié)構(gòu)如下圖:
圖1 系統(tǒng)的拓?fù)浣Y(jié)構(gòu)
1.1設(shè)計(jì)客戶端及實(shí)現(xiàn)
1.1.1 客戶端的設(shè)計(jì)
本文的客戶端使用Google作為承載設(shè)備,其框架選擇了Android系統(tǒng)架構(gòu),它主要分為5個(gè)組成部分,以下對(duì)這幾個(gè)組成部分略作闡述。
1)Linux Kernel;Android系統(tǒng)架構(gòu)是在Linux 2.6所提供的核心服務(wù);而Linux Kernel則是一個(gè)抽象層,隱藏硬件上的細(xì)節(jié)給上層服務(wù)。
2)Android Runtime;Android構(gòu)架中存在核心庫(kù)集合,能夠提供各種JAVA編程的語(yǔ)言核心功能。
3)Libraries;Android中也有C/C++庫(kù)集合,它是經(jīng)過(guò)Android中的使用程序給開(kāi)發(fā)者提供使用。
4)Application Framework;Android能夠?yàn)殚_(kāi)發(fā)者提供新穎與豐富的應(yīng)用程序。開(kāi)發(fā)者可隨心所欲使用訪問(wèn)位置信息、硬件優(yōu)勢(shì)及后臺(tái)服務(wù)。
5)Applications;這是核心應(yīng)用程序的集合,包含了SMS程序、地圖、日歷及瀏覽器等。
1.1.2 客戶端的實(shí)現(xiàn)
客戶端使用了MVC設(shè)計(jì)模式,把數(shù)據(jù)界面、模型及邏輯合理分離,進(jìn)而展示出客戶端的條理清晰,進(jìn)一步改善與擴(kuò)充功能。
當(dāng)用戶填寫(xiě)好注冊(cè)信息點(diǎn)擊按鈕成功后,會(huì)返回6位數(shù)的ID號(hào),這是用戶登錄憑證。如下圖:
圖2注冊(cè)界面
實(shí)現(xiàn)客戶端的注冊(cè)代碼較多,本文就不一一列出,列舉以下代碼作為示范:
public class RegistView extends Dialog implements OnClickListener{
private Context context;
public RegistView(Context context) {
super(context);
this.context = context;
}
……
2.2設(shè)計(jì)服務(wù)器及實(shí)現(xiàn)
1)服務(wù)器的設(shè)計(jì)
本文設(shè)計(jì)服務(wù)器中的承載平臺(tái)使用了Google App Engine。這種程序極易進(jìn)行構(gòu)建與維護(hù),且Google App Engine還能夠支持多種編寫(xiě)語(yǔ)言應(yīng)用程序的運(yùn)行,以及提供專(zhuān)用Python 運(yùn)行環(huán)境。在該構(gòu)架中,客戶使用哪種資源就要為哪種資源而付費(fèi),無(wú)設(shè)置成本,也無(wú)重復(fù)費(fèi)用,如果客戶成為了付費(fèi)用戶,其各種配額還會(huì)相應(yīng)提升,完全超過(guò)免費(fèi)水平的范圍。
2)服務(wù)器的實(shí)現(xiàn)
對(duì)于服務(wù)器實(shí)現(xiàn)來(lái)說(shuō),主要有服務(wù)器的用戶組注冊(cè)、用戶登錄、在線服務(wù)幾大板塊。該模塊產(chǎn)生出6位數(shù)的ID,還要從信息庫(kù)中搜索沒(méi)有相同的ID號(hào),之后對(duì)注冊(cè)數(shù)據(jù)包進(jìn)行解析,生成用戶對(duì)象,并將這些信息返回到客戶端。如下圖:
圖3注冊(cè)模塊類(lèi)圖
實(shí)現(xiàn)服務(wù)器的注冊(cè)代碼較多,本文就不一一列出,列舉以下代碼作為示范:
public void regist(HttpServletRequest req, HttpServletResponse resp)
{String getPack = (String) req.getAttribute(\"pack\");
String newPack = 1;
ParseInterface parse = new ParseImpl();
ProtocolPackageInterface ppi = new ProtocolPackageImpl( );
PersistenceManager pm = PMF.get().getPersistenceManager( );
……}
3.結(jié)束語(yǔ)
總之,本設(shè)計(jì)通過(guò)實(shí)現(xiàn)來(lái)看是具有使用價(jià)值,但是因設(shè)計(jì)自身有一些Bug導(dǎo)致不穩(wěn)定。因此,還要對(duì)即時(shí)通訊系統(tǒng)設(shè)計(jì)進(jìn)一步優(yōu)化、加強(qiáng),完善漏洞,讓該即時(shí)通訊系統(tǒng)具有使用價(jià)值。
參考文獻(xiàn):
[1]楊文志.Google Android程序設(shè)計(jì)指南[M].電子工業(yè)出版社.2009年
[2]余志龍. Google Android SDK開(kāi)發(fā)范例大全(第2版)[M].人民郵電出版社,2010年
[3]楊豐盛. Android應(yīng)用開(kāi)發(fā)揭密[M]. 機(jī)械工業(yè)出版社,2010年
[4]郭宏志. Android應(yīng)用開(kāi)發(fā)詳解[M]. 電子工業(yè)出版社,2010年