@levinzhang
2018-05-26T12:47:25.000000Z
字数 1739
阅读 596
by Martin Abbott
最近,微软在西雅图举办的年度Build开发者会议上发布了Azure SignalR Service的公开预览版本。SignalR之前就可以作为单独的ASP.NET库来下载,但现在它是第一次作为一个完整的托管服务来提供。
最近,微软在西雅图举办的年度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。