2009-05-25 27 views
6

我有一個客戶端 - 服務器應用程序 - 其中服務器本質上是一個ASP .NET Web應用程序,分佈式客戶端桌面應用。客戶端(桌面應用程序)提取數據...但我希望服務器(Web應用程序)推送數據

當客戶端有新數據時,客戶端需要從服務器接收一些數據。現在,這樣做的方式是 - 客戶端每隔x分鐘(例如2分鐘)不斷查詢Web服務,並持續檢查客戶端是否有新數據。

理想情況下,它應該工作的方式是桌面應用程序應該在它們可用時接收更新,它不需要從服務器拉出;相反,服務器應該能夠推送給客戶端。

如何做到這一點 - 考慮到解決方案的體系結構 - Web應用程序需要將數據推送到同一網絡(局域網)中的桌面應用程序(客戶端)?

回答

7

你所描述的是「服務器推送」,這些日子通常被稱爲「COMET」。在網絡搜索中使用這些關鍵字應該會提供很多有用的信息。

最常見的技術稱爲「掛鉤GET」。客戶端向特定的URL發送GET請求,服務器接受連接但延遲發送響應,直到它有數據要發送。當客戶端收到響應時,它會發送另一個GET消息,以便爲另一個消息做好準備。

0

如果您可以打開套接字,客戶端可以連接到服務器,並且服務器可以在適當的時候將數據向下推入套接字。沒有理由爲什麼啓動連接的一方必須始終是啓動數據傳輸的一方。

+0

這個應用程序是針對行業的一般內聯網。使用套接字連接 - 即使用套接字將需要打開端口進行訪問 - 重新配置防火牆等等。這是一個合理的安裝前提條件,還是工業客戶通常會反對這一點? – Sameet 2009-05-25 17:07:48

+0

HTTP連接_is_套接字。答案是(正確)推薦的是客戶端發送一個GET,但服務器延遲發回一個響應,直到它準備好發送數據。 – 2009-05-25 17:18:20

+0

是的,但HTTP連接在端口80上,而不是由防火牆阻止?你所描述的聽起來很完美 - 服務器推遲響應,直到它有數據 - 如何去做這件事? 「 – Sameet 2009-05-25 17:21:13

2

您可以使用WCF回調 - 這是一個Web服務,您可以在其中訂閱來自客戶端的通知,並且服務器將向訂閱的客戶端發送消息。我的博客上有一個beginners guide

1

你可能會對SO question感興趣。你所描述的聽起來像一個Comet應用程序 - 服務器推送給客戶端。

1

結帳WebSync;它是ASP.NET/IIS的Comet解決方案,但也有一個完整的.NET客戶端可用,它可以與厚客戶端,Windows服務等進行集成。所以它聽起來像它應該很好地適合賬單。

相關問題