【问题标题】:What protocol should I use for fast command/response interactions?我应该使用什么协议来进行快速命令/响应交互?
【发布时间】:2010-11-04 16:41:03
【问题描述】:

我需要为快速命令/响应交互设置协议。我的直觉告诉我只需将一个简单的协议与 CRLF 分隔的 ascii 字符串(如 SMTP 或 POP3 的工作原理)组合在一起,并在需要保护它时通过 SSH/SSL 进行隧道传输。

虽然我可以这样做,但我更愿意在现有技术的基础上进行构建,以便人们可以使用友好的库而不是操作系统提供的套接字库接口。

我需要...

  • 来回传递结构化数据的命令和响应。 (XML、S 表达式,不用管。)
  • 服务器能够在不被轮询的情况下向客户端发出计划外通知。

有什么想法吗?

【问题讨论】:

  • 感谢您的回答。我希望搜索这个问题的人喜欢提供的答案列表。

标签: protocols


【解决方案1】:

如果你只是想要请求/回复,HTTP 非常简单。它已经是一个请求/响应协议。客户端和服务器端在大多数语言中广泛实现。扩大规模是很好理解的。

使用它的最简单方法是将命令作为 POST 请求发送到服务器,然后服务器在响应正文中发回回复。你也可以用你自己的动词来扩展 HTTP,但这会使得利用缓存代理和其他理解 HTTP 的基础设施更容易。

如果您需要异步通知,请查看发布/订阅协议(Spread、XMPP、AMQP、JMS 实现或商业发布/订阅消息代理,如 TibcoRV、Tibco EMS 或 Websphere MQ)。要选择的协议或实现取决于您正在构建的系统的可靠性、延迟和吞吐量需求。例如,网络拥塞时可以丢弃通知吗?当客户端离线时通知会发生什么 - 当客户端重新连接时它们会被丢弃还是排队。

【讨论】:

    【解决方案2】:

    AMQP 听起来很有希望。或者,我认为 XMPP 支持您想要的大部分功能,尽管开销很大。

    也就是说,根据您要完成的任务,简单的 ad hoc 协议可能会更容易。

    【讨论】:

    • 我接受这个答案是因为我要使用“临时协议”,因为各种建议并不真正适合我的应用程序。
    【解决方案3】:

    像 SNMP 这样的东西怎么样?我不确定它是否完全符合您的应用使用的模型,但它同时支持异步通知和拉取(即 TRAP 和 GET)。

    【讨论】:

      【解决方案4】:

      这是一个很好的问题,需要考虑大量变量,而问题只提到了其中的几个:数据包格式、异步与同步消息传递以及安全性。还有很多很多其他人可以考虑。我建议仔细阅读 7 层协议栈 (OSI/ISO) 的描述,并问自己在这些层需要什么,以及是要构建该层还是从其他地方获取它。 (您似乎对第 6 层和第 7 层最感兴趣,但也提到了一些较低的层。)

      还要考虑这是在安全关键型应用程序中还是在具有正式 V&V 的系统的一部分中。真正好的、值得信赖的通信系统不容易设计;此外,“动力不足”的协议可能会给应用程序带来很多编码负担以进行错误恢复。

      最后,我建议查看与您类似的其他应用程序如何完成这项工作(检查开源、阅读书籍等)。美国专利局数据库等也很有用;只要阅读他们试图解决的沟通问题的描​​述,就可以得到很棒的想法。

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 2016-04-30
        • 1970-01-01
        相关资源
        最近更新 更多