Delphi 如何在这个系统中进行通信?

Delphi 如何在这个系统中进行通信?,delphi,web-applications,network-programming,communication,Delphi,Web Applications,Network Programming,Communication,我们打算设计一个有三个“层次”的系统 HQ,只有一台服务器 区域基础上的许多“节点” 用户,使用iPad HQ与节点双向通信,节点与用户双向通信。用户从不与总部通信,反之亦然 这两个应用程序分别来自HQ(使用Delphi)的Windows应用程序和用户iPad的本机桌面应用程序。他们对节点没有意见 如果有令人信服的技术论据,我也许能够在Windows程序中将它们从“法令”改为“偏好”(并且,对于isntance,使其基于浏览器)。节点没有GUI,它们只是坐在那里扮演中间人 这些东西的最佳通信方式

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

  • HQ,只有一台服务器
  • 区域基础上的许多“节点”
  • 用户,使用iPad
  • HQ与节点双向通信,节点与用户双向通信。用户从不与总部通信,反之亦然

    这两个应用程序分别来自HQ(使用Delphi)的Windows应用程序和用户iPad的本机桌面应用程序。他们对节点没有意见

    如果有令人信服的技术论据,我也许能够在Windows程序中将它们从“法令”改为“偏好”(并且,对于isntance,使其基于浏览器)。节点没有GUI,它们只是坐在那里扮演中间人

    这些东西的最佳通信方式是什么(SOAP/HTTP/AJAX/jQuery/TCP之上的自制协议/其他什么?)最好使用相同的端到端协议,还是hqnode和NodePad使用不同的协议

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

    我希望这个描述有意义。如果没有,请提问。谢谢


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

    文件从HQ“下坡”到node再到iPad。文件永远不会“上坡”,但会有一些小数据包(除了ACK)由用户在iPad上的操作启动。这些将转到本地节点,然后再转到总部。我们可能正在谈论查看MessagePack:

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

    您可能对ICE感兴趣:
    他们有一个iOS层:

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

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


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

    我认为决定使用哪种技术的必要条件太少了。交换什么数据,多久交换一次,交换多少数据?是否存在请求/响应时间限制?等等。在深入了解您的需求之前,千万不要开始选择技术。

    我认为您应该提到您是其中一些客户端库的作者。我认为您应该为它们提供URL:-)+1&谢谢。您列出了许多选项,但如果必须选择,那么您会选择哪一个?@Mawg:从Habari JMS客户端支持的消息代理中,我建议您看看Apache ActiveMQ。通过Fusesource提供商业支持,Fuse message broker基于ActiveMQ。“ActiveMQ正在运行”一书的两个示例章节(PDF)位于,幻灯片演示位于。第二种是OpenMQ,这是一种精干可靠的产品。Habari客户端库可从+1获得,并有足够的评论。在fct中,我更新了问题。