我們有一個Win CE 6.0設備,它需要使用將使用WCF提供的服務。我們試圖儘可能減少帶寬使用,並且通過簡單的測試,我們發現使用UDP而不是HTTP節省了大量的數據使用。使用WCF服務的Win CE 6.0客戶端 - 減少帶寬
我明白在.NET Compact Framework 3.5設備上有關於WCF的限制,並且很好奇人們認爲什麼是合適的前進方向。開發一個自定義UDP綁定是否有意義,並且對雙方都有效?
任何反饋將不勝感激。謝謝。
我們有一個Win CE 6.0設備,它需要使用將使用WCF提供的服務。我們試圖儘可能減少帶寬使用,並且通過簡單的測試,我們發現使用UDP而不是HTTP節省了大量的數據使用。使用WCF服務的Win CE 6.0客戶端 - 減少帶寬
我明白在.NET Compact Framework 3.5設備上有關於WCF的限制,並且很好奇人們認爲什麼是合適的前進方向。開發一個自定義UDP綁定是否有意義,並且對雙方都有效?
任何反饋將不勝感激。謝謝。
雖然http確實有一些開銷,但如果這成爲您數據使用的重要部分,那麼我會懷疑您的API過於「健談」,並且應該考慮更少的消息(每個消息都攜帶更多的負載)。
下一點是;我們如何減少給定數量的有效載荷的帶寬?壓縮是一個選項,但在某些平臺上可能會出現問題。另一種方法是使用固有密集和高效處理的序列化格式(就CPU週期而言,因爲您使用的是低功耗設備)。爲此目的,像「協議緩衝區」這樣的東西將是理想的。
protobuf-net是用於.NET的協議緩衝區的CF兼容實現; CF構建沒有所有漂亮的WCF功能(因爲CF不支持它們),但它可以非常有效地工作。
此外,如果你做 go http,那麼應該考慮MTOM,因爲這樣可以減少二進制數據的編碼開銷(即protobuf-net將使用什麼)。
移動到UDP 可以是一種選擇,但我會嘗試像HTTP + protobuf網+ MTOM 第一(用較少的「饒舌」 API相結合),看看它如何。
我也應該注意到,protobuf-net的當前(可下載)版本與CF有一些「糾結」它可以工作,但它不像它可能那樣快(由於CF上的元編程的限制)。 「v2」產品(尚未發佈)解決了所有這些問題,允許在CF上完全靜態(和快速)執行。最重要的是,它是免費的。
非常徹底和周到的答案,謝謝馬克。毫無疑問,我想使用HTTP而不是編寫自定義的UDP綁定,並且團隊提出的原因是因爲他們相信這會減少頭和負載之間「超過線路」發送的大小。所以,似乎使用協議緩衝區和MTOM over http會顯着減少帶寬。我將在今晚開始研究protobuf-net。 – Sean 2010-06-09 19:51:15