談到.NET和Java之間的Web服務交互性時,通常的選擇只有SOAP over HTTP,而根據.NET 3.0的相關規范,這僅有的一個選擇也將會受到更多限制,.Net中提供的BasicHTTP將是唯一能直接與Java Web ServcIEs進行交互的方式。
最近,有兩個新的選擇出現了——WebSphere MQ(WMQ)和ActiveMQ傳送器,它們可以用於創建Java和.NET之間的交互式Web Services。而且.NET的可靠消息系統已經得到了擴展,因此對於MSMQ來說,WMQ和Active MQ都可以作為.Net Web Services的可靠傳遞者。
WMQ解決方案基於IBM AlphaWorks中IBM WMQ for Windows Communication Foundation的定制通道(Custom Channel),它的最新版本已於3月14日發布。這一產品允許將WMQ作為定制通道用於Windows Communication Foundation(WCF)框架(已隨.Net Framework 3提供)中,它與微軟的內建通道工作方式相同。
消息都是經過格式化的,以滿足WMQ v6.0的SOAP over JMS實現,讓應用程序即可以和運行於WCF之上的服務進行通信,也能和運行在WebSphere SOAP over JMS服務基礎之上的服務進行通信,包括WebSphere應用服務器和CICS。
目前的實現是以概念驗證為主,是為了幫助更好地理解對這一領域產品的需求(也就是說它並不適合在產品環境中使用),如何產品化這一實現的計劃還沒有最終確定。
定制通道的構建是通過Windows Communication Foundation的可擴展框架提供的,這一可擴展框架允許集成和使用那些與微軟提供的內建傳送器類似的傳送器。服務型應用只要通過配置就可以使用新的定制通道,只要客戶端應用程序是通過像微軟的Service Metadata utility Tool(Svcutil.exe)這樣的標准工具生成的,它們就可以正常運行。服務的元數據描述可以被正在運行的服務直接發布(可以通過一個附加的HTTP端點來暴露)或者使用WSDL(Web Service Description Language)。
目前的實現版本支持核心的消息功能,它有如下限制:
對於一個服務實例,只有一個客戶端可以使用雙向通道的模式;
雙向通道是對WebSphere MQ v6所提供的SOAP/JMS實現的一種擴展,它只能用於WCF服務與其客戶端之間的通信;
僅支持核心的消息功能(如不支持像事務化和安全等高級特性)
運行在現存WMQ v6的SOAP/JMS環境中的SOAP/JMS服務僅能進行單向操作;
運行在CICS或WebSphere應用服務器的SOAP/JMS環境內的SOAP/JMS服務,不允許在一個單一合約中混合使用單向操作和請求/回復操作,而必須為每個通道形態分別創建獨立的合約。
Active MQ解決方案基於Axis提供的JMS(由Java編寫而成)和“插件式協議”特性(由.NET編寫而成),因此,它並不是以真正的.Net定制通道方式包裝的,這就需要更多的定制編程。
這兩種解決方案都沒有徹底的產品化,但它們卻提供了一個很好實驗基礎,以選擇合適的Web Services交互式傳送器。