如何与Azure进行角色间通信?

时间:2013-02-17 00:23:07

标签: azure

我完全不知道如何获得Azure角色(无论是Web角色还是辅助角色)与另一个Azure角色进行通信?

我看过服务总线继电器,速度很荒谬 - 调试时需要大约6个小时才能将数据从一个角色转换为另一个角色。当我通过在云中运行的Web服务公开完全相同的数据时,我可以在一分钟内将数据下载到我的手机。荒谬。我假设数据是从我的机器发送到云,然后从那里返回到我的机器。

Service Bus Relays有一个名为Hybrid的模式,它应该打开一个直接的套接字连接,以便进行快速通信,但实际上没有关于如何实现此目的的文档。

我通过WCF NetTcpBinding在一个角色上公开了一个服务,但我不知道如何让其他角色能够调用它。

我还查看了服务总线队列/订阅,但您可以发送的邮件有256KB的限制!

我无法相信缺少文档和教程应该是一个常见的场景 - 两个角色之间的快速通信(很可能存在于完全相同的物理计算机上!)

非常感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:3)

如果您的角色属于同一个云服务,则可以通过内部端点访问它们。您可以获取角色和端口的内部IP地址,并建立WCF呼叫。

这是一个可能有用的主题http://msdn.microsoft.com/en-us/library/windowsazure/hh180158.aspx

答案 1 :(得分:0)

我在这里找不到任何令人满意的答案,所以我采取的方法是将数据写入sql azure,通过服务总线通知有更新,让所有订阅者从中获取更新的数据sql自己。它适用于这种特殊情况。

尝试通过服务总线发送数据本身非常慢。使用它作为角色间事件系统(使用服务总线主题/订阅)效果很好。

答案 2 :(得分:0)

您考虑使用Azure存储吗?听起来你想要从一个VM向另一个VM发送大包数据。发送数据的一种相对简单的方法是使用存储Blob和队列。首先,将数据写入blob。然后将消息写入队列,指示数据可用的位置(每个接收器都有自己的队列)。接收器然后下载消息并删除Blob。这比直接套接字连接慢,但也更简单并且是异步的。异步通信是云系统的一大优势。有了这个解决方案,如果接收器关闭以进行更新,它将在以后重新启动时收到消息。