【问题标题】:How to communicate within this system?如何在这个系统内进行通信?
【发布时间】:2011-04-08 02:43:06
【问题描述】:

我们打算设计一个具有三个“层”的系统。

  1. 总部,只有一台服务器
  2. 许多“节点”在区域基础上
  3. 使用 iPad 的用户。

HQ 与与用户进行 2 路通信的节点进行 2 路通信。用户从不与总部交流,反之亦然。

授权来自总部的 Windows 应用程序(使用 Delphi)和用于用户 iPad 的本机桌面应用程序。他们对节点没有意见。

如果有令人信服的技术论据,我可能会在 Windows 程序上将它们从“法令”击败到“偏好”(例如,使其基于浏览器)。节点没有 GUI,它们只是坐在那里扮演中间人。

这些东西通信的最佳方式是什么(SOAP/HTTP/AJAX/jQuery/home-brewed-protocol-on-top-of-TCP/something-else?)最好使用相同的协议端来end, 还是 hqnode 和 nodeiPad 的不同协议?

这两个接口的两端都可能希望启动一个事务(如果我采用自己的协议,我可以很容易地做到这一点),那么我应该使用 push/pull/long-poll 还是什么?

我希望这个描述是有道理的。如果没有,请提出问题。谢谢。


更新:
文件大小通常低于 1MB,不可能超过 10MB 甚至 5MB。在确认第一个文件之前不会发送第二个文件。

文件从总部“下坡”流向节点再到 iPad。文件永远不会“上坡”流动,但会有一些小数据包(除了 acks)是由 iPad 上的用户操作发起的。这些将到达本地节点,然后到达总部。我们可能在谈论

我想,在各个方向上也会有低速率的一般控制和维护流量。

【问题讨论】:

    标签: delphi web-applications network-programming communication


    【解决方案1】:

    对于推送/拉取(发布/订阅或点对点通信),可以使用跨平台消息代理。我不确定是否有用于 Microsoft 消息队列 (MSMQ) 的 (iOS) 客户端库,但我也会评估开源解决方案,例如 HornetQApache ActiveMQApolloOpenMQ、Apache QPidRabbitMQ.

    所有这些解决方案都为分布式消息传递(例如故障转移、集群、持久性)提供了可靠的基础,并且具有高性能和许多附加客户端。在此基础架构上,可以交换任何内容类型(JSON、二进制、纯文本)的消息,并且最重要的消息可以包含路由和优先级信息。它们还支持事务性消息传递。

    许多企业级开源消息传递产品都有 Delphi 和 Free Pascal client libraries available。 (我是其中一些的作者,支持ActiveMQ、Apollo、HornetQ、OpenMQ和RabbitMQ)

    【讨论】:

    • 我认为您应该提到您是其中一些客户端库的作者。
    • 我认为你应该为他们提供 URL :-) +1 & 谢谢。你列出了很多选项,但如果你不得不选择,那你会选择哪个?
    • @Mawg:来自 Habari JMS 客户端支持的消息代理,我建议看看 Apache ActiveMQ。通过 Fusesource fusesource.com 提供商业支持,Fuse 消息代理基于 ActiveMQ。 “ActiveMQ in Action”一书的两个示例章节 (PDF) 位于 manning.com/snyder,幻灯片演示位于 slideshare.net/bruce.snyder/…。第二个是 OpenMQ,一个精简而可靠的产品。 Habari 客户端库可从habarisoft.com/habari.html 获得
    【解决方案2】:

    查看消息包:http://msgpack.org/

    另外,这里有更多关于 SO 的 RPC 讨论:

    您可能对 ICE 感兴趣:http://zeroc.com/index.html
    他们有一个 iOS 层:http://zeroc.com/icetouch/index.html

    【讨论】:

      【解决方案3】:

      恕我直言,决定使用什么技术的必要条件太少了。交换什么数据,多久交换一次,大小是多少?是否有请求/响应时间限制?等等等等。在深入了解您的需求之前,切勿开始选择技术。

      【讨论】:

      • +1 一个足够公平的评论。事实上,我已经更新了问题。
      猜你喜欢
      • 1970-01-01
      • 2014-03-27
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 2020-01-17
      相关资源
      最近更新 更多