江曉東
(浙江工業(yè)大學(xué)信息工程學(xué)院,浙江 杭州 310014)
網(wǎng)上拍賣是電子商務(wù)系統(tǒng)中重要的一個組成部分,目前最大的問題就是:與顧客通信的方法要么通過 Web頁面快速和單向地通信,要么就是通過電子郵件雙向和緩慢地通信。這兩種方法都不是真正實(shí)時交互的。如果需要獲得即時響應(yīng),大多數(shù)企業(yè)只能依賴于電話。為了解決即時響應(yīng)問題,本文提出一種方案,把基于XML的源代碼開放的即時消息Jabber和相關(guān)的拍賣網(wǎng)絡(luò)服務(wù)結(jié)合起來,利用目前廣泛使用的即時消息工具作為網(wǎng)上拍賣的客戶端,將即時消息的快速雙向的特點(diǎn)融入到網(wǎng)上拍賣系統(tǒng)中去。
選擇Jabber是本方案的特點(diǎn):首先Jabber的服務(wù)端和客戶端都是源代碼開放的,同時Jabber可以和其他即時通訊工具通訊。其次,Jabber擁有豐富的服務(wù)端開發(fā)組件庫,開發(fā)者可以構(gòu)建基于Jabber的應(yīng)用程序。第三,Jabber協(xié)議以XML形式來描述傳遞的消息內(nèi)容,用戶的存在狀態(tài)和用戶標(biāo)示的。
從本質(zhì)上講,Jabber協(xié)議和服務(wù)結(jié)構(gòu)是建立在多地址之間的XML文檔內(nèi)容的概念上的。作為核心,Jabber是一個既支持外部客戶端又支持內(nèi)部或外部服務(wù)的XML消息轉(zhuǎn)換器。因此,基于Jabber的網(wǎng)上拍賣方案設(shè)計(jì)中的關(guān)鍵表現(xiàn)在這三個方面:①網(wǎng)上拍賣(競拍人,競拍商品和競拍系統(tǒng)結(jié)果)中不同業(yè)務(wù)邏輯的數(shù)據(jù)之間的傳遞;②使用Jabber服務(wù)端組件庫對各個即時消息客戶端信息轉(zhuǎn)換為SOAP可以傳輸?shù)男问?;③把用戶輸入的自然語言轉(zhuǎn)換成機(jī)器可以理解的XML形式表達(dá)。
2.1 Jabber的框架實(shí)現(xiàn)
Jabber系統(tǒng)包括用戶端和服務(wù)器端,在Jabber里,用戶端叫做節(jié)點(diǎn),服務(wù)器端分三部分:主機(jī)(host)和Jabber的用戶端軟件。主機(jī)包括服務(wù)器(server)和網(wǎng)關(guān)(gateway)。Jabber的用戶端軟件非常簡單,只要它能和服務(wù)器建立TCP通道,而且能夠理解Jabber消息即可。
2.2 jabber協(xié)議
2.2.1 JID Jabber協(xié)議首先通過JID的命名規(guī)則從名字上對整體進(jìn)行統(tǒng)一。Jabber框架中把所包含的節(jié)點(diǎn),服務(wù)器,網(wǎng)關(guān),外部服務(wù)器,外部客戶端統(tǒng)稱為JID.一個完整的JID的形式為:[node@]domain[/resource] [參考RFC2779]。
2.2.2 XMPP(eXtensible Messaging and Presence Protocol)XML和即時消息結(jié)合的產(chǎn)物,是人們在使用的過程中對即時消息達(dá)成的一項(xiàng)共識。XML的結(jié)構(gòu)化數(shù)據(jù)的特點(diǎn)決定了整個jabber結(jié)構(gòu)的功能能夠被擴(kuò)展并且能夠傳遞任何結(jié)構(gòu)化的數(shù)據(jù)。最直接的成果就是利用XML制定了表示即時和感知的XMPP(RFC2779)協(xié)議,在那里將即時消息的特點(diǎn)和相應(yīng)功能作為一種標(biāo)準(zhǔn)固化下來。
2.3 Jabber SDK
Jabber SDK分為兩種類型:一種是內(nèi)部組件,是以C語言編寫的,通過調(diào)用核心服務(wù)代碼來訪問內(nèi)部的數(shù)據(jù);相對于前面的就是外部組件,這類組件可以以任何形式的語言編寫,與核心服務(wù)器通過TCP連接,使用Jabber XML API進(jìn)行交流。目前絕大部分的二次開發(fā)都是基于外部組件的。
2.4 SOAP 協(xié)議
SOAP定義了如何交換類型和具有結(jié)構(gòu)的信息,它是使用XML作為封裝信息的標(biāo)準(zhǔn)。使用XML作為封裝和交換信息的標(biāo)準(zhǔn),SOAP可以在各種不同的平臺中使用,只要不同的平臺支持并且能夠解析和處理SOAP的封包。
2.5 WSDL (Web Services Description language,網(wǎng)絡(luò)服務(wù)描述語言)是一種用來描述網(wǎng)絡(luò)服務(wù)的XML格式的語言。它抽象描述操作以及處理過程,然后綁定到特定的網(wǎng)絡(luò)或傳輸協(xié)議以及消息格式。
網(wǎng)上拍賣的功能模塊主要包含了這三方面:第一,競拍人的登記和管理;第二,競拍商品的登記和管理;第三,競拍系統(tǒng)和競拍情況報告。
3.1 功能方案圖
3.2 方案說明
本方案的實(shí)質(zhì)是基于Jabber服務(wù)端的應(yīng)用開發(fā)。
①從客戶端來看,首要的好處便是無需進(jìn)行客戶端的開發(fā)。由圖可見,非Jabber即時消息的客戶端連接到JCP(Jabber Communication platform)都是以各自協(xié)議的數(shù)據(jù)形式傳遞到JCP。而對這些非XML格式的消息進(jìn)行轉(zhuǎn)換是Jabber服務(wù)器內(nèi)部專門網(wǎng)關(guān)代理負(fù)責(zé)處理的。
②JCP(Jabber communication platform)是處理所有傳入和傳出信息的中心平臺。從消息處理過程來看,主要有接受數(shù)據(jù),內(nèi)部傳遞,載入數(shù)據(jù)和連接過程;外加的功能模塊主要涵蓋了注冊模塊,過濾模塊,代理轉(zhuǎn)換模塊等等。
③服務(wù)端類庫在整個Jabber服務(wù)端開發(fā)中起著承上啟下的銜接作用。
服務(wù)器端類庫(Muse API)對JCP進(jìn)行連接,接著在連接到Jabber服務(wù)器后,可以根據(jù)Muse API的相關(guān)接口對Jabber Server進(jìn)行操作,主要分為連接服務(wù),用戶服務(wù),表示在線狀態(tài)服務(wù),好友名單服務(wù),聊天室服務(wù),客戶端服務(wù)和服務(wù)端服務(wù)。服務(wù)端類庫調(diào)用web服務(wù)代理類,和遠(yuǎn)程的服務(wù)內(nèi)容進(jìn)行交互數(shù)據(jù)。WSDL和代理類的關(guān)系是后者是前者的衍生物,利用WSDL可以告訴其他應(yīng)用程序:如何發(fā)現(xiàn)一個Web服務(wù)等。要通過網(wǎng)絡(luò)服務(wù)自動找到相關(guān)的拍賣服務(wù),首先編寫相關(guān)的WSDL是必不可少的。WSDL的作用是把所描述的網(wǎng)絡(luò)服務(wù)和具體的實(shí)現(xiàn)部分綁定在一起。
將即時消息工具結(jié)合到電子商務(wù)的應(yīng)用之中是一個大的趨勢。Jabber的源代碼開放還是具有一定的局限性的。首先,如果某個非Jabber即時消息的協(xié)議不公開,那么所謂的跨協(xié)議的特點(diǎn)也就不復(fù)存在了;其次,從安全性角度考慮,這個方案在實(shí)現(xiàn)中還需要進(jìn)一步加強(qiáng)。
[1]www.jabber.org Jabber官方網(wǎng)站
[2]www.echomine.com Muse API網(wǎng)站
[3]Mark Birbeck等.XML高級編程[J].北京:機(jī)械工業(yè)出版社.
[4]李維.Delphi 6/Kylix 2 SOAP/Web service程序設(shè)計(jì)篇[M].北京:機(jī)械工業(yè)出版社.
[5]Jason Kitchen.Jabber away with instant messaging[EB/OL].www.javaworld.com July 26,2002.
[6]Jabber for Web services:Extensible Messaging to Executable Internet.a white paper,January