Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如果我想要一个独立的web api,但仍然运行服务器端和客户端,那么选择哪个项目模板?_Asp.net Core_Architecture_Blazor - Fatal编程技术网

Asp.net core 如果我想要一个独立的web api,但仍然运行服务器端和客户端,那么选择哪个项目模板?

Asp.net core 如果我想要一个独立的web api,但仍然运行服务器端和客户端,那么选择哪个项目模板?,asp.net-core,architecture,blazor,Asp.net Core,Architecture,Blazor,当您使用Blazor创建ASP.NET核心项目时,会出现一些有趣的架构决策。有3种不同的项目模板。 -Blazor -Blazor(ASP.NET核心托管) -Blazor(ASP.NET核心中的服务器端) 问题1 我试图理解“Blazor(ASP.NETCore中的服务器端)”模板或构建项目的方法的目的或好处。为什么一个.NET核心应用程序提供另一个.NET核心应用程序?还是我遗漏了什么? 考虑到此处解释的不同托管模式。 这难道不是一个使用服务器端Blazor而不是2的项目吗? 问题2 如

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

问题1
我试图理解“Blazor(ASP.NETCore中的服务器端)”模板或构建项目的方法的目的或好处。为什么一个.NET核心应用程序提供另一个.NET核心应用程序?还是我遗漏了什么? 考虑到此处解释的不同托管模式。

这难道不是一个使用服务器端Blazor而不是2的项目吗?

问题2
如果我看到的是下图所示的体系结构,那么我不应该从“ASP.NET Core Hosted”模板开始,然后将.Client项目更改为使用“服务器端”框架吗?这样,我仍然有一个可调用的api,如果需要,可以从另一个应用程序访问?或者我认为我仍然可以使用“服务器端”模板,该模板将预先设置所有启动管道,以便使用服务器端托管模型启动客户端,并将其与将我自己的API控制器添加到.Server项目相结合,该项目将根据图通过业务规则库调用

问题3
在某种程度上,当工具/调试支持变得更好时,我可能希望将.Client应用程序切换为使用webassembly。我不认为我建议的架构禁止这样做?我会在.Server应用程序中更改启动代码,用blazor.webassembly.js和其他一些东西替换对blazor.Server.js的引用,我应该是黄金。我是不是离开基地了

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


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

  • 由于UI更新是通过信号器连接处理的,因此我们可以 避免不必要的页面刷新
  • 应用程序下载大小更小,初始应用程序加载速度更快。 Blazor组件可以充分利用服务器功能 例如使用与.NET核心兼容的API
  • 它还将支持现有的.NET工具,如调试 应用程序和JIT编译
  • 由于服务器端Blazor在本机.NET核心进程下运行 不在Mono WebAssembly下,它在以下浏览器上也受支持: 没有WebAssembly支持
  • 是的,您可以有一个服务器端应用程序,无需api即可访问db。这反过来会限制你的应用在服务器端渲染,除非你重构

    问题2:是的,我相信只要您编写代码来支持客户端功能,您就可以了。e、 g从应用程序到api的Http请求

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

    有关体验转换的更多信息,请参见此处:

    也许这可以帮助您实现您的目标

    我想要一个独立的web api,但仍然运行服务器端和客户端

    Blazor模板(作者在此)

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

    因此,基本上在相同的解决方案中,您将有:

    • web api(ASP.Net核心托管)
    • 服务器端(带信号器和调试的Razor组件)
    • 客户端(SPA+webassembly)
    这样,在开发过程中,您可以选择并运行服务器端项目,以获得完整的C#调试功能,稍后,选择客户端项目并将其发布为一个独立的SPA,在webassebly上运行,而无需接触一行代码

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


    希望这有帮助

    谢谢,关于问题1,我理解服务器端渲染的好处,但我的问题是为什么两个单独的项目一个“服务”另一个。至少在模板生成的项目中,您必须在github上请求blazor确认。我认为服务器应用程序和api是首选方法,因为如果您以这种格式实现项目,它将提供最大的灵活性,以便将来在客户端和服务器端应用程序之间切换。“服务器端呈现”在.Net中不受支持。在Angular中,支持“服务器端渲染”,也称为预渲染。你们提到服务器端执行模型,称为Razor组件。两者之间的差异是巨大的。有