网络服务 – 套接字编程与Web服务?

我想创建一个移动消息服务,但我不知道哪个更好地使用套接字编程或Web服务?

在创建此类服务时需要考虑什么问题?如连接成本等。

如果您需要更多的细节,请在投票之前先告诉我,或关闭!

由于对他们的巨大兴趣以及对开发人员工具以及图书馆和框架的支持,Webservices一般来说“更容易”。

然而,特别是如果您的有效载荷很小(认为邮件的典型短信或推文的大小),您用Web服务创建的开销是禁止的:通过无线网络(如GPRS或UMTS)发送的字节仍然非常昂贵,与传输的字节相比电缆或ADSL。而网络服务提供了几层隐形信息,最终客户也必须支付。

因此,如果您的用例基于短消息,我至少建议您进行一些带宽模拟计算,并根据带宽节省的决定和应用的复杂性增加。

在查看套接字的同时,还可以看看UDP:如果您可以使用这样一个事实:基本上你会扔一个数据包,并且没有在协议中设计一些确认机制,你永远都不会确定该消息到达,这是非常有效的,因为没有流量创建和维护连接,甚至很长的消息可以很好地传输到1个UDP数据包内。

编辑基于评论:

流套接字:不确定如何定义流,但是流和消息对我来说是两个截然不同的概念,流是通常是更长的数据发送序列,而一个消息是一个发送的实体,并可选地由收件人。
>带宽模拟:了解我所说的最简单的方法是获得Wireshark并将所有通过网络传输的东西加入到一个非常短的字符串的简单请求中 – 您将看到几层管理信息(即不可见,只是使不同的协议层工作),这些都是最终用户支付的流量。然后,使用UDP编写一个小的模拟服务来传输相同的消息,或者使用像netcat这样的工具,好的教程here,并加上传输的字节。您将看到交换的字节数有很大的差异。

EDIT2,我忘了提到:移动网络以前是开放的,透明网络,设备由公共IP地址标识。对NATed移动网络的快速发展,这对于这个“围墙花园”内部和外部的设备如何可以通信(NAT traversal)有影响。设计沟通渠道时,您需要考虑到这一点。

对于聊天应用程序使用流:它提供了一些概念上的优势,但是您可以很好地在UDP上面层叠一个聊天应用程序,看看herehere

http://stackoverflow.com/questions/7237459/socket-programing-vs-web-service

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:网络服务 – 套接字编程与Web服务?