我有一个托管在 Azure 中的 ASP.NET MVC 应用程序。 该应用程序由桌面应用程序补充,该桌面应用程序还具有用于与 III 方接口(interface)进行通信的 WCF 服务。 WCF 在本地托管。
有成千上万的客户在不同的地理位置使用桌面应用程序。 到目前为止,每个桌面应用程序都过去在 WCF 的帮助下使用 api 与 Web 应用程序进行通信。 这仅限于桌面应用程序的需求。 每当桌面应用程序需要与 Web 应用程序通信时,它都会使用 WCF 的 Web api 方式。
现在,我想要的是:- 根据需要从 azure 访问不同的桌面应用程序(通常称为站点)。 这是通过网络应用程序/移动应用程序进行在线订购系统所必需的。 我不想继续从桌面应用程序轮询以了解该网站是否有任何新订单。 我觉得如果我能从另一边踢球的话会更好。 另外,请记住,站点的 IP 不会是固定的。防火墙可能有问题。 NAT 可能会以不同的方式翻译资源标识符。
Azure 中的服务总线可能会有任何帮助,但令我困惑的是,每个桌面应用程序都有自己的 WCF 服务,并且订单应该仅到达相应的站点。
任何类型的想法都将受到赞赏。
最佳答案
根据您的描述,服务总线消息传递是实现此目标的完美方式。
更多关于Service Bus Messaging的信息,我们可以引用:Service Bus queues, topics, and subscriptions
此外,我们还可以使用RabbitMQ
或ZeroMQ
,这与Service Bus Messaging类似,因为它们都是免费的。您可以选择实现您的需求的最佳方式。
关于ZeroMQ和RabbitMQ的区别:
ZeroMQ具有更好的性能,但它是在允许消息数据丢失的情况下构建的,适用于高吞吐量/低延迟的应用程序。与ZeroMQ不同,RabbitMQ完全实现了AMQP协议(protocol),类似于邮箱服务,支持消息持久化、事务、拥塞控制、负载均衡等,使得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的信息,大家可以引用:
关于c# - 如何从 Azure Web 应用程序与 IIS 中本地托管的 WCF 服务进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51592810/