asp.net - ASP.NET core 3.1 中“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 服务器应用程序”之间还有什么其他区别
解决方案
用于创建网页的WebApplication
用途.NetCore
和Razor
页面以及HTTP
在服务器和客户端之间进行通信的普通请求。例如,您仍然需要JavaScript
像以前一样调用方法,并在视图和模型/方法之间进行通信,还需要更新/刷新视图。它几乎是无状态的,您需要像我们为 ASP.Net MVC 所做的那样遵循传统方法。
Blazor
另一方面,有两个版本。WebAssembly
和Server-side
。
- “Blazor WebAssembly”在
WASM
(WebAssembly)和MONO
客户端运行,代码将在客户端下载,它带来了一些奇特的功能和可能性,如离线模式。但是几乎所有内容都将下载到客户端,这使得第一次加载速度有点慢,并且还可以考虑直接在客户端下载代码。 - “Blazor 服务器端”在服务器上运行,但客户端将通过 SignalR 连接同时更新。因此,应该在客户端下载较少量的数据,并且代码不存在(关于安全方面)并且它是有状态的,这意味着客户端上元素的每个状态都将保存在服务器内存中,并且在任何情况下,如果客户端失去连接,新服务器的整个页面状态将是未知的。(您需要自定义方法来保持使用状态
localStorage
,sessionStorage
并在建立新连接后将其映射到新服务器)。
通过使用 Blazor,您几乎可以使用 C# 进行后端和前端的所有操作,并且非常需要使用 JS。虽然可以JSIntrop
从 C# 代码调用 JS 函数(使用 ),甚至可以从 JS 调用 C# 函数。
我希望这个简短的解释会有所帮助。这只是对 .NetCore WebApplication 和 Blazor 的简要介绍。开发人员在选择合适的方法来构建 Web 应用程序时应该注意很多方面。
推荐阅读
- python - 如何从数据集中删除无用元素
- r - 更改栅格值的并行化
- xml - 在没有 BOM 的情况下以 UTF-8 生成 XML
- android - 如何更改日期选择器的年份颜色和文本大小
- c# - 使用 SqlBulkCopy 将包含多个链接表的巨大列表插入到数据库
- procedure - 如何在flyway中运行SQL执行命令
- webforms - 为 Web 表单添加拖放字段
- sql - BigQuery 中的标准 SQL - 从多行获取连接文本
- c++ - 通过参数传递 3D 数组,在 C++ 中执行操作并返回
- python - 使用 matplotlib / python 在极地立体图上获取 xtick 和 ytick