当前位置: 首页 > news >正文

Blazor 托管模型 BlazorWebAssembly和Blazor Server

BlazorWebAssembly 应用

BlazorWebAssembly 应用使用基于 WebAssembly 的 .NET 运行时在浏览器中直接执行。 BlazorWebAssembly 应用的工作方式类似于 Angular 和 React 等前端 JavaScript 框架。 但不是编写 JavaScript,而是编写 C#。 .NET 运行时与应用、应用程序集和任何必需的依赖项一起下载。 无需浏览器插件和扩展。

下载的程序集是普通的 .NET 程序集,就像在任何其他 .NET 应用中使用的程序集一样。 运行时支持 .NET Standard,因此可将现有的 .NET Standard 用于 BlazorWebAssembly 应用。 但这些程序集仍在浏览器安全沙盒中执行。 某些功能可能会引发 PlatformNotSupportedException,如尝试访问文件系统或打开任意网络连接。

应用加载时,.NET 运行时会启动并指向应用程序集。 应用启动逻辑会运行,并且根组件会呈现。 Blazor 根据组件呈现的输出计算 UI 更新。 然后应用 DOM 更新。
在这里插入图片描述

BlazorWebAssembly 应用完全在客户端运行。 此类应用可以部署到 GitHub 网页或 Azure 静态网站托管等静态网站托管解决方案。 在服务器上根本不需要 .NET。 到应用的某些部分的深层链接通常需要服务器上的路由解决方案。 路由解决方案会将请求重定向到应用的根。 例如,可以通过使用 URL 重写 IIS 中的规则来处理此重定向。

要利用 Blazor 和全栈 .NET Web 开发的所有优势,请使用 ASP.NET Core 托管 BlazorWebAssembly 应用。 通过使用客户端和服务器上的 .NET,你可以轻松共享代码,并使用一组一致的语言、框架和工具生成应用。 Blazor 提供便捷的模板,可用于设置包含 BlazorWebAssembly 应用和 ASP.NET Core 托管项目的解决方案。 生成解决方案后,Blazor 应用中已生成的静态文件由已设置回退路由的 ASP.NET Core 应用托管。

Blazor Server 应用

Blazor 组件会将其输出呈现为名为 RenderTree 的中间抽象。 Blazor 框架然后将呈现的内容与之前呈现的内容相比较。 这些差异会应用到 DOM。 Blazor 组件根据呈现的输出的应用方式进行去耦。 因此组件本身运行的进程无需与更新 UI 的进程相同。 实际上,它们甚至不必在同一计算机上运行。

在 Blazor Server 应用中,组件在服务器上运行,而不是在浏览器中的客户端运行。 浏览器中发生的 UI 事件通过实时连接发送到服务器。 事件被分派到正确的组件实例。 组件将呈现,计算的 UI 差异被序列化后发送到浏览器并在其中应用于 DOM。
在这里插入图片描述

如果你使用过 ASP.NET AJAX 和 Blazor 控件,可能不会对 UpdatePanel Server 托管模型感到陌生。 UpdatePanel 控件负责应用部分页面更新以响应页面上的触发事件。 触发时,UpdatePanel 会请求部分更新,然后应用该更新,无需刷新页面。 UI 状态使用 ViewState 进行管理。 Blazor Server 应用略有不同,因为该应用需要与客户端建立活动连接。 此外,服务器上的所有 UI 状态都需要进行维护。 除了这些差异之外,这两个模型在概念上类似。

Blazor 两种托管模型的优缺点

BlazorWebAssembly 优点:

  1. 没有 .NET 服务器端依赖项。 应用下载到客户端后即可正常运行。
  2. 可充分利用客户端资源和功能。
  3. 工作可从服务器转移到客户端。
  4. 无需 ASP.NET Core Web 服务器即可托管应用。 无服务器部署方案可行(例如通过 CDN 为应用提供服务的方案)。

BlazorWebAssembly 缺点:

  1. 浏览器功能限制了该应用。
  2. 需要客户端硬件和软件支持(例如 WebAssembly 支持)。
  3. 下载项大小较大,应用加载耗时较长。
  4. NET 运行时和工具支持不够完善。 例如,.NET Standard 支持和调试方面存在限制。

Blazor Server 优点:

  1. 下载大小明显小于客户端应用,并且应用的加载速度更快。
  2. 应用可以充分利用服务器功能,包括使用任何与 .NET 兼容的 API。
  3. 服务器上的 .NET 用于运行应用,因此调试等现有 .NET 工具可按预期正常工作。
  4. 支持瘦客户端。 例如,服务器端的应用适用于不支持 WebAssembly 以及资源受约束的设备上的浏览器。
  5. 应用的 .NET/C# 代码库(其中包括应用的组件代码)不适用于客户端。

Blazor Server 缺点:

  1. UI 延迟更高。 每次用户交互都涉及到网络跃点。
  2. 不支持脱机工作。 如果客户端连接失败,应用会停止工作。
  3. 如果具有多名用户,则应用扩缩性存在挑战。 服务器必须管理多个客户端连接并处理客户端状态。
  4. 需要 ASP.NET Core 服务器为应用提供服务。 不支持无服务器部署方案。 例如,无法从 CDN 提供应用。

上述优缺点列表可能会让你顾虑重重,但你可在以后更改托管模型。 无论是否选择 Blazor 托管模型,组件模型都是相同的。 原则上,相同组件可用于任一托管模型。 应用代码不会更改,但最佳做法是引入抽象,使组件与托管模型无关。 抽象使应用能够更轻松地采用不同的托管模型。

相关文章:

Blazor 托管模型 BlazorWebAssembly和Blazor Server

BlazorWebAssembly 应用 BlazorWebAssembly 应用使用基于 WebAssembly 的 .NET 运行时在浏览器中直接执行。 BlazorWebAssembly 应用的工作方式类似于 Angular 和 React 等前端 JavaScript 框架。 但不是编写 JavaScript,而是编写 C#。 .NET 运行时与应用、应用程序…...

从未想过制作数据可视化展示竟可以如此简单

还在跟着网络上一节课好几个小时的付费课程学习如何制作数据可视化大屏嘛?还在为不知道怎么设计数据展示排版而苦恼?今天教大家用最简单的方式制作一个数据可视化大屏,首先让我们看一下参考大屏样式:接下来我们将制作数据可视化大…...

企业电子招投标采购系统源码之功能模块的描述

功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外部供…...

LeetCode-2341. 数组能形成多少数对【哈希表,计数】

LeetCode-2341. 数组能形成多少数对【哈希表,计数】题目描述:解题思路一:哈希表,将数组中的数加入哈希表中,若有两个相同的数就记录下来,并消去两个。最后只需遍历哈希表中置为1的个数即可。解题思路二&…...

vue-echarts实现多功能图表

前言作为前端人员,日常图表、报表、地图的接触可谓相当频繁,今天小编隆重退出前端框架之VUE结合百度echart实现中国地图各种图表的展示与使用;作为“你值得拥有”专栏阶段性末篇,值得一看主要实现功能——中国地图——环形图——折…...

C#快键精灵

我发过挺多工作中用到的C#内容,整体链接和内容去这里看下:C#基础知识体系框架图,及起对应我发过的博客_花开莫与流年错_的博客-CSDN博客_c#架构图 可以记住电脑上鼠标、键盘操作记录,用处就很多,比较灵活了&#xff0c…...

谷歌、微软、Meta?谁才是 Python 最大的金主?

你知道维护 Python 这个大规模的开源项目,每年需要多少资金吗? 答案是:约 200 万美元! PSF(Python 软件基金会)在 2022 年 6 月发布了 2021 的年度报告,其中披露了以下这份支出明细&#xff08…...

面向对象笔记

标准JavaBean类1.类名见名知意2.成员变量由private修饰3.提供两个构造方法 无参构造和带全部参数构造4.提供每一个成员变量对应的set/get方法5.如果有其它行为,也要写上空参构造 初始化默认值带参构造 初始化参数 创建对象由虚拟机调用,不能手动调用每创…...

tofu:一款功能强大的模块化Windows文件系统安全测试工具

关于tofu tofu是一款功能强大的针对Windows文件系统安全的模块化工具,该工具可以使用离线方法对目标Windows文件系统进行渗透测试,并通过绕过Windows系统登录界面来帮助广大研究人员测试Windows主机的安全性。除此之外,该工具还可以执行哈希…...

VS中scanf为什么会报错

简单来讲&#xff0c;scanf会强行输入内容&#xff0c;所以是不安全的。 我们来看这样的例子&#xff1a; #include <iostream> using namespace std;int main() {char demo[3];scanf("%s", demo);return 0; }对于以上代码&#xff0c;当我们输入字符不超过3时…...

使用kubeadm部署k8s1.24.0版本,遇到的坑总结

使用kubeadm部署k8s1.24.0版本&#xff0c;遇到的坑总结环境安装遇到的问题环境 操作系统&#xff1a;centos7 内核&#xff1a;5.4.231-1.el7.elrepo.x86_64 kubeadm&#xff1a;1.24.0 kubelet&#xff1a;1.24.0 kubectl&#xff1a;1.24.0 cri&#xff1a;docker cni&…...

【C++】特殊类设计

&#x1f308;欢迎来到C专栏~~特殊类设计 (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自己的一句鸡汤&a…...

中创教育PMP如何轻松应对公司90%以上的沟通难题

掌握沟通技能&#xff0c;可以让问题从1变成0&#xff1b; 掌握沟通技能&#xff0c;可以让机会从0变成1&#xff1b; 掌握沟通技能&#xff0c;可以让成功从1变成100&#xff1b; 难题一、当领导问你某件事&#xff0c;但你又不太清楚时 【说话公式】需要思考需要确认晚点回…...

#笨鸟先飞# 数据结构与算法基础 课程笔记 第六章 图

图的定义和基本术语图&#xff1a;G( V , E ) Graph&#xff08;Vertex&#xff0c;Edge&#xff09;V&#xff1a;顶点&#xff08;数据元素&#xff09;的有穷非空集合&#xff1b;E&#xff1a;边的有穷集合。无向图&#xff1a;每条边都是无方向的有向图&#xff1a;每条边…...

深入浅出带你学习Apache中间件常见漏洞

前言 上一篇文章给大家总结了一下IIS中间件的漏洞&#xff0c;这篇文章就给大家讲一下apache中间件漏洞&#xff0c;说起apache大家一定不会陌生&#xff0c;这是我们日常中经常用到的中间件&#xff0c;下面由我来给大家讲解一下改中间件常见的漏洞。 Apache是什么&#xff…...

用多种指针方法访问数据元素,实现逆序输出

这里注意下数组指针的下标表示&#xff1a; 我们已经知道&#xff0c;数组名a总是指向a[0]的指针&#xff0c;*(ai)是对a[i]的引用&#xff0c;实际上&#xff0c;编译器中&#xff0c;对数组的引用&#xff0c;如a[i]&#xff0c;总是被编译器改写成*(ai)的形式。 另外说明下…...

WebDAV之葫芦儿·派盘+NMM

NMM 支持WebDAV方式连接葫芦儿派盘。 推荐一款文件管理器,可以对手机中的文件进行多方面的管理,支持语法高亮和ftp等远程的文件的管理。支持从WebDav服务器连接葫芦儿派盘服务下载文件和上传文件。 NMM文本编辑器是一款文件管理器,在功能上面更加的适合于一些编程人员进行使…...

Redis多级缓存

文章目录一. 什么是多级缓存二. JVM进程缓存一. 什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如果未命中则查询数据库&#xff0c;如图&#xff1a; 存在下面的问题&#xff1a; 请求要经过Tomcat处理&#xff0c;Tomcat的性能…...

【原创】java+swing+mysql会议室管理系统设计与实现

本文主要介绍使用javaswingmysql等技术去设计完成一个企业公司的会议室管理系统&#xff0c;帮助企业员工去进行会议室的预约安排。 功能分析&#xff1a; 会议室管理系统的使用角色&#xff0c;一般分为管理员和员工用户&#xff0c;管理员进行数据管理&#xff0c;员工进行…...

【Redis】Redis 常用数据类型操作 ① ( 数据库操作 | Redis 数据库连接参数 | Redis 数据库个数 | Redis 访问机制 )

文章目录一、Redis 数据库连接参数二、Redis 数据库个数三、Redis 访问机制一、Redis 数据库连接参数 连接 Redis 数据库 , 只需要 IP 地址 , 端口号 , 访问密码 即可 , 如果没有 设置 访问密码 可忽略该选项 ; Redis 默认端口号是 6379 ; 参考 【Redis】Redis 数据库 安装、…...

算法复杂度的实验估算与误差分布建模的技术7

引言算法复杂度分析的理论背景与实验估算的必要性误差来源的常见类型&#xff08;测量误差、系统噪声、模型偏差等&#xff09;实验方法在算法评估中的实际意义实验设计与数据采集实验环境配置&#xff08;硬件、软件、数据集选择&#xff09;关键性能指标定义&#xff08;时间…...

基于copaw-code构建代码语义搜索系统:从原理到实践

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫QSEEKING/copaw-code。这名字乍一看有点摸不着头脑&#xff0c;但如果你对代码搜索、智能辅助编程或者大模型应用开发感兴趣&#xff0c;那这个仓库绝对值得你花时间研究。简单来说&#xff0c;它是一套围…...

Agent才不会“赢家通吃“,证据来了……

Claude Code已经赢成这样了&#xff0c; 顺带又做了CMA&#xff0c; 定义下一代企业级Agent infra。 Claude Code『同款』infra&#xff0c; 谁不想用。 谁又不想卖可复用的工具呢。 这样下去&#xff0c; 做Agent infra须有爆款Agent证明自己吗&#xff1f; 肯定很多人反对&am…...

海思Hi3516 GPIO复用避坑指南:从Excel引脚复用表到实际配置的完整解析

海思Hi3516 GPIO复用配置实战&#xff1a;从寄存器解析到避坑全攻略 当你在调试Hi3516开发板时&#xff0c;是否遇到过这样的场景&#xff1a;明明按照手册配置了GPIO&#xff0c;硬件却毫无反应&#xff1f;或者发现某个复用引脚无法正常工作&#xff1f;这些问题往往源于对海…...

从‘沙滩球’反推断层运动:手把手用Python绘制震源机制解

从‘沙滩球’反推断层运动&#xff1a;手把手用Python绘制震源机制解 地震学研究中最直观的工具莫过于震源机制解图示——那个黑白相间、形似沙滩球的图案。这种专业图表不仅能展示断层的三维运动特征&#xff0c;还能帮助研究者快速判断地震类型。本文将带您用Python从零实现沙…...

终极键盘打字练习指南:Qwerty Learner 免费高效学习方案

终极键盘打字练习指南&#xff1a;Qwerty Learner 免费高效学习方案 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https://g…...

深入AMD Ryzen硬件调试:SMUDebugTool技术原理与高级应用指南

深入AMD Ryzen硬件调试&#xff1a;SMUDebugTool技术原理与高级应用指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...

LRCGET:一键为本地音乐库下载同步歌词的终极方案

LRCGET&#xff1a;一键为本地音乐库下载同步歌词的终极方案 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 你是否厌倦了每次听歌都要手动搜索歌词&am…...

深入剖析`ReentrantReadWriteLock`源码——虚拟线程时代机遇、挑战与演进

引言&#xff1a;并发范式的革命性转变 Java 21 正式引入了虚拟线程&#xff08;Virtual Threads&#xff09;&#xff0c;这标志着 Java 并发编程进入了一个全新的时代。Project Loom 的目标是让编写、维护和观测高吞吐量的并发应用程序变得如同编写顺序代码一样简单。虚拟线程…...

2026届毕业生推荐的十大AI学术助手推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能技术已经深度地融入到了学术写作的流程当中&#xff0c;在毕业论文的撰写期间&#…...