当使用Blazor创建一个ASP.NET Core项目时,这提出了一些有趣的体系结构决策。有3种不同的项目模板。
-开拓者
-Blazor(托管ASP.NET Core)
-Blazor(ASP.NET Core中的服务器端)
问题1
我试图了解“ Blazor(ASP.NET Core中的服务器端)”模板或构造项目的方法的目的或好处。为什么.NET核心应用程序可以提供另一个.NET核心应用程序?还是我错过了什么?
考虑到此处说明的不同托管模式。
https://blazor.net/docs/host-and-deploy/hosting-models.html
这难道不是一个使用服务器端Blazor而不是2的项目吗?
问题2
如果我正在查看下图所示的体系结构,是否不应该从“ ASP.NET Core Hosted”模板开始,然后将.Client项目更改为使用“服务器端”框架?这样,我仍然有一个可调用的api,如果需要,可以从另一个应用程序访问该api?或者我想我仍然可以使用“服务器端”模板,该模板将预先设置所有启动管道,以使用服务器端托管模型启动客户端,并将其与向.Server添加我自己的API控制器结合使用项目,将根据图中的业务规则库进行调用。
问题3
在某个时候,当工具/调试支持变得更好时,我可能希望切换.Client应用程序以使用webassembly。我不认为我建议的体系结构禁止这样做吗?我只是在.Server应用程序中更改启动代码,用blazor.webassembly.js和其他一些东西替换对blazor.server.js的引用,我应该很高兴。我在这里基地吗?
有关体系结构的说明:
-客户端应用程序需要通过某些CRUD操作访问资源,因此它会调用业务规则类库中的方法
-业务规则库引用了一个类库,其中包含代表各种域模型的“哑” POCO类。调用api
-API控制器/操作随后调用管理Entity Framework DbContext的数据库或存储库,以获取/更新Db中的数据
-业务规则库,数据库和API均引用“模型”库。
答案 0 :(得分:2)
问题1:服务器端呈现具有许多优点,包括:
是的,您可以拥有一个不需要api即可访问数据库的服务器端应用程序。这样一来,除非您进行重构,否则您的应用将只能在服务器端呈现。
问题2:是的,只要您编写支持客户端功能的代码,就可以了。例如从应用程序向api发出的Http请求。
问题3:是的,您只需在代码中进行一些小改动就可以支持服务器端和客户端,这是正确的。我要查询的一件事是如何在客户端上编写代码,即,如果要使用标准.net库,则客户端可能无法完全支持它们。此外,如果您首先制作了服务器端应用程序,并提供了调用服务来获取数据,例如访问数据库上下文时,切换到Web客户端配置时,您很可能需要发出http Web请求。
有关体验转换的其他信息,可以在这里找到:Link
答案 1 :(得分:0)
也许Blazor Template可以帮助您实现想要的目标
我想要一个单独的Web api,但仍然运行服务器端,然后再运行到客户端吗?
Blazor模板(此处为作者)
是用于创建Blazor的Visual Studio 2019 Preview 3项目模板 v0.8.0解决方案可以托管在客户端或服务器端, 其背后的想法是要有一个方便的实现 从托管模型轻松更改。
因此,基本上在同一解决方案中,您将拥有:
这样,在开发期间,您可以选择并运行服务器端项目以具有完整的C#调试功能,然后选择客户端项目并将其发布为在Webasseb上运行的独立SPA,而无需进行任何操作一行代码。
甚至,在服务器端模式下运行时,不仅可以使用具有SignalR和调试功能的Razor组件,还可以使用Web API控制器,因此您可以模拟应用程序在生产中的实际行为。
希望这会有所帮助