asp.net .NET 8 Blazor通过自动/全局交互处理数据

zaqlnxep  于 6个月前  发布在  .NET
关注(0)|答案(1)|浏览(97)

我一直在熟悉. NET 8 Blazor Web App的结构,并试图理解和使用"Auto"交互式渲染模式,以及"Global"交互位置。在创建新解决方案时,有两个项目:服务器和wasm。使用自动/全局交互设置,组件似乎总是首先由服务器呈现,然后切换到wasm渲染。我真的很喜欢这个概念,但是在整个过程中我处理数据时遇到了问题。
当尝试从wasm项目上的组件查询数据库时,组件最初是服务器呈现的,查询结果显示在wasm组件上。但是,一旦服务器连接关闭,组件重新呈现为wasm,组件就无法访问服务器数据库,查询结果也会消失。同样,当试图从服务器项目上的组件查询数据库时,组件最初是服务器呈现的,查询结果显示在服务器组件上。但是一旦服务器连接关闭,组件试图重新呈现为wasm,出现"对不起,页面未找到"错误。
我看过很多例子视频,用户都强调了自动渲染切换。然而,他们都使用每个页面/组件的交互位置来设置他们的项目,并手动设置这些页面以保持活动的服务器连接。考虑到这一点,全局交互位置处理程序有什么意义呢?

  • 正如我的例子中所提到的,解决方案在重新呈现为wasm时会丢弃我的服务器组件。如果服务器端组件基本上无法使用,为什么还要使用这个"全局"设置呢?
  • 如果这个配置的目的是在每个组件上从服务器全局自动切换到wasm,那么为什么在重新呈现为wasm时没有内置的方法来处理查询结果或类似的数据呢?
  • 当查询数据库时,当从服务器自动切换到wasm时,我应该如何适当地保留这些数据?

虽然我喜欢全局自动开关的概念,但我觉得我缺少了理解如何正确使用它的关键部分。

fdx2calv

fdx2calv1#

这都是关于设计和抽象的。
考虑您的数据库示例。
在应用程序中,组件应该与使用IDataBroker接口获取其数据的视图提供程序对话。
在服务器模式下,DI IDataBroker连接到EF。在WASM模式下,DI IDataBroker对服务器上的控制器进行API调用。UI和核心域代码是相同的。它只是通过DI提供的IDataBroker的不同实现进行接口。
因此,您需要设计数据管道来运行以下两种情况:
1.直接通过EF
1.通过API管道
例如,您的请求,例如集合过滤和排序,需要可序列化。
Net 8中没有银弹将dbContext调用从组件连接到WASM中的数据库。当页面组件切换模式时,它需要切换IDataBroker实现。
这里有一个链接,指向基于Weather页面https://github.com/ShaunCurtis/Blazor.ExploreRendering/blob/master/Documents/An-Interactive-Data-Pipeline.md的SSR/CSR数据管道的演示实现

相关问题