2011-03-09 45 views
1

我可以從Web客戶端收聽WCF事件嗎?這可能嗎?我不是在討論回叫,我希望WCF服務能夠提升和事件,並且Web客戶端能夠傾聽。在C#中有這樣的一個很好的例子嗎?我可以從Web客戶端收聽WCF事件嗎?

+0

那麼,異步調用WCF方法與雙工消息交換模式有什麼區別?我已經讀過WCF服務可以發佈客戶可以訂閱的事件。但是,我不確定Web客戶端是否可以這樣做。 – Ruwan 2011-03-09 20:36:15

+1

http://msdn.microsoft.com/en-us/magazine/cc163537.aspx#S5 – Ruwan 2011-03-09 20:46:25

+1

羅文,我有這個確切的問題。你有沒有想過如何使用WCF做到這一點。如果是這樣,你認爲你可以回答你自己的問題? – 2011-05-23 01:42:17

回答

0

WCF中沒有事件。如果您想要模仿事件,您仍然需要調用某些在所有客戶端上公開的操作=您必須調用WCF服務或在客戶端上公開回調。

你是什麼意思的網絡客戶端?你的意思是在Web瀏覽器中運行JavaScript代碼嗎?在這種情況下,不可以用WCF來實現。您只能使用來自borowser的AJAX呼叫,並不斷輪詢服務以查找可能的「事件」。

如果你的意思是ASP.NET應用程序,那麼理論上答案是肯定的,但實際上它會很難。原因是在ASP.NET中,您只處理某個處理程序的當前HTTP請求 - 例如Page。處理程序的生命週期僅用於處理單個請求。由於使用雙工服務沒有多大意義,因爲通過雙工服務接收回傳,您的客戶端代理必須存活。如果您在Page中打開代理服務器,它將在提供請求後終止。如果您在單獨的線程中打開代理,則必須以某種方式將收集的回調與實際客戶端相關聯,但客戶端仍需輪詢Web服務器以通知回調。在ASP.NET應用程序上公開服務時也會出現類似的情況。

異步和雙工呼叫之間的區別很大。在異步模式下,單個請求總是具有單一響應。 Resonse不會在沒有請求的情況下發送。在雙工模式中,您可以發出單一請求並從服務器接收數千次回調。

相關問題