3

我们打算设计一个具有三个“层”的系统。如何在此系统内通信?

  1. HQ,单个服务器
  2. 许多 “节点” 的区域基础上
  3. 用户,配备了iPad。

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

这是法令从HQ一个Windows应用程序(采用Delphi),并为用户解锁iPhone和iPad原生桌面应用程序的权力。他们对节点没有意见。

如果有令人信服的论据技术,我也许可以从“法令”的Windows程序“喜欢”打下来(并且对于isntance,使基于它的浏览器)。节点没有GUI,他们只是坐在那里玩中间人。

这些事情沟通的最佳方式是什么(SOAP/HTTP/AJAX/jQuery /家庭酿造协议在TCP/something-else之上?)是否最好使用相同的协议结束结束,或不同的协议hq < - >节点和节点< - > iPad?

每个这两个接口的两端可能希望启动事务(如果我摇我自己的协议,我可以很容易地做到),那么我应该使用推/拉/长轮询还是什么?

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


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

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

我想也会有一般控制&维护交通以低速率,在各个方向。

回答

5

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

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

对于许多企业质量的开源消息产品,有德尔福和免费Pascal client libraries available。 (我是他们中的一些人的作者,支持ActiveMQ,Apollo,HornetQ,OpenMQ和RabbitMQ)

+2

我想你应该提到你是这些客户端库中的一部分的作者。 – 2011-04-08 10:14:51

+1

我认为你应该为他们提供URL :-) +1和谢谢。 YOu列出了很多选项,但如果您*有*选择,那么您会选择哪一个? – Mawg 2011-04-09 01:12:37

+1

@Mawg:来自Habari JMS客户端支持的消息代理,我建议看看Apache ActiveMQ。通过Fusesource http://fusesource.com/提供商业支持,Fuse消息代理基于ActiveMQ。 “ActiveMQ in Action”一书的两个示例章节(PDF)位于http://www.manning.com/snyder/,幻灯片演示文稿位于http://www.slideshare.net/bruce.snyder/messaging-与-ActiveMQ的演示。其次是OpenMQ,一款精益而坚实的产品。 Habari客户端库可从http://www.habarisoft.com/habari.html获得。 – mjn 2011-04-09 07:58:49

1

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

+0

+1一个公平的评论。在fct中,我已经更新了这个问题。 – Mawg 2011-04-09 01:16:37