2010-01-07 68 views
5

雖然可以輪詢web服務,但是您是否知道另一種將更改推送到移動客戶端的方法,除了使用交換服務器郵件傳輸?如何將數據推送到.NET CF客戶端?

+0

你介意分享你提到的(POC)的源代碼嗎? – 2010-12-03 06:31:15

回答

3

作爲Mark Seemann worte:當我在Microsoft Dynamics Mobile團隊中時,曾經爲.NET CF做過客戶端通知系統的POC操作。

當時我沒有找到任何可以做到這一點的開箱即用解決方案,並且我不想搭載Exchange Server連接,因爲預期用戶沒有AD帳戶,大多數證明沒有使用交換服務器。所以我和你現在的情況一樣。我開始尋找可能的解決辦法...

我意識到,服務器coudn't連接到客戶端,因爲這個不斷變化的IP地址(3G將無線網絡,失去連接等)。該地必須連接到服務器。此外,我發現大多數網絡允許HTTP連接,但並不總是通過自定義端口的自定義TCP連接。

我用「彗星」做從客戶(.NET CF)服務器長期持有的http請求(IIS),並使用該連接推通知到客戶端。如果客戶在發出通知之前得到超時,它只會發出新的請求。

在服務器端我使用的AsyncHttpHandler的combnation並等待該檢查消息發送到連接的客戶機的每秒的線程。使用AsyncHttpHandler很重要,否則會阻塞IIS服務器。

POC運作良好,它證明是一個可靠的解決方案。這有一些缺點:如果你不小心,你會很快耗盡電池。

不幸的是簡單的參與,我在這裏發佈的代碼的代碼行數太多,但如果你喜歡,你更是歡迎與我聯繫,我會向您發送電子郵件我的POC。

+0

+1酷你加入派對:) – 2010-01-07 19:46:22

3

回來時,我在Microsoft動態移動團隊工作(直到2009年1月),沒有其他內置的方式做到這一點就不是通過Exchange服務器的郵件傳輸其他.NET CF。

然而,我的一個同事做了秒殺,其中移動客戶端openened HTTP連接到服務,並保持它開放,從而使服務對,它可能會推動一個開放的通道。

AFAIK,這基本上是Exchange Server郵件傳輸的功能。 IIRC,他得到了它正常的工作,但我會鳴叫他,看能不能讓他幫腔

-1

下面是使用一些選項在內部網絡:

  1. MSQM
  2. TcpListener

對於選項1,您需要安裝另一個基礎設施,但您獲得了標準的API和協議。

對於第二種選擇,你必須實現你自己的協議。

這兩個選項僅適用於封閉環境!

+0

@downvoter,我的回答有什麼問題? – 2010-01-08 07:28:10

2

嘗試檢出WebSync,這是IIS/.NET的comet服務器。它現在得到了完整的緊湊框架支持。

相關問題