使用 WASM 和服务器端创建相同的 Blazor 应用程序

Create the same Blazor app with both WASM and Server-Side

我想创建一个支持托管 WASM 和服务器端的 blazor 应用程序(实际上是两个应用程序)。它们不需要是动态切换的单个应用程序。实际上,我更喜欢 wasm.myapp.com 和 server.myapp.com 这样两个独立的应用程序。用户可以根据自己的网络环境选择自己喜欢使用的风格。同样根据业务需求,我可以针对不同的场景(例如浏览器限制)选择一种风格。

无论如何,是否可以创建两个共享相同组件的应用程序?一个应用是引用另一个应用的 shell(反之亦然),还是引用第三个项目的两个 shell 应用?基本上,目标是创建一组 UI components/pages,将由两个应用程序共享。

如何设置?

感谢任何提示。

您需要将代码拆分为一组库项目和端点 Web 项目。为这个问题提供全面的答案超出了 Whosebug 答案的范围。我将在这里展示一些项目屏幕截图的基础知识,以显示项目结构和内容,并在底部的 GitHub Repo 中提供 link 详细代码。

图书馆

Blazor.App 包含所有共享代码。我把它分成三个项目来应用清洁设计原则,所以我有:

  • Blazor.Core - 标准库项目
  • Blazor.Data - 标准库项目 - 依赖于 Core
  • Blazor.UI - Razor 库项目 - 对 Core
  • 的依赖

Blazor 服务器

Blazor.Server.Web 项目是 运行 Blazor Server 应用程序的终点项目。 CoreDataUI.

的依赖项

Blazor WASM

  • Blazor.WASM 是一个 Blazor WebAssembly 项目,用于构建 WASM 代码库——依赖于 Core数据UI

  • Blazor.WASM.Web 是一个 AspNetCore Web 服务器,用于托管 WASM 应用程序的 API 和服务点 - 依赖于核心数据控制器

  • Blazor.Controllers 包含控制器 - - 对 CoreData 的依赖.

这两个应用程序之间的主要区别在于数据管道。接口用于定义数据代理以提供抽象。服务器项目使用服务器数据代理。 WASM 服务器 API 控制器使用服务器数据代理,而 WASM 应用程序使用 API 数据代理。不同的项目将相关数据代理加载为 IDataBroker 服务。

这是一组不同项目的屏幕截图:

控制器

核心

数据

UI

Server.Web

WASM

WASM.Web

Link 到 Repo - https://github.com/ShaunCurtis/Blazr.Demo