WS-ReliableMessaging
WS-ReliableMessaging描述了一種協議,在出現軟體組件,系統或網絡故障時,使得SOAP消息能夠在分布式應用間能夠可靠傳送。
2003年3月,BEA Systems, 微軟, IBM, TIBCO軟體公司共同撰寫了最初的規範,在隨後的兩年裡進行改進。2005年6月,2005年3月的版本於被提交到OASIS的Web服務可靠交換(WS-RX)技術委員會,2007年6月14日,被批准成為OASIS標準,2009年2月2日,1.2版本被批准。
在WS-ReliableMessaging之前,OASIS曾提出過一個競爭的規範(WS-Reliability),該規範為富士通,日立,NEC,甲骨文公司,Progress Software和昇陽電腦所支持。這些支持者中的大多數現在也支持WS-ReliableMessaging規範。
可靠消息模型
[編輯]![thrumb](http://upload.wikimedia.org/wikipedia/commons/thumb/4/40/WS-ReliableMessage-zh.svg/380px-WS-ReliableMessage-zh.svg.png)
源應用想在一個不可靠的基礎設施上可靠地發送消息給目標應用。想要實現這一點,應用需要使用可靠消息源和可靠消息目標。源應用發消息給可靠的消息源。可靠的消息源使用WS-ReliableMessaging (WS-RM)協議來傳送消息到可靠的消息目標。可靠的消息目標再將消息遞交給目的應用。如果可靠的消息源因故無法傳送消息到可靠的消息目標,它必須拋出一個異常或者其他方法標識該消息沒有被傳送出去。源應用和可靠的消息源可能實現在同一進程中或是不同的組件。類似的,目標應用和可靠的消息目標可能在一個進程中或不同的組件。
需要注意的是,WS-RM規範僅處理消息在線上傳輸的內容和行為。消息如何從源應用發送到可靠消息源,消息如何從可靠消息目標遞送到目標服務,消息是在內存中存儲,還是持久化在硬碟上,等等,這些考慮都不在WS-RM規範的範圍內。
WS-RM協議定義和支持了集中遞送保障,包括:
- 至少一次(AtLeastOnce) - 每一條消息將被遞送到目標應用至少一次。如果一條消息無法被遞送,可靠消息源或可靠消息目標至少有一個應當報錯。例如,目標應用可能得到重複的信息。
- 至多一次(AtMostOnce) - 每一條消息將被遞送到目標應用不超過一次。消息可以沒有被遞送到目標應用,但目標應用決不能收到重複的消息。
- 正好一次(ExactlyOnce) - 每一條消息將被遞送到應用一次且僅一次。如果消息無法被遞送,可靠消息源或可靠消息目標至少有一個應當報錯。目標應用將不會受到重複的消息。
- 按序(InOrder) - 消息將按照從源應用發送到可靠消息源的順序,從可靠消息目標被遞送到目標應用。這一保障包括了以上所有保障。
可組合的架構
[編輯]WS-ReliableMessaging使用SOAP和WSDL的可擴展性模型。WS-ReliableMessaging並沒有定義一個完整的消息解決方案的所有特性。WS-ReliableMessaging是一塊積木,與其他Web服務規範和應用特定的惡協議一同使用來構建完整的消息解決方案。
批評
[編輯]這篇文章 (頁面存檔備份,存於網際網路檔案館)解釋為什麼可靠性不需要消息層提供,而是需要業務層提供。
WS-ReliableMessaging的實現
[編輯]- Apache Sandesha
- WebLogic Server
- IBM WebSphere
- GlassFish
- SAP NetWeaver
- 微軟Windows Communication Foundation