看新闻很累?看技术新闻更累?试试下载 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.io 和 socket.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
评论