微软发布 Azure SignalR Service 的预览版本

  • Martin Abbott
  • 张卫滨

2018 年 5 月 27 日

话题:Azure语言 & 开发架构

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

最近,微软在西雅图举办的年度 Build 开发者会议上发布了 Azure SignalR Service 的公开预览版本。SignalR 之前就可以作为单独的 ASP.NET 库来下载,但现在它是第一次作为一个完整的托管服务来提供。

SignalR作为一个库已经开发了五年的时间了,它能够为 Web 应用提供实时体验,比如用于实时仪表盘。为了实现该特性,它能够从服务器端实时推送内容给连接的客户端。这个功能是通过WebSockets来提供的,但是在不支持 WebSockets 的场景下,它有备选方案,包括服务端事件(server-side events)、Forever Frame 以及长轮询(long polling)。

如果直接部署 SignalR 组件的话,用户需要负责安全、加密、容量以及扩展性。对服务进行跨节点扩展是通过一个静态的 backplane 来实现的,这个 backplane 管理每个服务节点之间的连接。自行托管的 SignalR 需要创建和管理 backplane,以便于提供系统扩展的基础设施,还需要包括提供支撑的库,如 Azure Service Bus、Redis Cache 或 SQL Server。

Azure SignalR Service 移除了自行托管实例的一些复杂性,直接提供了扩展和伸缩功能,不再需要提供自己的 backplane 了。另外,安全也是通过该服务的共享访问 key 来进行管理的。

与大多数 Azure 服务类似,该服务的实例可以通过 Azure Portal 进行创建。实例名需要保证全局唯一,你还需要选择 Azure Subscription 和 Resource Group 来存储服务,并且要指定价格等级(tier)和 region 位置。

Azure SignalR Service 目前在 East US、Southeast Asia、West Europe、West US 和 West US 2 这些 region 上提供了公开预览功能,支持两种定价等级。

在选择 Basic 等级时,最多可以选择 10 个扩展单元,它们决定了消息的数量以及一个实例可以支持的连接数。在公开预览中,不支持自动扩展。

SignalR 只是支持实时 Web 应用开发的众多组件之一,其他组件还包括firehose.iosocket.io。在其他流行的 JavaScript 框架中直接支持了 Firehose,比如 Backbone.js 和 Ember.js,它还使用了 RESTful 设计原则,任意能够调用 HTTP 端点的客户端都能与之交互。Socket.IO 用到了很多需要实时交互的应用程序之中,比如 Trello、Zendesk 和 Microsoft Office。

Azure SignalR Service 目前支持 ASP.NET Core,提供了对 JavaScript 和.NET 的客户端支持。该服务暴露了一个 HTTP 端点,允许其他的客户端调用该端点,实现与服务的直接交互。

David Fowler 是 Azure 的首席软件架构师,也是 SignalR 库最初的架构师之一,在版本发布声明中描述了如何将当前的 SignalR 项目转换为使用新的服务:

如果你已经有基于 SignalR 的 Web 应用,那么你可以添加一个对 Azure SignalR Service SDK 的引用,配置连接字符串,然后使用 services.AddSignalR().AddAzureSignalR() 和 app.UseAzureSignalR 来连接服务。这样的话,你的应用就能开始使用该服务了。

声明继续说到,随着服务向正式版本演进,将会提供其他语言的 SDK。

服务的 Basic 等级目前是每单元每小时 0.0335 美元,现在的定价页面为每个价格等级使用了不同的叫法,在门户中,Free 被称为 Dev/Test,而 Basic 被称为 Standard。

查看英文原文Microsoft Announces Preview of Azure SignalR Service

Azure语言 & 开发架构