ASP.NET Blazor部署方式有哪些?

embedded/2025/1/23 9:28:31/

今天我们来说说Blazor的三种部署方式,如果大家还不了解Blazor,那么我先简单介绍下Blazor

Blazor 是一种 .NET 前端 Web 框架,在单个编程模型中同时支持服务器端呈现和客户端交互性:
● 使用 C# 创建丰富的交互式 UI。
● 共享使用 .NET 编写的服务器端和客户端应用逻辑。
● 将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器。
● 使用 .NET 和 Blazor 生成混合桌面和移动应用。

以上的介绍来自于官方的文档介绍,简单来说Blazor和Vue,Recat,Angular等前端框架一样,都是Web前端框架,但是Blazor实现了使用C#来编写业务逻辑,不适用JS来编写逻辑。如果大家想了解更详细的介绍内容可以参考官方文档。
Blazor提供了三种部署方式,大家可以根据场景来进行多种选择。

Blazor WebAssembly

让我们先了解下WebAssembly是什么?
WebAssembly也被简称为WASM,是一种为网络设计的可移植的编译目标,旨在将C、C++、Rust等编程语言编译成高效的二进制代码,使其在现代网络浏览器中运行。WebAssembly可以提供更快的加载速度和和更高的执行效率。
在这里插入图片描述

Blazor WebAssembly 的部署模式如下:
● 在满足浏览器支持 WASM 标准的前提下,会将 Blazor 项目编译得到的.NET 程序集传输至客户端。
● 这些程序集随后在客户端浏览器的 WebAssembly 环境中运行,可以在离线状态下执行,为用户提供更加灵活的使用体验,无论用户处于网络连接不稳定还是完全脱机的情况,都能正常使用应用程序,提升了应用的可用性和用户体验。

Blazor Server

在这种开发架构中,所有的 HTML+CSS 以及 C# 后端代码的执行过程都是在服务器端完成的。并将解析后的完整 HTML+CSS 代码发送到前端的浏览器执行,Blazor 脚本与服务器建立 SignalR 连接,每个客户端与服务器都会建立一个持久的 SignalR 通道,通过 SignalR 通道实现客户端与服务器的交互。
在这里插入图片描述

SignalR

在这种部署方式下我们提到了SignalR,我们对SignalR做一个简单的介绍

ASP.NET SignalR 是一个面向 ASP.NET 开发人员的库,可简化向应用程序添加实时 Web 功能的过程。 实时 Web
功能是让服务器代码在可用时立即将内容推送到连接的客户端,而不是让服务器等待客户端请求新数据。 Blazor Hybrid 使用跨桌面、移动和
Web 共享相同的 Blazor 组件,可以开发出 Android、iOS 移动设备上的 App、还可以开发出在macOS 和
Windows 上运行的桌面应用。简单来说通过Blazor混合应用,可以开发出目前几乎所有的跨平台应用

Blazor Hybrid

使用跨桌面、移动和 Web 共享相同的 Blazor 组件,可以开发出 Android、iOS 移动设备上的 App、还可以开发出在macOS 和 Windows 上运行的桌面应用。简单来说通过Blazor混合应用,可以开发出目前几乎所有的跨平台应用
在这里插入图片描述

技术选择

先来看一个官方提供的区别图,下面我总结以下三种方式的优缺点供大家参考
在这里插入图片描述

Blazor WebAssembly

(1) WebAssembly为二进制代码,有着更好的性能
(2)在浏览器客户端首次运行获得程序集后,可离线运行
(3)第一次加载需要客户端发送程序集,会导致首次加载速度慢

Blazor Server

(1)所有代码在服务端运行,服务端负载大,客户端加载速度快
(2)不需要浏览器支持WebAssembly标准,可以使得应用在一些旧版本的浏览器上也可以运行
(3)不支持离线场景,无网络情况下无法访问
(4)SignalR连接,会对性能有所损耗

Blazor Hybrid

(1)开发速度快,多平台使用
(2)不同平台需要编译不同的应用
(3)手机和电脑端需要安装APP才能使用,不能直接从浏览器访问


http://www.ppmy.cn/embedded/156271.html

相关文章

机器学习(5):支持向量机

1 介绍 支持向量机(Support Vector Machine,简称 SVM)是一种监督学习算法,主要用于分类和回归问题。SVM 的核心思想是找到一个最优的超平面,将不同类别的数据分开。这个超平面不仅要能够正确分类数据,还要使…

解决Oracle SQL语句性能问题(10.5)——常用Hint及语法(6)(并行相关Hint)

10.5.3. 常用hint 10.5.3.6. 并行相关Hint 1)parallel:显式的指示优化器为SQL语句或SQL语句中的特定表指定或计算并行度。该Hint具体语法如下所示。 SQL> select|insert|update|delete /*+ parallel[(integer|default|auto|manual)] */ ...; --注: 1)这里,parallel…

图论 八字码

我们可能惊异于某些技巧。我们认为这个技巧真是巧妙啊。或者有人认为我依靠自己的直觉想出了这个表示方法。非常自豪。我认为假设是很小的时候,比如说小学初中,还是不错的。到高中大学,就有一些不成熟了。因为这实际上是一个竞技。很多东西前…

【Elasticsearch】RestClient操作文档

RestClient操作文档 新增文档实体类API语法 查询文档删除文档修改文档批量导入文档小结 新增文档 将数据库中的信息导入elasticsearch中 以商品数据为例 实体类 定义一个索引库结构对应的实体。 Data ApiModel(description "索引库实体") public class ItemDoc{…

django使用踩坑经历

DRF 使用drf获取序列化后的id visitor_serializer VisitorSaveSerializer(data{…}) if visitor_serializer.is_valid():visitor visitor_serializer.save() visitor_id visitor.pkpostgrepsql踩坑 django使用postgrepsql,使用聚合函数如:sum 等,被…

ios文件管理,沙盒机制以及如何操作“文件”APP,把文件共享到文件app

首先,系统是一个整体,那每个app是相互独立的,系统为每个app分配了一定的存储空间,也就是我们说的沙盒,每个app有自己独立的沙盒,文件存储在沙盒中,正常情况下app相互之间数据是不可以共享以及访…

leetcode169.多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输出:3 示例 2…

PHP CRM售后系统小程序

💼 CRM售后系统 📺这是一款基于PHP和uniapp深度定制的CRM售后管理系统,它犹如企业的智慧核心,精准赋能销售与售后管理的每一个环节,引领企业步入精细化、数字化的全新管理时代。系统集成了客户管理、合同管理、工单调…