【问题标题】:How can I run offline database usage in Blazor WebAssembly-PWA?如何在 Blazor WebAssembly-PWA 中运行离线数据库使用?
【发布时间】:2020-10-25 22:48:31
【问题描述】:

我有一个Blazor WebAssembly ASP.NET Core hosted - PWA 应用程序并想离线运行它。该数据库目前使用 SQLite 和 EF-Core 构建。是否可以添加离线功能?我已经阅读了有关IndexedDB 的信息,但实际上并不知道如何在项目(客户端)中实现它。或者是否有任何 NuGet 包可以提供这种支持?

我想为项目带来的功能是 - 跟踪本地更改并在数据库再次联机时将其提取到数据库。

【问题讨论】:

  • 啊,你知道,hosted 不是 webassembly。而且您的数据库(sqlLite)也不完全是 webassembly。 sqllite 也不会真正处理同步 - 这需要编程。因此简单的答案是否定的。托管模型在服务器上运行,不使用 WebAssembly。
  • @TomTom 它是 WebAssembly 客户端,但另外还有服务器端。因此,在运行时,服务器正在构建客户端,它们可以通过 Http 请求进行通信。 “离线”数据库应该以某种方式在客户端项目中,并通过 Http 请求获取到服务器数据库。唯一的问题是我不知道该怎么做^^..

标签: c# asp.net-core blazor indexeddb blazor-webassembly


【解决方案1】:

我正在使用事件溯源来解决这个问题。如here 所述,它可以很好地同步偶尔连接的客户端。这意味着放弃实体框架并可能重新架构您的整个持久性技术堆栈,因此它远非理想。但是,如果您计划构建一个大型复杂系统,那么这就是您要走的路。

【讨论】:

    【解决方案2】:

    你可以试试这个包。这是一个使用 IndexedDB DOM API 的 Blazor 库

    https://github.com/amuste/DnetIndexedDb

    【讨论】:

      【解决方案3】:

      我创建了一个库,为应该完成这项工作的移动客户端提供双向离线同步:https://github.com/stefffdev/NubeSync

      尤其是在多个客户端确实更改了记录时处理冲突解决可能会变得很棘手,因此您可以以此为起点。

      我计划很快创建一个 blazor wasm 离线示例并在博客中介绍它。

      【讨论】:

      • 嗨,我正在查看 Blazor WASM 的示例,这让我很困惑。它似乎直接从您的 Razor 页面通过 http 客户端调用服务器。这是否为应用离线多天(允许用户继续工作)然后在线同步一次时提供持久缓存?
      • 您好,您是对的,在提供的示例中,我只是调用 REST 调用而没有任何离线功能。目前我没有在 Blazor 离线客户端上工作,因为我们现在没有开发 Blazor 应用程序。你可以在这里找到一些信息github.com/stefffdev/NubeSync/issues/22
      【解决方案4】:
      猜你喜欢
      • 2023-02-15
      • 2021-06-15
      • 2021-01-07
      • 2020-08-21
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      相关资源
      最近更新 更多