如果我想要一个单独的 Web api,但仍然 运行 服务器端然后再到客户端,应该选择哪个项目模板?
Which project template to choose if I want a seperate web api, yet still run server-side and later to client-side?
当使用 Blazor 创建 ASP.NET 核心项目时,这会提出一些有趣的架构决策。有 3 个不同的项目模板。
- Blazor
- Blazor(ASP.NET 核心托管)
- Blazor(ASP.NET 核心中的服务器端)
问题 1
我试图了解 "Blazor (Server-side in ASP.NET Core) " 模板或构建项目的方法的目的或好处。为什么要让一个 .NET 核心应用程序为另一个 .NET 核心应用程序提供服务?或者我错过了什么?
考虑到此处解释的不同托管模型。
https://blazor.net/docs/host-and-deploy/hosting-models.html
这不能只是一个使用服务器端 Blazor 而不是 2 的项目吗?
问题 2
如果我正在查看如下图所示的架构,我不应该从 "ASP.NET Core Hosted" 模板开始,然后更改 .Client 项目以使用 "server-side" 框架吗?这样,我仍然有一个可调用的 api 可以在需要时从另一个应用程序访问它?或者我想我仍然可以使用 "Server-side" 模板,它会预先设置所有启动管道以使用服务器端托管模型启动客户端,并将其与添加我自己的 API 控制器相结合到 .Server 项目,它将根据图表通过业务规则库调用。
问题3
在某些时候,当 tooling/debugging 支持变得更好时,我可能想将 .Client 应用程序切换为使用 webassembly。我不认为我建议的架构禁止这样做?我只想更改 .Server 应用程序中的启动代码,将对 blazor.server.js 的引用替换为 blazor.webassembly.js 和其他一些东西,我应该很高兴。我在这里偏离基地了吗?
架构说明:
- 客户端应用程序需要通过一些 CRUD 操作访问资源,因此它调用业务规则 class 库
中的方法
- 业务规则库引用了一个 class 库,其中包含 "dumb" POCO class 代表各种领域模型的 es。调用 api
- API controller/action 然后调用管理 Entity Framework DbContext 的数据库或存储库,用于 fetching/updating Db
中的数据
- 业务规则库、数据库和 API 都引用 "Models" 库。
问题 1: 服务器端渲染有很多好处,包括:
- 由于 UI 更新是通过 SignalR 连接处理的,我们可以
避免不必要的页面刷新。
- 应用下载大小更小,初始应用加载速度更快。
Blazor 组件可以充分利用服务器的能力
例如使用 .NET Core 兼容的 API。
- 它还将支持现有的 .NET 工具,例如调试
应用程序和 JIT 编译。
- 由于服务器端 Blazor 在本机 .NET Core 进程下运行,并且
不在 Mono WebAssembly 下,浏览器也支持它
没有 WebAssembly 支持。
是的,您可以让一个服务器端应用程序无需 api 即可访问数据库。除非您重构,否则这反过来会将您的应用程序限制为服务器端呈现。
问题 2: 是的,我相信只要编写支持客户端功能的代码就可以了。例如从应用程序到 api.
的 Http 请求
问题 3: 是的,您是正确的,只需对代码进行一些小改动,您就可以同时支持服务器端和客户端。我要问的一件事是您如何在客户端编写代码,即如果您要使用标准 .net 库,客户端可能无法完全支持它们。此外,如果您首先制作服务器端应用程序并制作服务来调用以获取数据,例如访问数据库上下文,当切换到 Web 客户端配置时,您很可能需要发出 http Web 请求。
有关体验切换的其他信息可在此处找到:Link
也许这个Blazor Template可以帮助你实现你想要的
I want a seperate web api, yet still run server-side and later to client-side?
Blazor 模板(作者在此)
是用于创建 Blazor 的 Visual Studio 2019 Preview 3 项目模板
可以在客户端或服务器端托管的 v0.8.0 解决方案,
这背后的想法是有一个方便的实现,允许
轻松更改托管模型。
所以基本上在同一个解决方案中,您将拥有:
- web-api(ASP.Net 核心托管)
- 服务器端(带 SignalR 和调试的 Razor 组件)
- 客户端(SPA + webassembly)
这样在开发期间您可以 select 和 运行 服务器端项目以获得完整的 C# 调试功能,稍后,select 客户端项目并将其发布为独立 SPA 运行在 webassebly 上发布,无需触及一行代码。
更重要的是,运行在服务器端模式下,不仅可以使用带有 SignalR 和调试的 Razor 组件,还可以使用 Web API 控制器,因此您可以模拟实际行为该应用程序将投入生产。
希望对您有所帮助
当使用 Blazor 创建 ASP.NET 核心项目时,这会提出一些有趣的架构决策。有 3 个不同的项目模板。
- Blazor
- Blazor(ASP.NET 核心托管)
- Blazor(ASP.NET 核心中的服务器端)
问题 1
我试图了解 "Blazor (Server-side in ASP.NET Core) " 模板或构建项目的方法的目的或好处。为什么要让一个 .NET 核心应用程序为另一个 .NET 核心应用程序提供服务?或者我错过了什么?
考虑到此处解释的不同托管模型。
https://blazor.net/docs/host-and-deploy/hosting-models.html
这不能只是一个使用服务器端 Blazor 而不是 2 的项目吗?
问题 2
如果我正在查看如下图所示的架构,我不应该从 "ASP.NET Core Hosted" 模板开始,然后更改 .Client 项目以使用 "server-side" 框架吗?这样,我仍然有一个可调用的 api 可以在需要时从另一个应用程序访问它?或者我想我仍然可以使用 "Server-side" 模板,它会预先设置所有启动管道以使用服务器端托管模型启动客户端,并将其与添加我自己的 API 控制器相结合到 .Server 项目,它将根据图表通过业务规则库调用。
问题3
在某些时候,当 tooling/debugging 支持变得更好时,我可能想将 .Client 应用程序切换为使用 webassembly。我不认为我建议的架构禁止这样做?我只想更改 .Server 应用程序中的启动代码,将对 blazor.server.js 的引用替换为 blazor.webassembly.js 和其他一些东西,我应该很高兴。我在这里偏离基地了吗?
架构说明:
- 客户端应用程序需要通过一些 CRUD 操作访问资源,因此它调用业务规则 class 库
中的方法
- 业务规则库引用了一个 class 库,其中包含 "dumb" POCO class 代表各种领域模型的 es。调用 api
- API controller/action 然后调用管理 Entity Framework DbContext 的数据库或存储库,用于 fetching/updating Db
中的数据
- 业务规则库、数据库和 API 都引用 "Models" 库。
问题 1: 服务器端渲染有很多好处,包括:
- 由于 UI 更新是通过 SignalR 连接处理的,我们可以 避免不必要的页面刷新。
- 应用下载大小更小,初始应用加载速度更快。 Blazor 组件可以充分利用服务器的能力 例如使用 .NET Core 兼容的 API。
- 它还将支持现有的 .NET 工具,例如调试 应用程序和 JIT 编译。
- 由于服务器端 Blazor 在本机 .NET Core 进程下运行,并且 不在 Mono WebAssembly 下,浏览器也支持它 没有 WebAssembly 支持。
是的,您可以让一个服务器端应用程序无需 api 即可访问数据库。除非您重构,否则这反过来会将您的应用程序限制为服务器端呈现。
问题 2: 是的,我相信只要编写支持客户端功能的代码就可以了。例如从应用程序到 api.
的 Http 请求问题 3: 是的,您是正确的,只需对代码进行一些小改动,您就可以同时支持服务器端和客户端。我要问的一件事是您如何在客户端编写代码,即如果您要使用标准 .net 库,客户端可能无法完全支持它们。此外,如果您首先制作服务器端应用程序并制作服务来调用以获取数据,例如访问数据库上下文,当切换到 Web 客户端配置时,您很可能需要发出 http Web 请求。
有关体验切换的其他信息可在此处找到:Link
也许这个Blazor Template可以帮助你实现你想要的
I want a seperate web api, yet still run server-side and later to client-side?
Blazor 模板(作者在此)
是用于创建 Blazor 的 Visual Studio 2019 Preview 3 项目模板 可以在客户端或服务器端托管的 v0.8.0 解决方案, 这背后的想法是有一个方便的实现,允许 轻松更改托管模型。
所以基本上在同一个解决方案中,您将拥有:
- web-api(ASP.Net 核心托管)
- 服务器端(带 SignalR 和调试的 Razor 组件)
- 客户端(SPA + webassembly)
这样在开发期间您可以 select 和 运行 服务器端项目以获得完整的 C# 调试功能,稍后,select 客户端项目并将其发布为独立 SPA 运行在 webassebly 上发布,无需触及一行代码。
更重要的是,运行在服务器端模式下,不仅可以使用带有 SignalR 和调试的 Razor 组件,还可以使用 Web API 控制器,因此您可以模拟实际行为该应用程序将投入生产。
希望对您有所帮助