2011-08-30 78 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