2013-05-01 77 views
0

我有一個WCF服務,將某些請求路由到中央處理應用程序。 WCF服務使用基本的HTTP/S綁定;這是爲了與各種客戶端技術兼容(Java,Python等)。如何在WCF服務中提供回調SOAP方法合同?

我一直負責向服務添加通知,以便客戶端應用程序(服務本身)可以調用其中一個帶有URI的WCF方法作爲參數,以便在原始請求中發送的項目發生狀態更改時進行通知。基本上,他們調用該服務併爲其添加一個URI字符串以及其他數據。如果/當數據的狀態發生變化(可能會在幾天後或永遠不會發生),他們應該在他們提供的URI處得到一個響應DTO,通知它該變化。

我遇到的問題是實現正確的發佈 - 訂閱模式顯然是not possible in WCF using the basic bindings。我可以手動創建一個SOAP信封並向通過的URI發出呼叫,但我不知道如何通過服務本身實現返回服務應實現的回調方法合約(以便他們可以從WSDL獲取它)。

我可以手動將客戶端的要求規範放在一起,但我更願意以消費者服務可以通過編程方式獲得的方式提供它,以便它始終與WCF服務本身1:1。

  1. 有沒有更好的方法來做到這一點,牢記我只限於基本的HTTP綁定?
  2. 如果不是,有沒有辦法以編程方式公開回調服務方法應該看起來像什麼?
+0

I'm。您可以使用幾行代碼從WCF與任何客戶端進行通信。 https://github.com/codeplanner/XSocketsWCF上的示例 – Uffe 2013-05-04 07:51:36

回答

1

您可以使用Duplex綁定,但對於客戶端,除.Net之外的其他設備無法使用。

對於您的UseCase,我會考慮檢查SignalR的使用情況。它可以託管在你的wcf服務中,並且能夠通知你的客戶。

另請參閱:SignalR as WCF web socket service

而且,我還檢查的WebSocket使用的可能性

使用XSockets.NET到博斯特我的WCF到實時看到

http://www.codeproject.com/Articles/338789/What-s-new-in-WCF-4-5-WebSocket-support-Part-1-ofhttp://www.codeproject.com/Articles/341413/What-s-new-in-WCF-4-5-WebSocket-support-Part-2-of

+0

謝謝,我正在檢查此方法。 – 2013-05-01 15:31:52

+0

這是一個非常有用的答案,但我無法與我們已有的項目合作。接受它雖然我想在這個方向上移動項目。 我們最終爲接收者服務發佈了XSD。 – 2013-06-19 18:38:17