使用 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 应用程序的终点项目。 Core、Data 和 UI.
的依赖项
Blazor WASM
Blazor.WASM 是一个 Blazor WebAssembly 项目,用于构建 WASM 代码库——依赖于 Core、数据和UI。
Blazor.WASM.Web 是一个 AspNetCore Web 服务器,用于托管 WASM 应用程序的 API 和服务点 - 依赖于核心、数据和控制器。
Blazor.Controllers 包含控制器 - - 对 Core 和 Data 的依赖.
这两个应用程序之间的主要区别在于数据管道。接口用于定义数据代理以提供抽象。服务器项目使用服务器数据代理。 WASM 服务器 API 控制器使用服务器数据代理,而 WASM 应用程序使用 API 数据代理。不同的项目将相关数据代理加载为 IDataBroker
服务。
这是一组不同项目的屏幕截图:
控制器
核心
数据
UI
Server.Web
WASM
WASM.Web
Link 到 Repo - https://github.com/ShaunCurtis/Blazr.Demo
我想创建一个支持托管 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 应用程序的终点项目。 Core、Data 和 UI.
的依赖项Blazor WASM
Blazor.WASM 是一个 Blazor WebAssembly 项目,用于构建 WASM 代码库——依赖于 Core、数据和UI。
Blazor.WASM.Web 是一个 AspNetCore Web 服务器,用于托管 WASM 应用程序的 API 和服务点 - 依赖于核心、数据和控制器。
Blazor.Controllers 包含控制器 - - 对 Core 和 Data 的依赖.
这两个应用程序之间的主要区别在于数据管道。接口用于定义数据代理以提供抽象。服务器项目使用服务器数据代理。 WASM 服务器 API 控制器使用服务器数据代理,而 WASM 应用程序使用 API 数据代理。不同的项目将相关数据代理加载为 IDataBroker
服务。
这是一组不同项目的屏幕截图:
控制器
核心
数据
UI
Server.Web
WASM
WASM.Web
Link 到 Repo - https://github.com/ShaunCurtis/Blazr.Demo