azure服务器_如何使用Azure SignalR服务实现无服务器

azure服务器

构建实时应用程序并不容易。 您需要工具来同步内容,在服务器和客户端之间推送信息。 尽管诸如WebSocket或WebRTC的媒体层之类的技术在某种程度上可以提供您所需的基础协议,但它们只是故事的一部分。

引入SignalR

微软的ASP.Net引入了SignalR,用于通过Web传递实时数据。 它是基于WebSockets的双向协议,带有一组将其视为远程过程调用的API。 服务器可以在已注册的客户端上调用过程,而客户端可以对连接的服务器执行相同的操作。 使用SignalR,您可以将数据广播到当前连接到服务器的所有客户端,也可以将消息仅定向到一个(全部)高频。

[开发人员指南: 无服务器:AWS,Google Cloud和Microsoft Azure | 然后学习如何使用Microsoft的Azure功能以及如何使用AWS Lambda进行无服务器计算。 ]

因为SignalR使用WebSockets,所以每个连接都是持久的。 没有与消息相关的设置和拆卸,因此可以近乎实时地使用它。 它也是可扩展的,通过使用ASP.Net版本,您确实可以与大量客户端一起使用。 但这确实意味着要有适当的硬件来管理预期的负载,并准备根据需要添加更多的物理机或虚拟机。

如果WebSocket连接不可用,则可以指定备用协议(通常使用长HTTP会话),也可以让SignalR在客户端和服务器之间协商其自身的后备。 随着现代浏览器(例如Google Chrome)成为主流,您的代码中不太可能需要使用后备选项,但是如果您可能需要支持运行旧版本Internet Explorer的用户,仍然值得考虑。

在Azure上缩放SignalR

设置和运行SignalR服务并不难,但是扩展它可能很复杂。 这就是新的Azure SignalR服务发挥作用的地方,它提供与Azure服务的直接集成,而不必考虑底层基础结构以及可靠性和可用性问题。 Microsoft提供了99.9%的SLA,其中应包括大多数选项。

与Azure服务的集成还减少了您需要编写的代码量,因为可以将Azure Active Directory用于身份验证,将Azure Blob用于存储。 对于更复杂的应用程序,您可以使用SignalR将无服务器Azure函数或Azure事件中心和Azure事件网格中的数据馈送到仪表板,使其成为物联网应用程序或向大型产品线添加监控服务的有用工具。商业服务。

从ASP.Net迁移到Azure SignalR服务

如果您已经在使用ASP.Net SignalR,则尽管需要将代码从原始ASP.Net切换到ASP.Net Core的SignalR实现,但迁移到Azure SignalR Service可以帮助扩展。 API是不同的,因此这意味着更改您的代码。 迁移到Azure SignalR并不是将现有的ASP.Net应用程序从服务器迁移到Azure的问题。 通过将新的SignalR单元添加到应用程序来处理扩展,每个单元支持1,000个客户端。

首先在Azure门户中创建Azure SignalR服务资源。 在这里,您可以为服务命名,选择资源组和位置以及将其分配给订阅。 有两种定价选项:免费和标准。

free选项最适合测试和开发或旨在支持有限数量的连接的应用程序,该应用程序支持具有20个并发连接且每天限制20,000条消息的单个单元。 标准服务的费用为每小时每单位0.0335美元,每单位多达1000个连接和100万条消息。 您还可以扩展到100个单位。 部署后,您可以在Azure门户的SignalR服务设置中找到密钥和连接字符串。

使用SignalR进行无服务器应用程序的持久输出连接

向Azure Functions添加SignalR支持可以使您将持久性输出添加到仅在触发时运行的代码中。 无需编写代码以轮询功能以进行输出或扫描功能所管理的数据的更改,您只需接收并处理由作为消息传递中心的Azure SignalR处理的消息即可。

要使用功能中的服务,您需要将其绑定到功能的输出中。 同时,您还需要输入绑定来处理来自服务的连接信息。 这些可以利用Microsoft已添加到Azure SignalR ServiceREST API的优势,该API使具有REST支持的任何语言都可以访问它。

SignalR和REST

目前,该API有两个版本,分别是1.0 beta和1.0。 由于Beta版本支持1.0版中不支持的已弃用的API,因此最好在代码中仅支持1.0版。 这使您可以使用API​​向所有连接的客户端,子集组或单个用户进行广播,以及从组中添加和删除用户。 实际上,您最有可能使用SignalR作为单向广播协议向所有客户端发送消息。

通过REST访问SignalR Service API要求每个标头都有一个JSON Web令牌,该令牌是使用连接字符串生成的。 您还需要确认其访问者(通常是您的请求URL)和令牌的到期时间。

设置功能和所有SignalR端点后,触发器将反映在已连接客户端的更改中。 因此,例如,如果您正在使用某个功能来监视Cosmos DB数据库中的特定更改,则该功能在检测到这些更改后立即将其显示在客户端仪表板上。 因为您只需支付几秒钟的计算时间,而且对于大多数小批量应用程序来说,您可以留在SignalR Service免费层中,那么您应该能够以很少的钱在Azure中构建和运行监视服务。

并非每个应用程序都适合SignalR,但是在需要实时信息的地方,值得考虑。 大多数消息代理都作为队列运行,并且设计用于可靠的消息传递操作。 通过充当反映快速变化的数据的集线器,SignalR避免了延迟,同时仍对客户端显示为持久端点。 这是一个组合,因此值得将其作为任何大型无服务器应用程序模型的一部分。

翻译自: https://www.infoworld.com/article/3309414/how-to-go-serverless-with-azure-signalr-service.html

azure服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值