2011-11-01 73 views
6

我的理解是,在HTTP中,客戶端連接到服務器並請求數據。服務器不能調用客戶端。如果是這種情況,那麼WCF回調如何工作?WCF回調如何通過HTTP工作?

感謝,

回答

6

當與HTTP傳輸一起使用時,服務器確實調用客戶端。爲了實現這個目標,客戶端必須位於公共端點上,因此需要對防火牆和其他功能進行適當配置。

http://msdn.microsoft.com/en-us/magazine/cc163537.aspx

由於其連接的性質,HTTP不能用於回調,因此,你不能在basicHttpBinding的或WsHttpBinding的使用回調。 Windows Communication Foundation爲NetTcpBinding和NetNamedPipeBinding提供回調支持,因爲底層傳輸是雙向的。爲了支持通過HTTP的回調,Windows Communication Foundation提供了WSDualHttpBinding,它實際上設置了兩個HTTP通道:一個用於從客戶端到服務端的呼叫,另一個用於從服務端到客戶端的呼叫。

並從WSDualHttpBinding http://msdn.microsoft.com/en-us/library/system.servicemodel.wsdualhttpbinding.aspx參考:

這種結合需要客戶端有一個公共URI,提供該服務的回調端點。這由ClientBaseAddress提供。雙重綁定將客戶端的IP地址公開給服務。客戶端應該使用安全來確保它只連接到它所信任的服務。

+0

嗨@JeremyMcGee,我正在研究這些話題。我正在使用一個簡單的控制檯應用程序作爲客戶端[這裏](http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/a-simple-duplex-service-in-wcf/)。我從你的回答中瞭解到,客戶端必須有服務器端點,我的問題是,有什麼方法可以查看此端點是什麼? – SamGhatak

0

一個WCF雙工HTTP客戶端(例如,當使用wsDualHttpBinding)將啓動一個服務器也聽從當它回調到「真正的」服務器的請求。

所以這不會在NAT上起作用。