2012-06-18 89 views
1

我想用wcf構建一個http偵聽器(webservice)。這個監聽器是一個更大的桌面應用程序的一部分。此桌面應用程序還會調用http偵聽器。wcf http綁定vs dualhttp綁定

當偵聽器收到數據時,它應該傳遞給桌面應用程序。我試圖建立一個httpbinding服務,並使用回調機制

[OperationContract(IsOneWay = true)] 
void OnDataReceived(Data data); 

的問題是,我需要的,因爲回調的wsDualhttpbinding。

我真的需要使用dualhttp將數據從一個.NET應用程序發送到另一個應用程序,還是我錯過了一些東西?

謝謝

+0

您是否必須使用HTTP? –

+0

該應用程序通過http接收數據。所以聽衆的部分確實是http – Tarscher

+0

我的意思是爲什麼你必須使用http作爲傳輸?你能用msmq爲例嗎?如果是的話,你可以通過更簡單的方式來做到這一點。 –

回答

1

你的問題是你有一個暴露爲WCF服務的事件源。服務將事件實時發送到客戶端的唯一方法是通過全雙工連接,這意味着使用duathttp或dualtcp綁定。

但是,使用雙工綁定最好是複雜的。允許客戶訂閱服務,然後在客戶感興趣的事件發生時接收消息會更簡單。

這比雙工綁定簡單得多,因爲客戶端和服務之間沒有實際的連接,只有異步消息。

儘管WCF爲msmq傳輸提供了綁定,但它不提供與這種pub-sub支持的綁定,因此您可以爲此編碼,也可以使用開放源代碼消息總線,如NServiceBus

2

是的,你需要雙通道或雙工通信。 HTTP本質上是一個單向的協議。客戶端必須調用服務器。服務器無法與客戶交談。

+0

自從.net代碼以後,是否有更簡單的方法將數據移動到桌面應用程序? – Tarscher

+0

如果您不得不使用HTTP作爲傳輸方式,則不適用。 –

+0

這個dualhttp標準是否符合? http偵聽器應該使用不同的http調用 – Tarscher

1

如果您使用的是回調機制,而不是輪詢機制,那麼,你需要雙結合的WCF服務需要能夠同時發送和接收消息(而不是接收和返回響應)