繁体   English   中英

如何从Azure Web应用程序与IIS本地托管的WCF服务进行通信?

[英]How to communicate from Azure web app to WCF services hosted locally in IIS?

我在Azure中托管了一个ASP.NET MVC应用程序。 此应用程序补充有一个桌面应用程序,该应用程序还具有用于与第三方接口进行通信的WCF服务。 WCF在本地托管。

有成千上万的客户端在不同地理位置使用桌面应用程序。 到目前为止,每个桌面应用程序都曾经在WCF的帮助下使用api与Web应用程序进行通信。 这仅限于桌面应用程序的需求。 每当桌面应用程序需要与Web应用程序通信时,它都会使用WCF中的Web API。

现在,我想要的是:-根据需要从天蓝色访问不同的桌面应用程序(通常称为站点)。 由于通过Web应用程序/移动应用程序的在线订购系统,因此需要此功能。 我不想继续从桌面应用程序轮询以了解该站点是否有任何新订单。 我觉得如果我能从另一边打球会更好。 另外,请记住,站点IP不会固定。 防火墙可能有问题。 NAT可能会转换资源标识符的方式有所不同。

天蓝色的服务总线可能会有所帮助,但令我感到困惑的是,每个桌面应用程序都具有自己的WCF服务,并且订单应仅到达各自的站点。

任何形式的想法,将不胜感激。

根据您的描述,服务总线消息传递是实现此目标的理想方法。

有关服务总线消息传递的更多信息,我们可以参考: 服务总线队列,主题和订阅

此外,我们还可以使用与服务总线消息传递类似的RabbitMQZeroMQ ,因为它们都是免费的。 您可以选择实现需求的最佳方法。

关于ZeroMQ和RabbitMQ之间的区别:

ZeroMQ具有更好的性能,但它是在允许消息数据丢失应用于高吞吐量/低延迟应用程序的情况下构建的。 与ZeroMQ不同,RabbitMQ完全实现了AMQP协议,该协议类似于邮箱服务,支持消息持久性,事务,拥塞控制,负载平衡等,使RabbitMQ具有更广泛的应用场景。

Function                    RabbitMQ                      ZeroMQ
Message persistence         Support                       Not Support
Transaction                 Support                       Not Support
performance                 Low                           High
stability                   High                          Low
Support for AMQP protocol   Support                       Not Support
Application scenario        Data loss is not allowed      High throughput

有关RabbitMQ和ZeroMQ的更多信息,我们可以参考:

兔子MQ

零MQ

如果您能够修改桌面应用程序,那么使用SignalR实现websockets连接可能值得一看。 桌面应用程序使用您提供的SignalR集线器进行注册。 然后,您可以从例如ASP.NET MVC应用程序将数据推送到客户端。 它工作非常可靠,并且可以很好地处理许多连接。 它通常用于实时Web通信,但在您的情况下也可能有用。

不利的一面可能是,桌面应用程序最初需要注册到中心才能接收推送消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM