后台工作者或工作者与SQL数据库访问服务总线?

时间:2013-12-27 07:20:04

标签: azure azure-sql-database

我正在为Windows Phone 8构建游戏,并希望使用Windows Azure SQL数据库来存储用户的数据(主要是分数和排名)。

我一直在阅读关于SQL数据库的Azure文档,并找到this link,它描述了我正在寻找的场景(图中的场景B):我想要我的客户(游戏在用户的窗口中运行) phone)通过也在Windows Azure上托管的中间应用程序从SQL Server获取数据。

通过进一步阅读文档(我个人觉得它非常混乱,很难找到你在那里找到的东西),我已经了解到我可以将云服务用于这个中间应用程序,但是我不确定如果我应该使用提供HTTP API的后台工作者或带有服务总线中继的工作者(我发现我可以在this link中使用WP8中的服务总线)。

我有几个问题,我找不到答案:

1)在这种情况下,什么是“标准”方式?

2)如果两种方式都可以接受,除了更简单的方法连接和发送消息到我的中间应用程序之外,使用服务总线还有其他优势吗?有什么缺点?

3)云服务真的是我正在寻找的(而不仅仅是运行中间应用程序代码的虚拟机)吗?

1 个答案:

答案 0 :(得分:0)

由于有很多考虑因素,很难回答这类问题。我不相信有一种必然的“标准方式”。

Service Bus'中继服务的目的是帮助遍历防火墙和NAT,而不是与您的场景直接相关的东西,我怀疑。

但是,服务总线还包括一个消息传递功能,它提供用于在客户端或客户端/服务器之间交换消息的队列,主题和订阅。 您可以使用电话客户端向/从队列写入和读取消息。然后,您将拥有托管应用程序逻辑并根据需要访问数据库的辅助角色。

使用消息传递的一些优点包括负载均衡器,帮助处理流量峰值(以延迟为代价),帮助分离问题并允许您在后端关闭时接受来自客户端的请求,因为这可以帮助弹性。 从理论上讲,它们还可以帮助您以相同的方式向客户端发送消息,方法是使用每个客户端的队列或订阅,但对于大量客户端,这可能会成为管理问题。

在缺点方面,您必须使用什么是专有协议,并且需要了解服务总线的特性和限制。您需要随着时间的推移管理队列和主题。虽然通常不是问题,但也会有一些延迟增加,最后,您必须在客户端实现异步消息传递,这有利于实现,但也很难实现。

我认为许多架构都遵循WEB API路线,使用公开API的Web角色云服务。然后,Web角色可以执行任何业务逻辑并在后台连接到数据库。

您未提及的第三个选项是使用Windows Azure Mobile Services并将您的业务逻辑实现为服务API