【问题标题】:Azure push notification to update app stateAzure 推送通知以更新应用程序状态
【发布时间】:2019-02-03 15:32:49
【问题描述】:

我是 Azure 的新手,如果我的问题听起来不清楚,请原谅我,但我会尽力解释。

我认为现在需要某种推送通知而不是按时间间隔提取数据是很常见的。

所以,如果我有一个移动应用程序、一个 Web 应用程序和一个桌面应用程序都与 Azure 通信,如果其中一个应用程序更新了 Azure SQL 数据库中的某些内容,我希望避免不得不在我的其他应用程序,而是自动将这些更改推送给它们。

我认为 Azure 中应该有某种机制来通知应用程序(无论是 Web、移动设备还是桌面)这些更改。

有类似的吗?我应该调查什么?

更新 1

假设我有一个 Web(Angular 或其他)Azure 应用程序与存储汽车信息的 Azure SQL 数据库通信。这个应用程序允许我进行 CRUD 操作,这样我就可以从数据库中添加、更新、删除、读取汽车。

  • 数据库目前仅包含有关 BMW 和 Toyota 的信息
  • 用户登录我的网络应用程序并查看有关 BMW 和 Toyota 的信息,即 info 存在于我的 Azure SQL 数据库中。
  • 用户登录我的移动应用程序,该应用程序连接到 azure 并从数据库中信息并在屏幕上显示宝马和丰田
  • 登录网络应用程序的用户添加有关本田的新信息(或删除现有汽车,或更新现有汽车),信息存储在 网络应用程序中的数据库和本田节目
  • 登录到移动应用程序的用户现在必须点击刷新按钮才能提取数据库中的最新数据。

如何将这些数据自动立即推送到移动应用,而不是让移动应用在某个时间间隔它或点击刷新按钮?

【问题讨论】:

    标签: azure xamarin.forms azure-sql-database


    【解决方案1】:

    绝对! Azure 有多种消息传递解决方案来解决此类问题。但是,如果不完全了解您的问题空间、数据的语义或您的整体架构,就很难给出精确和量身定制的指导。鉴于您提到您的一些客户端将是移动设备,您应该选择轻量级的东西,例如Azure Notification Hubs。您还应该查看服务总线和事件中心here

    无论您选择何种服务,我都不建议在这些推送通知中发送实际数据本身。保持通知非常轻量级。客户端在收到通知后,可以通过轮询您的后端以获取实际数据更改来做出反应。

    【讨论】:

    • 我想补充一点,它可能是这些技术的组合。您可能还包括用于 Web 应用的 SignalR。
    • 通知中心是适合您的方案的方式。消息的最大大小限制为 256 字节 - 2 KB,具体取决于移动平台,因此您的应用程序应在收到更新通知后从后端重新获取数据。请阅读docs.microsoft.com/en-us/azure/notification-hubs/…docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/…
    • 没有。当您的移动设备收到通知时,您想做什么由您决定。您可以通过比较更新的数据和设备上次刷新时间之间的时间戳来使您的拉取更加智能,例如//示例 android 伪代码 public class MyHandler extends NotificationsHandler { public void onReceive(Context context, Bundle bundle) { ctx = context; String nhMessage = bundle.getString("message"); if (nhMessage == "carMakesUpdated"){ dataService.get("carMakes", lastPullDate); } } }
    • SignalR 有一个 JavaScript 和一个 .NET 客户端。虽然我从未这样做过,但我假设您可以在 Xamarin 应用程序中使用 .NET 客户端。如果这样做,请特别注意 SignalR 连接生命周期事件。当您的移动应用程序移至后台并处于活动状态时,服务器可能会终止您的 SignalR 连接,认为它处于非活动状态。您需要重新建立它。我在 Ionic 移动应用和 Chrome 扩展中使用 SignalR JavaScript 客户端并取得了巨大成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2017-11-23
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多