2011-08-30 73 views
20

我想創建一個移動消息服務,但我不知道使用套接字編程或Web服務哪個更好?套接字編程與Web服務?

創建此類服務時需要考慮哪些問題?如連接費用等。

如果您需要更多的細節,只需告訴我,然後再投票表決問題或關閉!

+1

誰投了下去!告訴我爲什麼 ?? – Adham

+0

很難理解你在問什麼。 Web服務通過套接字工作 - 它不是一個或兩個。另外「有什麼擔心......」似乎基本上要求回答者寫一本書。 –

+0

正如我所知,Web服務使用HTTP協議,其中HTTP數據包有很多額外的數據(頭),這意味着更多的流量消耗,是否有效地設計我們的協議,以減少使用套接字編程這樣的問題。關於considrations,我需要重要的頭條新聞,如果你不想要dertils .. – Adham

回答

17

由於他們對開發人員工具以及庫和框架的巨大興趣以及對他們的支持,Web服務一般來說「更容易」實現。但是,特別是如果您的有效負載很小(將消息看作典型的短信或推文的大小),那麼您使用webservices創建的開銷就會過高:通過無線網絡(如GPRS或UMTS)發送的字節仍然非常昂貴,到通過電纜或ADSL傳輸的字節。網絡服務帶有幾層不可見的信息,終端客戶也需要付費。因此,如果您的用例基於短消息,我至少會建議您進行一些帶寬模擬計算,並根據帶寬節省和應用複雜程度的增加做出決定。在看插座的同時,還要看一下UDP:如果你能忍受這樣一個事實,那就是基本上你把一個數據包丟給別人,而且在你的協議中沒有設計一些Ack機制,你永遠不會確定這個消息到達了,它非常高效,因爲沒有流量來創建和維護連接,甚至很長的消息都可以很好地在1個UDP數據包內傳輸。

編輯基於評論:

  • 流套接字:不知道你如何定義數據流,但流和消息對我來說是兩個截然不同的概念,一個流是數據的發送,而通常較長的序列消息是發送的實體,並且可選地由接收方確認或應答。
  • 帶寬模擬:理解我在說什麼的最簡單方法是獲得Wireshark,並將通過網絡傳輸的所有內容相加以完成一個簡短的字符串請求 - 您會看到幾層管理信息(即不可見的,只是爲了使不同的協議層工作),這些都是最終用戶支付的流量。然後,使用UDP編寫一個小型模擬服務來傳輸相同的消息,或者使用像netcat這樣的工具,很好的教程here,然後合併傳輸的字節。你會看到交換的字節數量有很大的差異。

編輯2,我忘了提及的東西:移動網絡曾經是開放的,透明的網絡與公共IP地址標識的設備。 NATed移動網絡正在快速發展,這對「圍牆花園」內外的設備如何通信產生影響(NAT traversal)。設計溝通渠道時,您需要考慮到這一點。

至於使用流的聊天應用:它提供了一些概念上的優勢,但可以很好地層聊天應用程序在UDP上,看herehere

+0

請你可以提供更多關於「我至少會建議做一些帶寬模擬計算」的細節.. ..非常感謝你提供非常有用的信息,例如 – Adham

+0

。你認爲這種服務背後的技術是什麼? .. http://www.redmondpie.com/chaton-for-iphone-android-and-blackberry-is-samsungs-answer-to-imessage-video/ – Adham

+0

對不起,我的意思是流,如果我想實現在線聊天,這是一個好的概念嗎? – Adham