應用程式間的訊息傳遞 API Messaging API,Inter-Application
一種面向訊息的事務,是使用存儲再轉發技術的無連線事務。一個應用程式以訊息的方式傳送一個請求或命令,然後等待回答。在這兩個系統之間沒有同步,傳送方可以將訊息廣播給任意多的其他系統。它的一個重要特色是,在客戶機和伺服器之間沒有通信“會話”或連線。伺服器可以在很長時間之後再有反應。由於訊息傳遞系統不是實時工作的,所以對於實時任務關鍵的應用程式使用它是不現實的。然而,對於較慢傳輸率的廣域網連線的分散系統,採用訊息傳遞系統的工作卻是很合適的。首先,廣域網鏈路的延遲就使實時套用不合適。
一個訊息傳遞模式需要在數據交換的兩端都有佇列管理。一個訊息在源端創建,再分送到和目的地相關的佇列中。管理佇列通常是異步的,在另一個事件出現之前,前一個必須處理完畢。然而,訊息可以被分配到多個處理器,這樣它們每個都能並行處理一個任務。通常採用雙向佇列,這樣兩個系統就可以同時傳送訊息了。
訊息傳遞系統可以對應用程式隱藏下面的通信協定,這樣,一個在網路間分組交換(IPX)環境運行的應用程式,就可以和一個在傳輸控制協定/Internet協定(TCP/IP)環境運行的套用傳遞訊息了。由於應用程式只需簡單地識別訊息格式和命令,所以應用程式接口間的差異也就很小。和此相對,信報傳送系統是一種“中間件(middleware)”。中間件產品是程式設計師和開發人員在製作套用產品時隱藏下面的作業系統、通信協定和多廠商產品的複雜性時使用的工具。它使得無需開發人員將大量時間花在使應用程式產品適應它可以運行的每一種系統。中間件提供它們的全部互聯,開發人員只需簡單地實現應用程式產品和中間件間的接口。
在不同的網路作業系統上,已經安裝了許多著名的訊息轉發系統,但必須牢記,這些系統並沒有考慮中間件產品,因為它們的設計沒有為多廠商和多協定提供接口。它們依賴於作業系統內置的服務和通信協定。
Microsoft的郵件傳遞系統 是Microsoft LAN管理器和IBM LAN伺服器環境的一種訊息傳遞接口,它是OS/2的網路擴充版本。郵件傳遞系統是一種存儲再轉發訊息系統,它允許網路結點共享數據,而無需與其他結點同步(建立聯繫)。與此相反,命名管道(named pipe)在兩個網路結點間同步交換。
Novell的信報處理服務(MHS)是一種開始只用於電子函件的訊息轉發系統,但也具有在應用程式間轉發訊息的能力。Novell最近通過增加對OSI協定、IBM SNA和TCP/IP的支持,改進了MHS的協同工作能力。
IBM的訊息排隊接口(MQI) 是一種能觀測不同平台上應用程式間轉發訊息的基於訊息的應用程式接口。它在IBM聯網方案中定義。
一些廠商正在推進面向訊息的中間件。下面作為例子討論兩種訊息轉發系統。有些能與SQL或非SQL資料庫一起工作。
通信集成器由Covia技術公司(Rosemout,Illinois)提供。這種訊息轉發系統在IBM、DEC、UNIX、OS/2、DOS和Windows環境下工作。而伺服器和主機通過面向連線的鏈路通信。對訊息進行優先分級以保證時間敏感性信息通過。
DECmessage Q由數字設備公司DEC(Maynard,Massachusetts)提供。這個系統是DECnet結構的一部分,它在客戶機/伺服器和對等層環境下工作。它支持VAX/VMS、ULTRISI、OS/2、DOS、Windows和Macintosh。DECmessage Q在許多不同類型的前端和後端應用程式之間充當訊息匯流排的角色。應用程式可以建立一些優先的和正常的訊息佇列。
訊息傳遞技術在面向對象領域也是很重要的。在一個面向對象的系統中,對象請求代理(ORB)為在套用、服務和系統的其他設備之間進行訊息分布提供了一種關鍵通信設備。可以將一個ORB想像成一種軟體匯流排、支柱,它提供了一種通用的訊息轉發接口,通過這個接口許多不同類的對象可以以對等層策略進行通信。一個對象提出一個請求,並將它送到ORB,然後,ORB放置一個對象用於為這個請求服務、格式化訊息,並將它發到對象。然後,這個回響通過ORB送回原來的請求者。在這種模式中,對象只需簡單地描述要操作的任務。它們並不需要知道細節和能夠為這個任務服務的對象在那裡。ORB處理所有的放置對象、格式化訊息並分發這些訊息的細節。ORB是所有分散式環境的一種通用接口。