本發(fā)明涉及即時(shí)通訊服務(wù)器領(lǐng)域,尤其涉及一種基于Openfire服務(wù)器的業(yè)務(wù)分離系統(tǒng)和分離方法。
背景技術(shù):
即時(shí)通訊技術(shù)(IM,Instant Messaging)廣泛應(yīng)用于通訊領(lǐng)域。利用通訊網(wǎng)絡(luò)系統(tǒng)(CNS,Communication Network System)和通訊協(xié)議,能夠快速的進(jìn)行信息交流。實(shí)時(shí)的基于WEB的即時(shí)消息傳輸平臺(tái)(Openfire)是一實(shí)現(xiàn)XMPP協(xié)議的開源項(xiàng)目,用它部署的即時(shí)通訊服務(wù)器可以給終端提供通訊服務(wù)。Openfire為了實(shí)現(xiàn)部署的簡(jiǎn)單化,將即時(shí)通訊所需的所有業(yè)務(wù)服務(wù)都實(shí)現(xiàn),這樣導(dǎo)致一些業(yè)務(wù)和Openfire黏合的太緊,不利于實(shí)際的開發(fā)和使用。
Openfire不僅完美的實(shí)現(xiàn)了XMPP協(xié)議,還完成了包括用戶賬號(hào)提供、授權(quán)驗(yàn)證、花名冊(cè)管理、消息邏輯處理等等功能,這些功能原本是由具體的業(yè)務(wù)服務(wù)器去管理,Openfire實(shí)現(xiàn)這些功能后,導(dǎo)致第三方業(yè)務(wù)很難接入Openfire,可拓展性差,也難于管理和維護(hù)。
Openfire賬號(hào)管理功能提供對(duì)賬號(hào)基本的增、刪、改、查,如果有對(duì)賬號(hào)額外的功能需求,如賬號(hào)關(guān)聯(lián)等,就無法滿足。Openfire的授權(quán)驗(yàn)證接口缺少完善的驗(yàn)證接口,對(duì)于利用HTTP協(xié)議來實(shí)現(xiàn)的網(wǎng)絡(luò)請(qǐng)求驗(yàn)證,目前的Openfire無能為力。Openfire由于其完善的消息邏輯處理功能,不僅有消息的保存策略、消息的審計(jì)策略、還有消息的限制策略等等,大大的超出了Openfire作為一個(gè)即時(shí)通訊服務(wù)器的范疇,在一定程度上影響了其基本功能的處理。
事實(shí)上,Openfire目前的這些功能是系統(tǒng)資源沒必要的浪費(fèi),這些業(yè)務(wù)功能占用大量系統(tǒng)資源導(dǎo)致服務(wù)器性能下降,影響了其作為服務(wù)器的路由功能。在當(dāng)前的Openfire上進(jìn)行相關(guān)業(yè)務(wù)的開發(fā)和維護(hù)耗時(shí)耗力成本高昂,還存在功能上的隱患。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是針對(duì)上述現(xiàn)有技術(shù)存在的缺陷,提供一種基于Openfire服務(wù)器的業(yè)務(wù)分離系統(tǒng)和分離方法。
本發(fā)明提出的基于Openfire服務(wù)器的業(yè)務(wù)分離系統(tǒng)包括至少一個(gè)終端設(shè)備、多個(gè)業(yè)務(wù)服務(wù)器和至少一個(gè)Openfire服務(wù)器,所述的Openfire服務(wù)器設(shè)有多個(gè)功能接口,這些功能接口分別與各個(gè)業(yè)務(wù)服務(wù)器相關(guān)聯(lián),所述終端設(shè)備與各個(gè)業(yè)務(wù)服務(wù)器之間,以及所述終端設(shè)備之間均通過Openfire服務(wù)器進(jìn)行通訊。
所述終端設(shè)備向所述Openfire服務(wù)器發(fā)起業(yè)務(wù)請(qǐng)求,所述Openfire服務(wù)器將所述業(yè)務(wù)請(qǐng)求通過功能接口遞交給所述業(yè)務(wù)服務(wù)器進(jìn)行處理;所述業(yè)務(wù)服務(wù)器通過所述功能接口向所述Openfire服務(wù)器主動(dòng)發(fā)起推送和/或功能管理指令,所述Openfire服務(wù)器根據(jù)所述指令對(duì)所述終端設(shè)備完成推送和/或功能管理操作。
所述Openfire服務(wù)器和業(yè)務(wù)服務(wù)器組成一個(gè)可以自由拓展的系統(tǒng),各個(gè)業(yè)務(wù)服務(wù)器以功能接口的形式獨(dú)立分開。
所述的業(yè)務(wù)服務(wù)器包括:認(rèn)證授權(quán)服務(wù)器、賬戶管理服務(wù)器、和/或消息處理服務(wù)器、和/或花名冊(cè)管理服務(wù)器和其他的服務(wù)器。
本發(fā)明還提出一種基于Openfire服務(wù)器的業(yè)務(wù)分離方法,該方法從Openfire服務(wù)器抽象出多個(gè)功能接口,用于分別與各個(gè)業(yè)務(wù)服務(wù)器相關(guān)聯(lián);所述終端設(shè)備與各個(gè)業(yè)務(wù)服務(wù)器之間,以及所述終端設(shè)備之間均通過Openfire服務(wù)器進(jìn)行通訊。
在終端設(shè)備登入Openfire服務(wù)器的認(rèn)證實(shí)施例中,包括下列步驟:
步驟1.終端設(shè)備與Openfire服務(wù)器建立連接,打開一個(gè)會(huì)話;
步驟2.Openfire服務(wù)器向終端設(shè)備返回會(huì)話建立成功的信息;
步驟3.終端設(shè)備向Openfire服務(wù)器發(fā)起登錄請(qǐng)求,并攜帶賬號(hào)信息和唯一標(biāo)識(shí);
步驟4.Openfire服務(wù)器向賬戶管理服務(wù)器發(fā)送驗(yàn)證賬戶是否有效的請(qǐng)求;
步驟5.賬戶管理服務(wù)器對(duì)賬號(hào)信息和唯一標(biāo)識(shí)進(jìn)行驗(yàn)證,并將驗(yàn)證結(jié)果返回給Openfire服務(wù)器;
步驟6.Openfire服務(wù)器向終端設(shè)備發(fā)起授權(quán)所需的挑戰(zhàn);
步驟7.終端設(shè)備完成挑戰(zhàn),發(fā)送密文給Openfire服務(wù)器;
步驟8.Openfire服務(wù)器得到密文后,將其遞交給認(rèn)證授權(quán)服務(wù)器進(jìn)行認(rèn)證;
步驟9.如認(rèn)證通過,賬戶管理服務(wù)器將向Openfire服務(wù)器返回認(rèn)證結(jié)果;
步驟10.Openfire服務(wù)器標(biāo)記會(huì)話已經(jīng)授權(quán),初始化授權(quán)會(huì)話;
步驟11.Openfire服務(wù)器向終端設(shè)備返回登錄成功。
在所述終端設(shè)備推送消息的實(shí)施例中,包括下列步驟:
步驟1.第一終端向Openfire服務(wù)器發(fā)送消息;
步驟2.Openfire服務(wù)器向第一終端發(fā)送服務(wù)器回執(zhí);
步驟3.Openfire服務(wù)器攔截消息;
步驟4.Openfire服務(wù)器將消息遞交給消息處理服務(wù)器;
步驟5.消息處理服務(wù)器對(duì)消息進(jìn)行業(yè)務(wù)上的處理;
步驟6.消息處理服務(wù)器向Openfire服務(wù)器返回消息處理結(jié)果;
步驟7.消息處理服務(wù)器向Openfire服務(wù)器發(fā)送指令,使Openfire服務(wù)器將消息推送給第二終端;
步驟8.第二終端接收到消息后,向Openfire服務(wù)器返回已接收消息的回執(zhí);
步驟9.Openfire服務(wù)器將已接收消息的回執(zhí)發(fā)送給第一終端;
步驟10.Openfire服務(wù)器向消息處理服務(wù)器遞交推送結(jié)果。
所述終端設(shè)備推送消息的過程還包括所述第二終端用戶閱讀所述消息后,第二終端向Openfire返回消息已閱讀的回執(zhí),Openfire將所述消息已閱讀的回執(zhí)返回給所述第一終端。
在所述終端設(shè)備請(qǐng)求Openfire服務(wù)器進(jìn)行花名冊(cè)管理的實(shí)施例中,包括下列步驟:
步驟1.終端設(shè)備向Openfire服務(wù)器發(fā)起花名冊(cè)管理請(qǐng)求并攜帶花名冊(cè)信息;
步驟2.Openfire服務(wù)器將所述請(qǐng)求及花名冊(cè)信息遞交給所述花名冊(cè)管理服務(wù)器;
步驟3.花名冊(cè)管理服務(wù)器處理所述花名冊(cè)管理請(qǐng)求;
步驟4.花名冊(cè)管理服務(wù)器返回處理結(jié)果給Openfire服務(wù)器;
步驟5.Openfire服務(wù)器返回處理結(jié)果給終端設(shè)備。
其中,所述花名冊(cè)管理請(qǐng)求包括花名冊(cè)信息的增加、刪除、修改和查詢。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
(1)抽離了Openfire服務(wù)器的業(yè)務(wù)處理功能,從中抽象出業(yè)務(wù)功能接口與相應(yīng)的業(yè)務(wù)服務(wù)器相關(guān)聯(lián)處理相關(guān)業(yè)務(wù),可拓展性強(qiáng)利于開發(fā)和維護(hù),可方便的供第三方業(yè)務(wù)接入和對(duì)已有業(yè)務(wù)的拓展;
(2)利用認(rèn)證授權(quán)服務(wù)器對(duì)賬戶進(jìn)行驗(yàn)證,完善了Openfire服務(wù)器的賬戶驗(yàn)證功能;
(3)降低了系統(tǒng)資源占用率,大大提高了服務(wù)器性能;
(4)開發(fā)和維護(hù)成本低。
附圖說明
圖1為本發(fā)明系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為本發(fā)明終端設(shè)備請(qǐng)求Openfire服務(wù)器的用例圖;
圖3為本發(fā)明業(yè)務(wù)服務(wù)器請(qǐng)求Openfire服務(wù)器的用例圖;
圖4為本發(fā)明終端設(shè)備成功登錄Openfire服務(wù)器的時(shí)序圖;
圖5為本發(fā)明終端設(shè)備成功推送出消息的時(shí)序圖;
圖6為本發(fā)明增加花名冊(cè)信息的時(shí)序圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)的說明。
本發(fā)明提供的基于Openfire服務(wù)器的業(yè)務(wù)分離系統(tǒng),包括至少一個(gè)終端設(shè)備、多個(gè)業(yè)務(wù)服務(wù)器和至少一個(gè)Openfire服務(wù)器。Openfire服務(wù)器設(shè)有多個(gè)功能接口,這些功能接口分別與各個(gè)業(yè)務(wù)服務(wù)器相關(guān)聯(lián)。終端設(shè)備與各個(gè)業(yè)務(wù)服務(wù)器之間,以及終端設(shè)備之間均通過Openfire服務(wù)器進(jìn)行通訊。
本發(fā)明從Openfire服務(wù)器中將其已有的業(yè)務(wù)功能分離處理,并分別設(shè)置業(yè)務(wù)功能接口,通過各功能接口與各業(yè)務(wù)服務(wù)器相關(guān)聯(lián),組成一個(gè)自由可拓展的服務(wù)器系統(tǒng),各個(gè)業(yè)務(wù)服務(wù)器通過Openfire服務(wù)器的功能接口獨(dú)立分開,各自處理各自負(fù)責(zé)的業(yè)務(wù)。Openfire服務(wù)器不再處理具體的業(yè)務(wù),而只是作為一個(gè)路由器連接終端設(shè)備與各業(yè)務(wù)服務(wù)器,讓業(yè)務(wù)服務(wù)器通過Openfire服務(wù)器的路由功能處理實(shí)現(xiàn)終端設(shè)備的業(yè)務(wù)請(qǐng)求。
Openfire服務(wù)器和各業(yè)務(wù)服務(wù)器組成一個(gè)可以自由拓展的系統(tǒng),各個(gè)業(yè)務(wù)服務(wù)器以功能接口的形式獨(dú)立分開。
如圖1所示,在一實(shí)施例中,終端設(shè)備包括有第一、第二終端終備,分別與Openfire服務(wù)器通過TCP/IP協(xié)議建立連接。從Openfire服務(wù)器分離出并設(shè)置的功能接口有賬戶、認(rèn)證、花名冊(cè)、消息和推送,分別與賬戶管理服務(wù)器、認(rèn)證授權(quán)服務(wù)器、花名冊(cè)管理服務(wù)器和消息處理服務(wù)器等業(yè)務(wù)服務(wù)器相關(guān)聯(lián),分別用以使Openfire服務(wù)器與業(yè)務(wù)服務(wù)器配合實(shí)現(xiàn)終端設(shè)備請(qǐng)求的業(yè)務(wù)。其中消息和推送兩個(gè)功能接口均與消息處理服務(wù)器相關(guān)聯(lián)。
圖2是終端設(shè)備請(qǐng)求Openfire服務(wù)器的用例圖,終端設(shè)備直接與Openfire服務(wù)器中的登錄認(rèn)證、消息處理和花名冊(cè)管理用例相關(guān)聯(lián)。
圖3是業(yè)務(wù)服務(wù)器請(qǐng)求Openfire服務(wù)器的用例圖,業(yè)務(wù)服務(wù)器可主動(dòng)向Openfire服務(wù)器發(fā)起推送、會(huì)話管理和出席管理,向Openfire服務(wù)器發(fā)出指令進(jìn)行消息推送、會(huì)話管理或出席管理等功能操作。
終端設(shè)備可向Openfire服務(wù)器發(fā)起各用例相關(guān)的業(yè)務(wù)請(qǐng)求,Openfire服務(wù)器將終端設(shè)備發(fā)出的業(yè)務(wù)請(qǐng)求遞交給相關(guān)業(yè)務(wù)服務(wù)器,讓業(yè)務(wù)服務(wù)器對(duì)請(qǐng)求進(jìn)行具體的業(yè)務(wù)處理,并向Openfire服務(wù)器發(fā)送指令進(jìn)行消息推送和/或會(huì)話管理和/或出席管理等操作,若業(yè)務(wù)處理完成,業(yè)務(wù)服務(wù)器則會(huì)將處理結(jié)果通過Openfire服務(wù)器返回給終端設(shè)備。
本發(fā)明還提出了一種基于Openfire服務(wù)器的業(yè)務(wù)分離方法,包括:從Openfire服務(wù)器抽象出多個(gè)功能接口,用于分別與各個(gè)業(yè)務(wù)服務(wù)器相關(guān)聯(lián);終端設(shè)備與各個(gè)業(yè)務(wù)服務(wù)器之間,以及所述終端設(shè)備之間均通過Openfire服務(wù)器進(jìn)行通訊。
圖4為終端設(shè)備成功登錄Openfire服務(wù)器的時(shí)序圖,終端設(shè)備登入Openfire服務(wù)器的認(rèn)證過程包括下列步驟:
步驟S401.終端設(shè)備與Openfire服務(wù)器建立連接,使用XMPP協(xié)議打開一個(gè)會(huì)話;
步驟S402.Openfire服務(wù)器向終端設(shè)備返回會(huì)話建立成功的信息;
步驟S403.終端設(shè)備向Openfire服務(wù)器發(fā)起登錄請(qǐng)求,并攜帶賬號(hào)信息和唯一標(biāo)識(shí);
步驟S404.Openfire服務(wù)器向賬戶管理服務(wù)器發(fā)送驗(yàn)證賬戶是否有效的請(qǐng)求;
步驟S405.賬戶管理服務(wù)器對(duì)賬號(hào)信息進(jìn)行驗(yàn)證,并將驗(yàn)證結(jié)果返回給Openfire服務(wù)器;
步驟S406.Openfire服務(wù)器向終端設(shè)備發(fā)起授權(quán)所需的挑戰(zhàn);
步驟S407.終端設(shè)備完成挑戰(zhàn),發(fā)送密文給Openfire服務(wù)器;
步驟S408.Openfire服務(wù)器得到密文后,將其遞交給認(rèn)證授權(quán)服務(wù)器進(jìn)行認(rèn)證;
步驟S409.如認(rèn)證通過,賬戶管理服務(wù)器將向Openfire服務(wù)器返回認(rèn)證結(jié)果;
步驟S410.Openfire服務(wù)器標(biāo)記會(huì)話已經(jīng)授權(quán),初始化授權(quán)會(huì)話;
步驟S411.Openfire服務(wù)器向終端設(shè)備返回登錄成功的結(jié)果。
以上為賬戶一次性登錄成功的過程,賬戶登錄失敗包括兩種情況:賬戶驗(yàn)證失敗和密文認(rèn)證失敗。步驟405中,若賬戶驗(yàn)證未通過,賬戶管理服務(wù)器返回驗(yàn)證未通過的結(jié)果至Openfire服務(wù)器,Openfire服務(wù)器返回賬戶驗(yàn)證失敗結(jié)果至終端設(shè)備,登錄失?。徊襟E409中,若密文認(rèn)證未通過,則認(rèn)證授權(quán)服務(wù)器通過Openfire服務(wù)器返回密文認(rèn)證失敗的結(jié)果至終端設(shè)備,登錄失敗。
賬戶成功登錄后,所述終端即可通過標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議與其他終端用戶進(jìn)行即時(shí)通訊,在本實(shí)施例中,消息發(fā)送終端為第一終端,消息接收終端為第二終端,且第一終端必須為賬戶成功登錄的終端。
圖5為終端設(shè)備成功推送出消息的時(shí)序圖,具體過程包括下列步驟:
步驟S501.第一終端向Openfire服務(wù)器發(fā)送消息;
步驟S502.Openfire服務(wù)器向第一終端發(fā)送服務(wù)器回執(zhí);
步驟S503.Openfire服務(wù)器攔截消息;
步驟S504.Openfire服務(wù)器將消息遞交給消息處理服務(wù)器;
步驟S505.消息處理服務(wù)器對(duì)消息進(jìn)行業(yè)務(wù)上的處理;
步驟S506.消息處理服務(wù)器向Openfire服務(wù)器返回消息處理結(jié)果;
步驟S507.消息處理服務(wù)器向Openfire服務(wù)器發(fā)送指令,使Openfire服務(wù)器將消息推送給第二終端;
步驟S508.第二終端接收到消息后,向Openfire服務(wù)器返回已接收消息的回執(zhí);
步驟S509.Openfire服務(wù)器將已接收消息的回執(zhí)發(fā)送給第一終端;
步驟S510.Openfire服務(wù)器向消息處理服務(wù)器遞交推送結(jié)果。
其中,步驟S501還包括前置步驟:使用XMPP協(xié)議打開一個(gè)會(huì)話。第一終端通過該會(huì)話界面發(fā)送出消息。
在本實(shí)施例中,第二終端用戶閱讀消息后,第二終端將向Openfire返回消息已閱讀的回執(zhí),Openfire將該消息已閱讀的回執(zhí)返回給所述第一終端。
Openfire服務(wù)器的會(huì)話管理包括關(guān)閉會(huì)話、打開會(huì)話、掛起會(huì)話和會(huì)話解除授權(quán)等,出席管理包括對(duì)參與即時(shí)通訊終端的數(shù)據(jù)應(yīng)答管理。
上述第一終端向第二終端推送消息的過程同時(shí)體現(xiàn)了終端到終端的路徑和服務(wù)器到終端的路徑。
終端設(shè)備請(qǐng)求Openfire服務(wù)器進(jìn)行花名冊(cè)管理的過程包括下列步驟:
步驟1.終端設(shè)備向Openfire服務(wù)器發(fā)起花名冊(cè)管理請(qǐng)求并攜帶花名冊(cè)信息;
步驟2.Openfire服務(wù)器將花名冊(cè)管理請(qǐng)求及花名冊(cè)信息遞交給所述花名冊(cè)管理服務(wù)器;
步驟3.花名冊(cè)管理服務(wù)器處理所述花名冊(cè)管理請(qǐng)求;
步驟4.花名冊(cè)管理服務(wù)器返回處理結(jié)果給Openfire服務(wù)器;
步驟5.Openfire服務(wù)器返回處理結(jié)果給終端設(shè)備。
花名冊(cè)管理服務(wù)器是一個(gè)數(shù)據(jù)庫服務(wù)器,其中,花名冊(cè)管理請(qǐng)求包括花名冊(cè)信息的增加、刪除、修改和查詢,用戶可方便的管理通訊系統(tǒng)中的聯(lián)系人花名冊(cè)信息。
圖6為增加花名冊(cè)信息的時(shí)序圖,終端設(shè)備請(qǐng)求Openfire服務(wù)器增加花名冊(cè)信息的過程包括下列步驟:
步驟S601.終端設(shè)備向Openfire服務(wù)器發(fā)起增加花名冊(cè)信息的請(qǐng)求,并使用XMPP協(xié)議打開一個(gè)會(huì)話;
步驟S602.Openfire服務(wù)器返回會(huì)話建立成功的結(jié)果至終端設(shè)備;
步驟S603.終端設(shè)備輸入待添加的用戶信息,如用戶昵稱或ID等;
步驟S604.Openfire服務(wù)器將用戶信息提交至花名冊(cè)管理服務(wù)器;
步驟S605.花名冊(cè)管理服務(wù)器將用戶信息寫入數(shù)據(jù)庫;
步驟S606.花名冊(cè)管理服務(wù)器將成功增加花名冊(cè)信息的結(jié)果返回至Openfire服務(wù)器;
步驟S607.Openfire服務(wù)器將成功增加花名冊(cè)信息的結(jié)果返回至終端設(shè)備。
本實(shí)施例中,基于Openfire服務(wù)器的業(yè)務(wù)分離系統(tǒng)包括有登錄認(rèn)證、消息推送和花名冊(cè)管理等即時(shí)通訊系統(tǒng)的基本功能,本領(lǐng)域技術(shù)人員還可根據(jù)其他需求開發(fā)拓展其他業(yè)務(wù)功能,如賬戶的關(guān)聯(lián)等。
本發(fā)明通過從Openfire服務(wù)器中抽象出功能接口,通過功能接口與各業(yè)務(wù)服務(wù)器相關(guān)聯(lián),以實(shí)現(xiàn)即時(shí)通訊,終端發(fā)出的業(yè)務(wù)請(qǐng)求通過Openfire服務(wù)器遞交給業(yè)務(wù)服務(wù)器,業(yè)務(wù)服務(wù)器處理后將結(jié)果通過Openfire服務(wù)器的相關(guān)功能接口返回給Openfire服務(wù)器,Openfire服務(wù)器不再處理具體的業(yè)務(wù),只做消息或業(yè)務(wù)的路由,大大減小了Openfire服務(wù)器系統(tǒng)資源的占用率,提高了服務(wù)器性能和可拓展性,更利于即時(shí)通訊系統(tǒng)的開發(fā)和維護(hù),節(jié)約了時(shí)間和金錢成本。
上述實(shí)施例僅用于說明本發(fā)明的具體實(shí)施方式。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和變化,這些變形和變化都應(yīng)屬于本發(fā)明的保護(hù)范圍。