我们打算设计一个具有三个“层”的系统。
- 总部,只有一台服务器
- 区域上有很多“节点”
- 使用 iPad 的用户。
HQ 与节点进行 2 路通信,节点与用户进行 2 路通信。用户从不与总部沟通,反之亦然。
权力机构规定总部的 Windows 应用程序(使用 Delphi)和用户 iPad 的本机桌面应用程序。他们对节点没有意见。
如果有令人信服的技术论点,我也许能够击败他们,从“法令”转向“更喜欢”Windows 程序(例如,使其基于浏览器)。节点没有 GUI,它们只是坐在那里扮演中间人。
这些东西通信的最佳方式是什么(SOAP/HTTP/AJAX/jQuery/home-brewed-protocol-on-top-of-TCP/其他东西?)最好端到端使用相同的协议,还是hqnode 和 nodeiPad 有不同的协议吗?
这两个接口的两端可能都希望启动一个事务(如果我推出自己的协议,我可以轻松地做到这一点),那么我应该使用推/拉/长轮询还是什么?
我希望这个描述是有意义的。如果没有,请提问。谢谢。
Update:
文件大小通常低于 1MB,不可能超过 10MB 甚至 5MB。在第一个文件被确认之前,不会发送第二个文件。
文件从总部“下坡”流向节点,再到 iPad。文件永远不会“上坡”流动,但会有一些小数据包(除了 ack 之外),这些数据包是由 iPad 上的用户操作发起的。这些将发送到本地节点,然后发送到总部。我们讨论的可能是
我想各个方向也会有低速率的一般控制和维护流量。
对于推/拉(发布/订阅或点对点通信),可以使用跨平台消息代理。我不确定是否有适用于 Microsoft Message Queue (MSMQ) 的 (iOS) 客户端库,但我也会评估开源解决方案,例如HornetQ http://www.hornetq.org/, Apache ActiveMQ http://activemq.apache.org/, Apollo http://activemq.apache.org/apollo/, OpenMQ http://mq.java.net/、阿帕奇QPid http://qpid.apache.org/ or RabbitMQ http://rabbitmq.com/.
所有这些解决方案都为分布式消息传递提供了可靠的基础,例如故障转移、集群、持久性、高性能和附加的许多客户端。在此基础设施上,可以交换任何内容类型(JSON、二进制、纯文本)的消息,并且顶部消息可以包含路由和优先级信息。它们还支持事务消息传递。
有Delphi和Free Pascal可用的客户端库 http://www.habarisoft.com/适用于许多企业优质开源消息传递产品。 (我是其中一些的作者,支持ActiveMQ、Apollo、HornetQ、OpenMQ和RabbitMQ)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)