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

Maw*_*awg 3 delphi network-programming communication web-applications

我们打算设计一个有三个"层"的系统.

  1. 总部,有一台服务器
  2. 在区域基础上有很多"节点"
  3. 用户,使用iPad.

HQ与与用户进行双向通信的节点进行双向通信.用户从不与总部沟通,反之亦然.

从HQ(使用Delphi)和用户iPad的原生桌面应用程序判断Windows应用程序的权力.他们对节点没有意见.

如果有令人信服的技术论点,我可能能够在Windows程序中将它们从"法令"下降到"更喜欢"(并且,对于isntance,使其基于浏览器).节点没有GUI,他们只是坐在那里玩中间人.

这些东西进行通信的最佳方式是什么(SOAP/HTTP/AJAX/jQuery/home-brewed-protocol-on-top-of-TCP/something-else?)最好是端到端使用相同的协议,或者hq < - >节点和节点< - > iPad的不同协议?

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

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


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

文件从HQ"下坡"流向节点到iPad.文件永远不会"上坡",但会有一些小的数据包(除了确认),这些数据包是由iPad上的用户操作启动的.这些将转到本地节点,然后转到总部.我们可能会说<128字节.

我想在所有方向上都会有低速率的一般控制和维护流量.

mjn*_*mjn 5

对于推/拉(发布/订阅或对等通信),可以使用跨平台消息代理.我不知道是否有(IOS)对微软消息队列(MSMQ)的客户端库,但我也喜欢评价开源解决方案的HornetQ,阿帕奇的ActiveMQ,阿波罗,OpenMQ,阿帕奇QPidRabbitMQ的.

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

Delphi和Free Pascal 客户端库可用于许多企业级开源消息产品.(我是其中一些人的作者,支持ActiveMQ,Apollo,HornetQ,OpenMQ和RabbitMQ)

  • 我想你应该提到你是一些客户端库的作者. (2认同)