2011-05-09 110 views
3

我們有一個傳統的中間件應用程序,我們想爲它實現WCF適配器。可以說暫時我們只會使用WCF服務。該中間件能夠處理XML消息。我們希望從中間件獲得消息xml,並將其轉發給WCF客戶端。得到響應後,我們想用響應xml回覆中間件。WCF消息檢查員

以下是我們希望研究的幾個問題。

  1. ,我們應該能夠在收到WCF的所有層之後的XML(這是很重要的發送,而不是基於對象的WCF調用
  2. 原始XML由於XML的驗證本身應已按合同執行)我們將把它轉發給中間件。
  3. 我們的中間件實現了經典的web服務,但是datacontract串行器存在各種各樣的問題。其中之一是對象引用。因爲我們已經可以看到,通過在xml元素中使用id屬性來保存對象的引用。我們如何才能克服這一點。有沒有更多的事情我們可以考慮用於數據合約序列化。
  4. 中間件關心原始消息本身。我們希望其他消息相關的屬性(如SOAP,WS-Security等)由WCF代理本身來處理。
  5. 沒有人有任何想法WCF BizTalk適配器是如何工作的

任何反饋,將不勝感激。

回答

1

1)您正在尋找的是POX(Plain Old XML)。 WCF使用WebHttpBinding支持這一點。 Here's a good starting point.

這不是嚴格意義上的「原始XML」,因爲WCF決定發送什麼,但是出來的是純XML文檔而不是SOAP消息。如果你不能讓WCF發送你想要的東西,甚至像POX,那麼跳過該組件的WCF或者直接打開一個到你的中間件層的套接字並直接發送XML會更有意義。在這種情況下,您確實可以發送傳統中間件應用程序所期望的內容。 WCF仍然可以處理面向客戶端的連接。 2)如果你有一個面向客戶端的WCF服務,WCF將解析客戶端消息,並在你的代碼中給你某種對象(取決於服務契約)。在這一點上,你的WCF服務代碼要麼使用另一個WCF連接來聯繫中間件,要麼就像我提到的那樣打開套接字併發送必要的請求。但是在你的服務方法開始之前,剝離掉WCF的「東西」是爲你完成的。

4)那應該沒問題。 WCF和你的代碼將在向中間件發送任何東西之前處理它。

希望能有所幫助。 :)

+0

你的答案看起來有潛力。但我有更多的事情要與你討論。 1)webhttpbinding看起來不錯,但我們不能強制WCF服務器爲我們改變這個特定的綁定,因爲這可能是外部系統。一點關係可以解釋爲(我們的中間件)<->(我們的WCF適配器)<->(外部WCF服務器)。是的,套接字是我們的最後選擇。但套接字永遠不會是答案。我們必須提供MSMQ和命名管道綁定。 3)datacontract序列化非常重要,我們應該怎麼做。 – 2011-05-12 04:34:39

+0

我不太瞭解3)幫助你,抱歉。 :(關於1),在與中間件交談時使用webhttpbinding。它面向外部的一面可以使用任何目前正在使用的綁定或你需要的綁定。兩者不一定是相同的,並且它們之間的翻譯很容易。 (你的服務接受一個請求,打開一個到中間件的客戶端連接,然後發送它,WCF處理格式化。)如果需求過於嚴格,與中間件交互的套接字可能是最好的方式,因爲你將不必嘗試和破解任何東西。 – Tridus 2011-05-12 12:58:44

+0

由於您回答了大部分問題,因此授予了積分 – 2011-05-16 12:26:25