首页 > 解决方案 > ASP.NET core 3.1 中“Web 应用程序”和“Blazor 服务器应用程序”的区别

问题描述

Web应用程序

Blazor 服务器应用

嗨,我正在尝试掌握 .NET CORE 3.1 和 Visual Studio 2019 中提供的模板。具体而言,我想了解拥有 Web 应用程序(如第一张图所示)与Blazor 服务器应用程序(第二个图)。

根据我通过研究的理解,我可以确定以下内容: - 两者都在 .net core 3 上运行 - 都使用 razor - 都在服务器级别运行 - 都使用“代码背后”的概念/结构

但是: - Web 应用程序使用 .cshtml - blazor 服务器应用程序使用 .razor

我相信 blazor 服务器应用程序不需要 javascript 知识来进行数据绑定,并且具有使用 c# 代码进行绑定等的好处。我已经阅读了有关“Blazor 服务器应用程序”和“Blazor 的好处”的文档WebAssembly 应用程序"; 这是真棒。然而,“服务器应用程序”和“Web 应用程序”之间有惊人的相似之处

“Web 应用程序”和“Blazor 服务器应用程序”之间还有什么其他区别

标签: asp.netvisual-studio.net-coreblazor

解决方案


用于创建网页的WebApplication用途.NetCoreRazor页面以及HTTP在服务器和客户端之间进行通信的普通请求。例如,您仍然需要JavaScript像以前一样调用方法,并在视图和模型/方法之间进行通信,还需要更新/刷新视图。它几乎是无状态的,您需要像我们为 ASP.Net MVC 所做的那样遵循传统方法。

Blazor另一方面,有两个版本。WebAssemblyServer-side

  1. “Blazor WebAssembly”在WASM(WebAssembly)和MONO客户端运行,代码将在客户端下载,它带来了一些奇特的功能和可能性,如离线模式。但是几乎所有内容都将下载到客户端,这使得第一次加载速度有点慢,并且还可以考虑直接在客户端下载代码。
  2. “Blazor 服务器端”在服务器上运行,但客户端将通过 SignalR 连接同时更新。因此,应该在客户端下载较少量的数据,并且代码不存在(关于安全方面)并且它是有状态的,这意味着客户端上元素的每个状态都将保存在服务器内存中,并且在任何情况下,如果客户端失去连接,新服务器的整个页面状态将是未知的。(您需要自定义方法来保持使用状态localStoragesessionStorage并在建立新连接后将其映射到新服务器)。

通过使用 Blazor,您几乎可以使用 C# 进行后端和前端的所有操作,并且非常需要使用 JS。虽然可以JSIntrop从 C# 代码调用 JS 函数(使用 ),甚至可以从 JS 调用 C# 函数。

我希望这个简短的解释会有所帮助。这只是对 .NetCore WebApplication 和 Blazor 的简要介绍。开发人员在选择合适的方法来构建 Web 应用程序时应该注意很多方面。


推荐阅读