web-services - 套接字编程与 Web 服务?

标签 web-services sockets

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




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

创建此类服务时需要考虑哪些问题?例如连接成本..等。

如果您需要更多详细信息,请在否决或关闭问题之前告诉我!

最佳答案

Web 服务通常说“更容易”做起来,这要归功于对它们的极大兴趣以及开发人员工具和库和框架对它们的支持。

但是,特别是如果您的有效负载很小(想想典型 SMS 或推文大小的消息),您使用 Web 服务创建的开销是令人望而却步的:与传输的字节相比,通过 GPRS 或 UMTS 等无线网络发送的字节仍然非常昂贵电缆或 ADSL。 Web 服务带有几层不可见的信息,最终客户也必须付费。

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

在查看套接字的同时,还请查看 UDP:如果您可以接受这样一个事实,即基本上您向某人发送一个数据包,并且如果不在您的协议(protocol)中设计一些 ack 机制,您将永远无法确定消息是否到达,它非常有效,因为没有流量来创建和维护连接,即使很长的消息也可以很好地在 1 个 UDP 数据包内传输。

根据评论编辑:

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

  • EDIT2,我忘了提及:移动网络曾经是开放、透明的网络,设备由公共(public) IP 地址标识。 NATed 移动网络正在迅速发展,这对“围墙花园”内外的设备如何通信产生了影响 (NAT traversal)。在设计沟通 channel 时,您需要考虑到这一点。

    至于在聊天应用程序中使用流:它提供了一些概念上的优势,但是您可以很好地将聊天应用程序放在 UDP 之上,请看 herehere

    关于web-services - 套接字编程与 Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237459/

    相关文章:

    ios - 快速处理 XML 解析响应

    linux - 如何在shell脚本中创建套接字(域套接字)?

    python - Flask-SocketIO sid 和命名空间问题

    c - 非阻塞套接字接收

    java - 套接字上的 ClosedChannelException

    c# - 如何读取多个文件txt c#

    web-services - 用于使用 webServices 的 Curl 命令行?

    java - 对象作为 Apache CXF REST 服务方法中的参数

    web-services - 使用 SOAP 从 VBA 调用 Web 服务

    sockets - 使用JCA入站套接字资源的MDB部署后配置