使用服务总线与WCF与Compute角色进行通信

时间:2015-12-11 13:55:11

标签: c# azure

给定一个简单的高级架构,例如具有Web角色的云服务和计算角色,在什么情况下我们会选择使用WCF作为Web角色和计算角色之间的通信方法,而不是服务总线

有很多文档和有关服务总线的示例,但我想了解使用Service Bus而不是WCF是否有任何平台优势。

鉴于调用是同步的,而且很短,例如,用于将数据传入网站的典型API调用,您是否会选择WCF而不是排队消息并回复到队列中?

从逻辑上看,对于同步调用,WCF会提供最少的开销和延迟吗?

我不完全理解平台是否提供任何“聪明”的技巧来保持服务总线的运行速度与WCF上的TCP连接一样快(考虑到排队开销?)并希望进一步理解这一点。

目前,如果我要为这种类型的电话选择一个实现,我会选择WCF,这可能有点幼稚。

只是为了清楚,调用总是返回数据,它们不会长时间运行,或者火灾和遗忘。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为这取决于你想要做什么。

Service Bus通常用于我称之为常量联系类型的交互。它应该更高效,但设置起来更复杂。它还具有双向通信功能。所以你可以从中获得很多额外的灵活性。

我会将WCF换成更现代的Web Api。两者都主要在提供内容时解决相同的核心问题。我认为它只是一个API,不一定是消息传递和处理的平台。他们解决了两个不同的核心问题。

我实际上会以不同方式解决可能出现的问题并使用Azure网站+ WebJobs。它也是同样的事情。您可以将WebJob绑定到Azure队列,表或blob,并将消息放在该存储机制上,该作业将从中获取并执行某些操作。我不相信的网络角色应该依赖于从工作中回来的内容。该作业可能会在完成后击中AzureWeb站点上的SignalR Hub,从而将状态推回到受影响的各方。

参考资料: WebJobs:https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/

SignalR:http://signalr.net/

Azure Web Apps:https://azure.microsoft.com/en-us/services/app-service/web/