请求/响应消息传递模式 - Azure Service Bus

时间:2014-04-30 17:45:45

标签: wcf azure messaging azureservicebus azure-servicebus-queues

全部,

我对请求响应模式有疑问...假设以下是我的方案

1.我在Windows Azure上运行了一项服务。用户可以调用此服务来执行命令。

2.我有一个在我的Intranet上运行的客户端应用程序。此客户端应用程序将执行该命令。运行客户端应用程序的计算机已连接到Internet,但没有静态IP,但无法通过Internet直接访问该计算机

3.我计划使用Azure Service Bus,通过该服务,我的Windows Azure服务可以与客户端应用程序通信以执行....

在这种情况下,我可以使用请求/响应消息,即服务是否可以发布消息并期望来自客户端的响应

OR

如果我为每个客户端使用命令队列,服务将推送命令在队列上执行,客户端将轮询队列并执行命令

感谢任何帮助

2 个答案:

答案 0 :(得分:0)

由于您使用的是WCF(基于标记),因此您应该考虑使用Service Bus Relay来调用WCF service asynchronously

答案 1 :(得分:0)

我假设你想在这里使用Relaybinding,使用WCF 您的Web服务(位于NAT,防火墙设备等之后)仅在此情况下打开出站连接。该服务正在侦听云中的已注册端点(由于凭据和协议,可以访问该端点)。所有传入服务调用都通过该端口/套接字发送。然后,响应将再次通过传出端口发回 如果您的服务的IP地址发生变化,它将再次注册(通过侦听相同的注册端点),您可以透明地访问该服务。

以异步方式实现请求/响应的另一种方法是通过队列。这不需要客户端和服务之间的任何打开连接,并且可以完全异步。这可以通过向您的特定服务的请求队列发送消息(具有相关ID)来实现。当该服务处理了该消息时,它可以使用会话将响应发送到应用程序的响应队列。这种模式的一个很好的例子可以在Alan Smith的博客上找到:http://www.cloudcasts.net/devguide/Default.aspx?id=13051