摘 要: 簡要介紹了消息中間件在數(shù)據(jù)交換" title="數(shù)據(jù)交換">數(shù)據(jù)交換中的應(yīng)用,,論述了消息中間件所面臨的挑戰(zhàn)及應(yīng)對措施:傳輸消息大小不受限制;同時支持Windows 2000/nt/98/ME等多種操作系統(tǒng),,并能通過配置充分發(fā)揮不同操作系統(tǒng)的性能,;實現(xiàn)消息隊列操作的回滾與提交,,使消息進行多級回執(zhí),;以COM形式提供MQ Clinent API。
關(guān)鍵詞: 數(shù)據(jù)交換 消息中間件 消息隊列 COM
計算機技術(shù)的不斷推陳出新,,帶來了信息化發(fā)展的新浪潮,,人們感受到了計算機及網(wǎng)絡(luò)技術(shù)所帶來的好處,于是對電子化,、信息化應(yīng)用的需求也越來越迫切,。信息技術(shù)以其強大的滲透力,深入到社會經(jīng)濟生活的各個方面,。在商業(yè)金融等領(lǐng)域,,電子數(shù)據(jù)交換作為一種新的商務(wù)手段正在被廣泛使用。
數(shù)據(jù)交換EDI(Electronic Data Interchange)是一種計算機應(yīng)用技術(shù),,根據(jù)事先達成的協(xié)議,,將信息按照一定的標(biāo)準(zhǔn)進行格式化處理,并把這些格式化的數(shù)據(jù),,通過計算機通信網(wǎng)絡(luò)在其計算機系統(tǒng)之間進行交換和自動處理,。作為計算機通信技術(shù)的一部分,EDI可以應(yīng)用于制造業(yè),、運輸業(yè),、零售業(yè)以及衛(wèi)生保健和政府部門等各種經(jīng)濟部門之中。
消息隊列中間件MOM(Message-Oriented Middleware)是一種特定的中間件,,它利用高效可靠的消息傳遞機制進行平臺無關(guān)的數(shù)據(jù)交流,,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)的集成。
1 數(shù)據(jù)交換的研究與應(yīng)用現(xiàn)狀
1.1 國際發(fā)展現(xiàn)狀及趨勢
西方發(fā)達國家已普遍采用EDI,。據(jù)統(tǒng)計,,1992年底世界上使用EDI的企業(yè)超過10萬家,95年達到40萬家,。美國早在60年代初期,,就在公路、鐵路,、海運和空運中應(yīng)用EDI,,而且每年還以100%的速度增長;西歐各國已將EDI應(yīng)用于汽車,、化工,、電子、運輸,、保險,、分銷零售業(yè)中;日本已在銷售,、貿(mào)易,、運輸,、和制造業(yè)中廣泛使用EDI;新加坡聲稱95%的貿(mào)易用EDI實現(xiàn),。據(jù)悉,,美國政府及歐洲共同體大部分國家的海關(guān)宣布,從1992年起,,采用EDI方式辦理海關(guān)業(yè)務(wù),,如不采用EDI方式,其手續(xù)將被推遲辦理,,或不再選為貿(mào)易伙伴,。
1996年,亞洲六個國家和地區(qū)(中國,、日本、印度,、馬來西亞,、菲律賓和中國臺灣省)達成協(xié)議,將共同開發(fā)EDI系統(tǒng),,以便使這些國家和地區(qū)在進出口過程中能夠?qū)崟r地采集進出口數(shù)據(jù),,有效對客戶進行管理,減少報關(guān)錯誤,。這無疑會加快亞洲國家的EDI建設(shè)進程,。
在歐洲,一些大公司,,包括超市連鎖公司,,已經(jīng)開始對不開通EDI的供應(yīng)商實行制裁措施(價格、處理時間,、付款方式上實行歧視政策),。
新加坡貿(mào)易發(fā)展局宣布:從1999年1月1日起,所有進出口貿(mào)易都必須用EDI方式申報,。
香港地區(qū)從2000年開始全面關(guān)閉進出口報關(guān)柜臺,,所有的進出口報關(guān)必須通過EDI方式。
EDI的發(fā)展趨勢:
(1)應(yīng)用EDI的行業(yè)會增多,;
(2)EDI與其他信息傳送技術(shù)和系統(tǒng)的一體化,;
(3)EDI技術(shù)將受Internet的沖擊。
1.2 國內(nèi)發(fā)展現(xiàn)狀
我國也早已經(jīng)開始重視和普及EDI技術(shù),,“八五”抓基礎(chǔ),、抓試點;“九五”建立起中國貿(mào)易網(wǎng)(China Trade Network),,盡快實現(xiàn)與國際貿(mào)易網(wǎng)的大聯(lián)通,,全面推行EDI,。
近幾年來,國內(nèi)方正,、中軟,、啟宏科技、南通等軟件公司在數(shù)據(jù)交換平臺方面都已經(jīng)快速發(fā)展,。
方正數(shù)碼公司2002年提出了面向信息資源整合的跨地域,、跨部門應(yīng)用技術(shù)框架,為橫跨多個政府機構(gòu)的服務(wù),、監(jiān)管職能的業(yè)務(wù)實現(xiàn)和同一機構(gòu)內(nèi)多個部門不同業(yè)務(wù)系統(tǒng)之間的數(shù)據(jù)整合提供了進行有效轉(zhuǎn)換和交流的安全信息交換平臺——方正易暢InfoHub,。
方正易暢InfoHub安全信息交換平臺在信息系統(tǒng)中為終端節(jié)點提供安全可靠的消息傳輸。它采用基于XML技術(shù)的消息結(jié)構(gòu)進行信息的表達,,存儲及傳輸,。而作為封裝在消息結(jié)構(gòu)中的消息內(nèi)容可以是XML格式的信息,EDI格式的信息,,或者是采用用戶自己定義的格式的信息,。
由中軟網(wǎng)絡(luò)技術(shù)股份有限公司與河南省國家稅務(wù)局聯(lián)合開發(fā)出《行政管理與監(jiān)控考核系統(tǒng)》填補了國家辦公軟件的空白。
中軟股份在此基礎(chǔ)之上建立系統(tǒng)框架,,并通過技術(shù)框架與功能框架完美結(jié)合,,使功能不斷擴充與完善,完成了《行政管理與監(jiān)控考核系統(tǒng)》,。該系統(tǒng)已經(jīng)在駐馬店市國稅局得到了全面的推廣與實施,,為提升稅務(wù)行業(yè)行政管理水平和質(zhì)量做出了貢獻。
啟宏科技電子數(shù)據(jù)交換平臺,,不僅為致力于提供數(shù)據(jù)交換與系統(tǒng)整合功能的軟件開發(fā)商提供基礎(chǔ)開發(fā)平臺,,同時也可直接運用于各種行業(yè)及政府公用基礎(chǔ)數(shù)據(jù)交換平臺的建設(shè)。
2 存在的問題及解決方案
目前EDI技術(shù)需要解決如下問題:
(1)網(wǎng)絡(luò)通信傳輸標(biāo)準(zhǔn):解決異型機,、異型網(wǎng)絡(luò)環(huán)境下的信息交換,;
(2)交易業(yè)務(wù)格式標(biāo)準(zhǔn)化:交易雙方必須使用相同的交易文件格式;
(3)語言文字標(biāo)準(zhǔn)化:交易雙方應(yīng)使用相互理解的語言文字進行交換,;
(4)EDI中心的建立與管理規(guī)范,;
(5)權(quán)威性與合法性;
(6)安全保密性,。
隨著EDI技術(shù)應(yīng)用的深入,,人們認(rèn)識到:用戶將不會再采用大而僵化的通用產(chǎn)品,他們將通過構(gòu)件集成的方式實現(xiàn)個性化的IT方案,。權(quán)威市場研究及顧問機構(gòu)Gartner指出,,到2005年,至少70%的新的應(yīng)用軟件將會以構(gòu)件化的方式基于架構(gòu)開發(fā)而成。
所有這一切決定了復(fù)雜而僵化的編碼式的軟件體系即將靈活的構(gòu)件集成式的軟件體系取代,。而中間件(Middleware)技術(shù)則為構(gòu)件化應(yīng)用軟件提供了一個實現(xiàn)資源共享的集成平臺,。
3 中間件技術(shù)
起步于二十世紀(jì)90年代初期的中間件,是一類軟件的總稱,,實現(xiàn)網(wǎng)絡(luò)互連,、應(yīng)用之間的互操作,與操作系統(tǒng)和數(shù)據(jù)庫并稱為三大基礎(chǔ)軟件,。它位于操作系統(tǒng)和應(yīng)用系統(tǒng)之間,,是一種獨立的系統(tǒng)軟件或服務(wù)程序,應(yīng)用軟件借助該軟件在不同平臺,、不同的應(yīng)用環(huán)境之間實現(xiàn)資源共享[3],。
中間件是位于平臺(硬件和操作系統(tǒng))和應(yīng)用之間的通用服務(wù)。如圖1所示,,這些服務(wù)具有標(biāo)準(zhǔn)的程序接口和協(xié)議,。針對不同的操作系統(tǒng)和硬件平臺,它們可以有符合接口和協(xié)議規(guī)范的多種實現(xiàn),。
中間件所包括的范圍十分廣泛,,針對不同的應(yīng)用需求涌現(xiàn)出多種各具特色的中間件產(chǎn)品?;谀康暮蛯崿F(xiàn)機制的不同,將平臺分為以下主要幾類:消息隊列中間件,、分布式面向?qū)ο笾虚g件和事務(wù)處理中間件等,。
消息隊列服務(wù)是一種松耦合的分布式應(yīng)用集成形式[13]。發(fā)送者將消息發(fā)送給消息服務(wù)器,,消息服務(wù)器將消息存放在若干隊列中,,在合適的時候再將消息轉(zhuǎn)發(fā)給接收者。這種模式下,,發(fā)送和接收是異步的,,發(fā)送者無需等待;二者的生命周期未必相同:發(fā)送消息的時候接收者不一定運行,,接收消息的時候發(fā)送者也不一定運行,;一對多通信:對于一個消息可以有多個接收者。
消息隊列中間件最重要的功能是及時提供可靠的消息通信手段,。為了能夠完成消息的可靠傳輸,,一般情況下,使用隊列的方式進行消息管理,,也就是說,,通常在進行數(shù)據(jù)傳輸時,將數(shù)據(jù)按照用戶定義的大小,拆分成若干消息放入消息隊列,,按照同步或異步的通信方式發(fā)送或者接收消息,。
在當(dāng)前信息系統(tǒng)工程中,出于功能,、安全性,、可靠性等方面的考慮,大量使用路由器,、交換機,、防火墻的網(wǎng)絡(luò)設(shè)備,或使用集群,、雙機熱備份等網(wǎng)絡(luò)技術(shù),,網(wǎng)絡(luò)結(jié)構(gòu)日趨復(fù)雜。為了能夠滿足網(wǎng)絡(luò)使用的要求,,中間件產(chǎn)品通??梢圆捎枚喾N方式進行部署,做到系統(tǒng)之間構(gòu)筑一對一,、一對多,、多對一、多對多的樹型網(wǎng)絡(luò)結(jié)構(gòu),,使系統(tǒng)配置和管理大為簡化,,同時也能滿足系統(tǒng)數(shù)據(jù)傳輸?shù)囊蟆?BR> 消息傳輸中間件的跨平臺能力也是中間件的重要指標(biāo)。為滿足異構(gòu)平臺的數(shù)據(jù)通信要求,,消息傳輸均使用標(biāo)準(zhǔn)的IP包封裝,,因此中間件產(chǎn)品能做到真正跨平臺的數(shù)據(jù)通信。此外,,消息傳輸中間件通常都提供豐富的API函數(shù)接口,,可以支持標(biāo)準(zhǔn)C/C++、Microsoft Visual C++,、Microsoft Visual Basic,、Borland C、PowerBuilder,、Java等開發(fā)語言,,特別是對標(biāo)準(zhǔn)的C/C++和Java的支持,方便在不同應(yīng)用平臺的應(yīng)用開發(fā),,同時實際上也增強了消息傳輸中間件的跨平臺能力,。
消息隊列服務(wù)系統(tǒng)" title="服務(wù)系統(tǒng)">服務(wù)系統(tǒng)即是把消息中間件技術(shù)應(yīng)用于實踐中的一種位于平臺(硬件和操作系統(tǒng))和應(yīng)用之間的服務(wù)程序。
消息隊列是在多個不同的應(yīng)用之間實現(xiàn)相互通信的一種異步傳輸模式,,相互通信的應(yīng)用可以分布于同一臺機器上,,也可以分布于相連的網(wǎng)絡(luò)空間中的任一位置,。其實現(xiàn)原理是:消息的發(fā)送者把自己想要發(fā)送的信息放入一個容器中(Message),然后把它保存至一個系統(tǒng)公用空間的消息隊列(Message Queue)中,;本地或者是異地的消息接收程序再從該隊列中取出發(fā)給它的消息進行處理,。
在消息傳遞機制中,有兩個重要的概念,。一個是消息,,一個是隊列。消息是由通信的雙方所需要傳遞的信息,,它可以是各式各樣的媒體,,如文本、聲音,、圖象等等,。消息最終的理解方式,為消息傳遞的雙方事先商定,,這樣做的好處是,,一是相當(dāng)于對數(shù)據(jù)進行了簡單的加密,二則采用自己定義的格式可以節(jié)省通信的傳遞量,。消息可以含有發(fā)送和接收者的標(biāo)識,,這樣只有指定的用戶才能看到只傳遞給他的信息和返回是否操作成功的回執(zhí)。消息也可以含有時間戳,,以便于接收方對某些與時間相關(guān)的應(yīng)用進行處理,。消息還可以含有到期時間,它表明如果在指定時間內(nèi)消息還未到達則作廢,,這主要應(yīng)用與時間性關(guān)聯(lián)較為緊密的應(yīng)用,。
消息隊列是發(fā)送和接收消息的公用存儲空間,可以存在于內(nèi)存中或者是物理文件中,。消息可以以兩種方式發(fā)送,,即快遞方式(express)和可恢復(fù)模式(recoverable),它們的區(qū)別在于,,快遞方式為了消息的快速傳遞,,把消息放置內(nèi)存中,而不放于物理磁盤上,,以獲取較高的處理能力,;可恢復(fù)模式在傳送過程的每一步驟中,都把消息寫入物理磁盤中,,以得到較好的故障恢復(fù)能力,。消息隊列可以放置在發(fā)送方、接收方所在的機器上,,也可以單獨放置在另外一臺機器上,。正是由于消息隊列在放置方式上的靈活性,形成了消息傳送機制的可靠性。當(dāng)保存消息隊列的機器發(fā)生故障而重新啟動以后,,以可恢復(fù)模式發(fā)送的消息可以恢復(fù)到故障發(fā)生之前的狀態(tài),,而以快遞方式發(fā)送的消息則丟失。另一方面,,采用消息傳遞機制,,發(fā)送方必要再擔(dān)心接收方是否啟動、是否發(fā)生故障等非必要因素,,只要消息成功發(fā)送出去,,就可認(rèn)為處理完成,而實際上對方可能甚至未曾開機,,或者實際完成時可能已經(jīng)是第二天了,。
采用消息隊列技術(shù)帶來的好處是:由于是異步通信,無論是發(fā)送方還是接收方都不用等待對方返回成功消息,,就可以執(zhí)行余下的代碼,,因而大大地提高了事物處理的能力;當(dāng)信息傳送過程中,,信息發(fā)送機制具有一定功能的故障恢復(fù)能力,;消息傳遞機制使得消息通信的雙方具有不同的物理平臺成為可能。
消息隊列分為用戶創(chuàng)建隊列和系統(tǒng)隊列,,用戶隊列分為:
(1)“公共隊列”在整個可傳遞消息的“消息隊列”網(wǎng)絡(luò)中復(fù)制并傳輸,,并且有可能由網(wǎng)絡(luò)連接的所有站點訪問。
(2)“專用隊列”不在整個網(wǎng)絡(luò)中發(fā)布,。相反,,它們僅在所駐留的本地計算機上可用。專用隊列只能由知道隊列的完整路徑名或標(biāo)簽的應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序訪問,。
(3)“管理隊列”包含確認(rèn)在給定“消息隊列”網(wǎng)絡(luò)中發(fā)送的消息回執(zhí)的消息,。指定希望 MessageQueue組件使用的管理隊列 。
(4)“響應(yīng)隊列”包含目標(biāo)應(yīng)用程序接收到消息時返回給發(fā)送應(yīng)用程序的響應(yīng)消息,。指定希望 MessageQueue 組件使用的響應(yīng)隊列,。
系統(tǒng)隊列分為:
(1)“日記隊列”可選地存儲發(fā)送消息的副本和從隊列中移除的消息副本。
(2)“死信隊列”存儲無法傳遞或已過期的消息的副本,。
(3)“專用系統(tǒng)隊列”是一系列存儲系統(tǒng)執(zhí)行消息處理操作所需的管理和通知消息的專用隊列,。
消息隊列和電子郵件有著很多相似處,他們都包含多個屬性,,用于保存消息,,消息類型中都指出發(fā)送者和接收者的地址;然而他們的用處卻有著很大的區(qū)別:消息隊列的發(fā)送者和接收者是應(yīng)用程序,,而電子郵件的發(fā)送者和接收者通常是人,。
圖2是消息隊列應(yīng)用程序的體系結(jié)構(gòu),。
典型的MOM系統(tǒng)有:IBM的MQSeries、Microsoft的MSMQ等,。
微軟消息中間件MSMQ可以在應(yīng)用之間實現(xiàn)推送式的商務(wù)傳輸環(huán)境,,即使在可靠性不高的網(wǎng)絡(luò)上也能建立可靠的應(yīng)用。它具有易用,、應(yīng)用高度集成的特點,。
由于完全支持COM、動態(tài)目錄服務(wù)構(gòu)架以及內(nèi)置集中式系統(tǒng)管理,,MSMQ成為windows 2000 server上最容易使用,、部署和管理的消息隊列產(chǎn)品。它提供全面的消息隊列功能,,比如可靠而有彈性的消息傳送,、基于開銷的消息路由以及對事務(wù)處理的完全支持。MSMQ通過微軟的MSMQ-MQ series橋來提供與MQseries緊密的互操作性,,同樣通過level8系統(tǒng)的產(chǎn)品提供與其它消息隊列產(chǎn)品的連接,。
但它存在的不足是:它要求NT4.0以上,MQ1.0是基于SQL,其性能低而不穩(wěn)定,。WINDOWS2000版本以后,,開始實用,但也只能開發(fā)出縣級以下開發(fā)系統(tǒng)" title="開發(fā)系統(tǒng)">開發(fā)系統(tǒng),,開發(fā)系統(tǒng)級別收到了一定的限制,。
IBM的 MQSeries中間件[34]產(chǎn)品,以消息隊列的方式為分布式環(huán)境下實現(xiàn)程序之間的通信提供了靈活,、快速并且易于使用的解決方案,。這種消息交換與硬件、操作系統(tǒng)無關(guān),,并能夠保證數(shù)據(jù)既不會丟失又不會被復(fù)制,。
MQSeries提供了一系列功能,對系統(tǒng)進行集成以提供快速,、可靠和一致的系統(tǒng)內(nèi)信息訪問能力,。MQSeries以消息處理和消息排隊的通信模式提供應(yīng)用到應(yīng)用的邊連接?;谕ㄐ胖虚g件MQSeries開發(fā)七號信令監(jiān)測系統(tǒng),,能夠保證信息聯(lián)通的可靠性和安全性,,同時也縮短了開發(fā)時間,,為企業(yè)贏得市場。
IBM的Mqserices系列市場占有率高,,性能穩(wěn)定,,但該開發(fā)系統(tǒng)價格昂貴,,在我國一般公司、企業(yè)等單位的使用就受到一定的限制,。
CNT(CSS Network Technology) MQ Service是中軟網(wǎng)絡(luò)技術(shù)股份公司開發(fā)的一種分布式消息隊列服務(wù)系統(tǒng),,是一個架構(gòu)于Windows系統(tǒng)平臺的消息隊列服務(wù)系統(tǒng),較好地解決了目前消息隊列服務(wù)系統(tǒng)存在的缺陷和不足。
4 消息中間件所面臨的挑戰(zhàn)
消息隊列服務(wù)系統(tǒng)中,,消息傳輸?shù)目煽啃耘c消息的大小受到一定的制約,,目前,微軟和IBM的消息中間件產(chǎn)品對消息的大小和容量都有一定的限制,,消息中間件在以后的開發(fā)中,,將會向傳輸?shù)南⒋笮『腿萘坎皇芟拗频姆较虬l(fā)展??梢允褂貌鸱趾徒M裝技術(shù),,實現(xiàn)整個系統(tǒng)對所傳輸?shù)南⒋笮『腿萘坎皇芟拗啤?BR> 為了消息傳輸?shù)目煽啃阅茏銐蚋撸⒅虚g件將會使用消息多級回執(zhí)技術(shù),,使消息可以回滾和可以反悔,,當(dāng)消息從隊列中被提取的同時使其暫存緩存區(qū)中,此時即使斷電,,也可以保證消息的可靠傳輸而不被延誤和丟失,。
消息隊列服務(wù)系統(tǒng)處理高并發(fā)服務(wù)是又一技術(shù)難點,服務(wù)器由原來處理5個并發(fā)任務(wù)到16并發(fā)任務(wù),,再到2000并發(fā)任務(wù)一直在不斷的改進,。使用異步I/O機制,處理好進程與線程的正確關(guān)系是消息隊列服務(wù)系統(tǒng)又一技術(shù)關(guān)鍵所在,。
能以COM形式提供MQ Client API是目前消息隊列服務(wù)系統(tǒng)的需求,。API面對過程函數(shù)的組件接口在使用過程中會帶來一定的麻煩,使用COM面向?qū)ο蟮慕M件接口比使用API組件接口有很大的好處,??梢詼p少定義函數(shù)、附加附件,、制定優(yōu)先級等一系列繁瑣的過程,。
5 消息中間件應(yīng)用展望
隨著消息中間件應(yīng)用的發(fā)展,消息中間件的應(yīng)用前景會越來越廣闊,,將會脫離數(shù)據(jù)傳輸?shù)姆懂牰蔀橐环N新的應(yīng)用模式,;用消息驅(qū)動使異步更合理更優(yōu)化;用消息隊列來實現(xiàn)負(fù)載均衡機制也是一個很好的理念,;目前各種消息隊列服務(wù)系統(tǒng)都各自用自己的傳輸協(xié)議,,將來的發(fā)展趨勢會有通用的傳輸協(xié)議。
參考文獻
1 徐享忠,,王精業(yè).蔣海濱.基于XML的數(shù)據(jù)交換及其面臨的挑戰(zhàn).計算機工程" title="計算機工程">計算機工程與應(yīng)用,,2003,,01:27~29
2 張 哲.基于XML的元數(shù)據(jù)體系的數(shù)據(jù)交換.計算機工程與應(yīng)用,2003,,10:180~184
3 張舒怡,,嚴(yán)超,邵培南.消息中間件的集群技術(shù).計算機工程,,2003,,29(2):107~109
4 高建斌,董傳良,,謝 莉,,夏思詢.數(shù)據(jù)集成中消息中間件的設(shè)計. 計算機工程,2003,,29(9):107~109
5 鄧雙慶,,程代杰.一種基于XML的數(shù)據(jù)交換中間件技術(shù).計算機科學(xué),2003,,30(5)
6 周世杰,,劉錦德,秦志光.消息隊列技術(shù)研究:綜述與一個實例.計算機科學(xué),,2002,,29(2):84~86
7 電子數(shù)據(jù)交換(EDI)簡介.www.e-ipc.com.cn/edi.htm
8 Lew R. Advanced Message Application with MSMQ and MQSeriies,QUE.1999,11
9 Baccelli F,Bremaud P.Elements of Queuing Theoyy,1994
10 Michael Morrison.XML, Unleashed.Sams Publishing,2000
11 電子數(shù)據(jù)交換(EDI)簡介 www.e-ipc.com.cn/edi.htm
12 電子數(shù)據(jù)交換(EDI) www.ancc.org.cn/news/newsone.asp?id=728