1

全部 ,

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

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

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

3.我打算使用Azure Service Bus,我在Windows Azure上的服务可以通过它与客户端应用程序通信来执行......

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

或者

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

任何帮助表示赞赏

4

2 回答 2

0

由于您使用的是 WCF(基于标记),因此您应该考虑使用Service Bus Relay异步调用WCF 服务。

于 2014-04-30T20:53:06.723 回答
0

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

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

于 2014-05-02T04:30:01.397 回答