如果我想要一个单独的web api,但仍然在服务器端运行,稍后在客户端运行,则选择哪个项目模板?

问题描述 投票:1回答:2

当使用Blazor创建ASP.NET Core项目时,这会提出一些有趣的架构决策。有3个不同的项目模板。 - Blazor - Blazor(ASP.NET Core托管) - Blazor(ASP.NET核心中的服务器端)

问题1 我试图理解“Blazor(ASP.NET核心中的服务器端)”模板或方法来构建项目的目的或好处。为什么.NET核心应用程序提供另一个.NET核心应用程序?或者我错过了什么?鉴于这里解释的托管模型不同。 https://blazor.net/docs/host-and-deploy/hosting-models.html 难道这不是一个使用服务器端Blazor而不是2的项目吗? 问题2 如果我正在查看下图所示的体系结构,那么我不应该从“ASP.NET Core Hosted”模板开始,然后更改.Client项目以使用“服务器端”框架吗?这样,我仍然有一个可调用的api,如果需要可以从另一个应用程序访问?或者我想我仍然可以使用“服务器端”模板,该模板将预先设置所有启动管道以使用服务器端托管模型启动客户端,并将其与将我自己的API控制器添加到.Server相结合。 project,将根据图表通过业务规则库调用。

问题3 在某些时候,我可能想要在工具/调试支持变得更好时切换.Client应用程序以使用webassembly。我不认为我建议的架构禁止这样做?我只是更改.Server应用程序中的启动代码,用blazor.webassembly.js和其他一些东西替换对blazor.server.js的引用,我应该是金色的。我在这里吗?

建筑说明: - 客户端应用程序需要通过某些CRUD操作访问资源,因此它会调用Business Rules类库中的方法 - 业务规则库引用包含代表各种域模型的“哑”POCO类的类库。打电话给api - API控制器/操作然后调用管理实体框架DbContext的数据库或存储库,用于获取/更新Db中的数据 - 业务规则库,数据库和API都引用“模型”库。

enter image description here

asp.net-core architecture blazor
2个回答
2
投票

问题1:服务器端呈现有许多好处,包括:

  1. 由于UI更新是通过SignalR连接处理的,因此我们可以避免不必要的页面刷新。
  2. 应用下载大小较小,初始应用加载速度更快。 Blazor组件可以充分利用服务器功能,例如使用.NET Core兼容API。
  3. 它还将支持现有的.NET工具,如调试应用程序和JIT编译。
  4. 由于服务器端Blazor在本机.NET Core进程下运行,而不是在Mono WebAssembly下运行,因此在没有WebAssembly支持的浏览器上也支持它。

是的,您可以拥有一个服务器端应用程序,无需API即可访问数据库。这反过来会限制您的应用程序到服务器端呈现,除非您重构。

问题2:是的,只要您编写代码以支持客户端功能,我相信您应该没问题。例如,应用程序向api请求Http。

问题3:是的,您在代码中进行一些小的更改是正确的,您将能够支持服务器端和客户端。我要问的一件事是你如何在客户端上编写代码,即如果你要使用标准的.net库,它们可能不会得到客户端的完全支持。此外,如果您首先制作服务器端应用程序并提供服务来调用以获取数据,例如访问数据库上下文,当切换到Web客户端配置时,您很可能需要发出http Web请求。

有关体验转换的更多信息,请访问:Link


1
投票

也许这个Blazor Template可以帮助你实现你想要的

我想要一个单独的web api,但仍然在服务器端运行,后来又在客户端运行?

Blazor模板(作者在这里)

是一个Visual Studio 2019 Preview 3项目模板,用于创建可以托管在客户端或服务器端的Blazor v0.8.0解决方案,其背后的想法是拥有一个方便的实现,允许轻松地从托管模型进行更改。

所以基本上在同一个解决方案中,你将拥有:

  • web-api(ASP.Net核心托管)
  • 服务器端(带SignalR的Razor组件和调试)
  • 客户端(SPA + webassembly)

这样在开发期间你可以选择并运行服务器端项目以获得完整的C#调试功能,稍后,选择客户端项目并将其发布为在webassebly上运行的Stand-Alone SPA而不触及单行代码

更重要的是,在服务器端模式下运行时,不仅可以使用带有SignalR和调试的Razor组件,还可以使用Web API控制器,因此您可以模拟应用程序在生产中的实际行为。

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.