使用Windows Azure Notification Hubs将推送消息广播到数以百万计的移动设备上

[原文发表地址]  Broadcast push notifications to millions of mobile devices using Windows Azure Notification Hubs

[原文发表时间] 2013-1-22 1:59

今天我们发布了一些非常棒的增强功能到Windows Azure上。

今天早些时候我写了一篇博客,是关于Windows Azure媒体服务一般可用性(GA)的发布。Windows Azure媒体服务给你提供你所需要的一切,它可以为消费者在任何设备上快速构建非常棒的,高度可扩展的,端到端的针对流媒体点播视频的解决方案。

今天我们还发布了一个非常酷的Windows Azure 新功能预览版--Notification Hubs。Notification Hubs提供了一个高度可扩展的,跨平台的推送消息基础结构 ,它使你能够高效地推送通知信息到数以百万计的移动用户和设备上。

使用Notification Hubs广播推送消息

推送消息是移动应用程序至关重要的组成部分。这不仅体现在用户应用程序上,它可以提高应用程序的兼容和使用能力,而且还体现在企业级应用程序上,它实时更新信息,可以提高员工对业务事件信息的反应速度。

发送一条单独的推送通知消息给一个移动用户是相对简单的(且Windows Azure 移动服务已经可以轻松地 做到)。高效地同时推送消息给成千上万的移动用户就困难很多了- 我们需要考虑代码和必要的维护来构建一个高度可扩展的,多平台的推送基础结构,并且以低延迟的方式工作。

Notification Hubs是今天我们加入到Windows Azure上的一个新功能,它提供给你一个高度可扩展的推送消息基础结构,帮助你高效地推送通知信息给用户。它可以自动扩展以适应数以百万计的移动设备,而不需要你重新构建你的应用程序或者执行你自己的共享模式,而且它支持用多少付多少的计费模式。

今天我们推出了Notification Hubs服务的预览版 ,提供 如下功能:

  • 支持跨平台消息推送。 Notification Hubs提供了通用API来发送推送消息到各种设备平台。你的应用程序可以以特定于平台的格式或者以平台独立的方式来发送通知。到2013年1月为止,Notification Hubs已经可以推送消息到Windows 8 应用程序和iOS应用程序上。对于安卓和Windows Phone的支持很快就会实现。
  • 高效地Pub/Sub路由和基于标记的多播。Notification Hubs被优化了,可低延迟推送消息到成千上万的设备上。你的后台服务器可以触发一条消息到Notification Hubs,然后千万条消息就会自动推送到你的用户那里。在Notification Hubs注册时,设备和应用程序可指定几项per-user标记。这些标记不需要预先规定或者处理,并提供一个非常简单的方发来使用单一API调用以此发送过滤掉的通知给无限的用户或者设备。因为标记可以包含一些应用程序特定的字符串(比如用户id, 最喜欢的运动队,股票行情,具体位置等等),这些信息的使用有效地减轻了后台应用程序存储和管理设备,或实现每个用户自己的通知路由信息的负担。
  • 高度可扩展。Notification Hubs使你无需重构或者共享你的应用程序就可以与数以百万计的设备通信。Pub/sub路由机制允许你以超高效的方式发布消息。这使得你无需构建你自己的路由基础结构就可以以非常简单的方式路由和递送消息到数以百万计的用户那里。
  • 任何后端应用程序都可使用NotificationHubs。Notification Hubs可以方便地被整合到任何后台服务器应用程序中。它可以与使用Windows Azure移动服务所构建的应用程序无缝地使用。它还可以被托管于IaaS虚拟机上的(无论windows 或者 Linux)、云服务上的或者网站上的服务器应用程序所使用。这使得你可以立即获得它的优势,并且无需改变你余下的后台应用程序架构。

今天就尝试下Notification Hubs

你可以通过在Windows Azure管理门户网站上创建一个新的Notification Hubs来尝试下Windows Azure所支持的Notification Hubs – 在New对话框中的“App Services”类别下选择“Service Bus Notification Hub”选项就可以创建:

image

创建一个新的Notification Hubs 1分钟都不到,一旦你创建了,就可以进去看到仪表盘上的活动。其中它允许你看到有多少设备已注册,有多少消息已经被推送,有多少消息成功的通过它发送,及有多少消息推送失败:

image

然后你可以点击“Configure”选项卡来注册你的Notification Hubs,它支持微软的Windows 通知系统和苹果的 APNS 服务(我们在不久的将来就会添加对安卓的支持):

image

一旦配置好了,使用Notification Hubs注册任何客户端应用程序或者设备都很简单(它们可以有选择地关联到标签,这样Hubs可以帮你自动筛选将消息发送到哪些用户)。这样你就可以只用几行代码就实现播送消息到你的用户或者移动应用程序上。

举例,下面的代码是用来在你的服务器后台应用程序上将消息发送给所有在你的Notification Hubs中注册的Windows 8 用户的。

var hubClient = NotificationHubClient.CreateClientFromConnectionString(connectionString, "scottguhub");

var notificationBody = WindowsNotificationXmlBuilder.CreateToastImageAndText04Xml("myImage.jpg", "text1", "text2", "text3");

 

hubClient.SendWindowsNativeNotification(notificationBody.InnerXml);

 

上面的单个Send API调用可以用来发送消息到一个单独的用户-或者广播到数以百万计的用户。Notification Hub将会自动处理pub/sub扩展的基础设备来适应注册设备的增加,并且以低延迟的方式发送消息,你不需要担心任何扩展逻辑的执行(也不会影响你自己的代码运行)。这使得它非常容易建立更加吸引人的、实时的移动应用程序。

学习更多内容

以下是一些指南或者学习教程,可以帮助你快速上手,尝试获得新Notification Hubs的支持:

我还强烈推荐你看以下两个来自Clemens Vasters的视频:

总结

Notification Hubs提供了一个高度可扩展的,跨平台,推送消息的基础架构,使得你可以有效地路由推送通知消息给数以百万计的移动用户和设备。这将使你的推送消息逻辑更加简单和富有扩展性-使得你可以构建更好的应用程序。

你可以立即尝试下新Notification Hubs的支持预览版。如果你还没有Windows Azure账户,你可以申请一个免费的并且今天就开始使用。我们将非常期待看到你用它所构建的应用程序!

希望对你有所帮助,

Scott