Blazor已死,别挣扎了


官方解释Blazor现状,表示已不再维护Blazor,求开发者别用了

Blazor允许您使用c#而不是JavaScript构建交互式web UI。 Blazor应用由可重用的web UI组件组成,这些组件使用c#、HTML和CSS实现。客户端和服务器代码都是用c#编写的,允许您共享代码和库。

Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架:

  • 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI。
  • 共享使用 .NET 编写的服务器端和客户端应用逻辑。
  • 将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器。
  • 与新式托管平台(如 Docker)集成。

使用 .NET 进行客户端 Web 开发可提供以下优势:

  • 使用 C# 代替 JavaScript 来编写代码。
  • 利用现有的 .NET 库生态系统。
  • 在服务器和客户端之间共享应用逻辑。
  • 受益于 .NET 的性能、可靠性和安全性。
  • 在 Windows、Linux 和 macOS 上使用 Visual Studio 保持高效工作。
  • 以一组稳定、功能丰富且易用的通用语言、框架和工具为基础来进行生成。

看到这里有些小伙伴手中的瓜已经要丢出来了,的确有部分是夸大了的,起码VS在三个平台高效工作这事儿,嗯。。。其他的继续吃瓜吧

<!-- more -->

Blazor Vs MVC

什么是MVC

官方解释:ASP.NET Core MVC 是使用“模型-视图-控制器”设计模式构建 Web 应用和 API 的丰富框架。

圈重点,Blazor是交互式Web UI,而MVC是Web应用和API

什么是交互式Web UI

谷歌、百度转了一圈,没有这个解释,连Wiki也是一脸懵逼。

尝试理解一下吧,交互式Web UI重点在于交互,而Blazor的官方解释是用C#代替JavaScript,那我们看看JavaScript有什么功能,我百度找一段过来:

  1. 嵌入动态文本于HTML页面
  2. 对浏览器事件做出响应
  3. 读写HTML元素
  4. 在数据被提交到服务器之前验证数据
  5. 检测访客的浏览器信息。控制cookies,包括创建和修改等

有这些基础功能,用户不需要在静态页面里跳来跳去了,的确体验会好很多

Blazor有什么优势

提供了一些交互能力,不再是纯粹的静态页,虽然mvc可以使用JavaScript达到同样的效果,但你需要掌握JavaScript,甚至还要再学习jQuery、Angular、Vue等。而Blazor提供的交互能力则是使用C#。

吹是吹完了,但你真的可以100% C#吗?这很难,你会遇到各种问题,比如兼容性、性能等。好了,那我可以不用了吗?等等,下面还有瓜

Blazor Vs 现代前端(Angular、Vue等)

我们从几个方面来对比一下吧

调试

  • Blazor:Vistual Stuidio + F5,VS Code/命令行工具 + dotnet watch比WebPack要快很多,跟Vite差不多在非复杂场景下Hot Reload是可以的,但奇奇怪怪的问题太多了,前景很好,目前来看还是用Ctrl + F5启动或者用命令行吧VS 2022的Ctrl + F5已经支持Hot Reload了
  • 现代前端:Webpack/Vite

全家桶

以Vue为例,Vue全家桶包括Vue Cli、Vue Router、Vuex

Blazor:

  • Cli:dotnet cli
  • Router:Microsoft.AspNetCore.Components.Routing.Router
  • Vuex:Blazor状态管理,区别在于WASM状态保存在浏览器内存中,而Server保存在服务器内存中。而且Blazor状态管理更强大的是借助.Net的能力,原生支持持久化存储、跨线路保存(Server下共享服务器内存)、ASP.NET Core 受保护的浏览器存储(Server独享功能)

组件库

主流的Bootstrap, Ant Design, Material Design等双方都有。但由于现代前端多年的积累,质量上的确有一定差距。

除了丰富程度上,Blazor允许被JavaScript调用加载,并生成Angualr、React等组件。

虽然这看起来跟用C#解决代替JavaScript有点冲突,但融入大环境也是不错的

下图演示的是Blazor提供的inventory-grid Component被React引用的例子(当然也可以给Angular):

更神奇的是,在React复用的Blazor Component居然也支持Hot Reload。先不说Hot Reload到底如何,单是这个方向其实还是值得期待一下Hot Reload的未来吧。

16372888703025.png

不止可以给React提供复用的组件,还可以给WPF

16372890939413.png

第三方库

举几个前端常用库来比较。

网络:现代前端有axios,Blazor有HttpClient

数据操作:现代前端有Lodash,Blazor有Linq

时间:现代前端有moment.js、Day.js,Blazor有DateTime全家桶

响应式编程:现代前端有rx.js,Blazor有Rx.Net(没有用过,理论上.Net基本都能用,欢迎纠错)

Mock:现代前端有Mock.Js,Blazor有Moq,当然除了mock以外还有端到端的,双方也都有。


对比下来其实.Net反而还有点优势,那就完美吗?当然不是,再说点劣势的部分吧。

Charts:现代前端有ECharts等,Blazor不想说话

虽然目前Blazor的确没有成熟、免费的Charts组件库,但因为Blazor可以与JS交互的能力,调用ECharts也很简单,稍微考验一点点小伙伴的动手能力

富文本编辑器、拖拽。。。

Blazor骂骂咧咧的退出了群聊。。。


相关文章

2022-02-23

GNOME Project 近日宣布 Clutter 库正式退役,这个用于 GNOME Shell 并且是 GTK3 的核心库曾在 2006 年为 Linux 带来了基于 OpenGL 的硬件渲染。 Clutter 是一个用于渲染 UI 的图形库,最初由 OpenedHand 负责开发。其首个版本于 2006 年发布

2022-04-01

微软曾于去年 5 月份,Internet Explorer 11 桌面应用程序将于 2022 年 6 月 15 日退役;同时将从某些 Windows 10 版本中淘汰 Internet Explorer 11,将其替换为基于 Chromium 的 Microsoft Edge。Edge 中包含有一个 IE 模式,以兼容依赖 IE11 的网站和应

2021-12-20

Apache Log4j 的 2.0-alpha1 到 2.16.0 版本存在新的漏洞 CVE-2021-45105 ,此漏洞评分 7.5 ,且在刚发布的 Log4j 2.17.0 (Java 8) 中得到了修复。如果把安全公司 Praetorian 发现的第三个信息泄露漏洞也算进去,这应该是 Log4j 的第四个漏洞了。

2021-11-09

了最少的 API,以简化入门体验并提升 HTTP 服务的性能。Blazor 组件现在可以从 JavaScript 渲染并与现有的基于 JavaScript 的应用程序集成。用于 Blazor WebAssembly (Wasm) 应用程序的 WebAssembly AOT 编译,以及对运行时重新链接和

2022-03-10

另一位联合创始人 Cassidy James Blaede 在公司发展状况比较挣扎的时刻,没有提前通知他们而直接跳槽去了另一家公司并要求获得大量补偿一事。 在推文中,Danielle Foré 先介绍了一下公司目前的经营状况:自疫情开始蔓延以来,

2022-02-22

看过上一篇文章《还有人记得 Linux 之前,那个理想又骄傲的 BSD 吗?》的读者都知道, BSD 是 Unix 最重要的一个开源分支,这一本该坐上“开源头把交椅”的操作系统家族承受了一场足以记载史册的浩劫。  时间倒回二十年前

2022-03-02

不断地改进 Edge 开发者工具。 已知问题: 尚不支持 Blazor 项目开发 ASP.NET Core 应用程序时,单击预览按钮会出现一个新的外部控制台窗口修改 CSS 时,不会实时显示更新,需要手动保存文件才能预览进行 CSS 更改后重置滚动

2022-02-21

在自行构建 Linux 内核的时候去除这段代码,又或者干脆别买带有 SDSi 功能的 CPU (AMD YES ?)。

2022-05-12

性能调整、吸尘造成的中断和管理应用程序的可用性方面挣扎。AlloyDB 结合了谷歌的扩展计算和存储、行业领先的可用性、安全性和 AI/ML 驱动的管理以及 PostgreSQL 的完全兼容性,同时还具有企业期望运行其关键任务应用程序的性

2021-11-09

榜单前十;然而最近,该语言已经开始在前十的边缘苦苦挣扎。TIOBE CEO Paul Jansen 称,“PHP 曾经是 Web 编程领域的佼佼者,但现在它在这个领域面临着大量的竞争。这并不是说 PHP 已经死了,仍然有很多中小型企业在依赖 PHP。

2022-04-18

代码占用率的版本替换了 memmove-ssse3,同时它还将 memcpy 别名为 memmove。 除此之外,所有其他 SSSE3 functions 都应该可以安全删除。性能并没有发生太大变化,尽管显示了整体改进而没有任何重大的 regressions 或 gains。 bench-memcp

2022-04-11

tag0("job"); TagsMDC.tag1(job.getName()); log.error("{}", e); throw e; //别吃掉 } finally { //记录一个内部处理的花费时间 long timespan = System.currentTimeMillis() - start; CloudClient.metric().addMeter(Solon.cfg().appName(), "job", timespan); } } } 添加 CloudEventIntercepto

2022-10-02

ssembly 模块提供的,因此占用空间小且性能稳定。Microsoft Blazor 则排在第三。 研究人员认为,WebAssembly 在 Web 方面是一项 niche web technology,而且很有可能永远如此。虽然 WebAssembly 为 Web 带来了广泛的语言如 C++、Rust、Go、AssemblySc

2022-09-28

Pop!_OS 22.10。 虽然 10 月将不会有 Pop!_OS 22.10 的发布,但别忘记了目前最新的长期支持版本为今年 4 月发布的 Pop!_OS 22.04,该版本可以定期获得新的 Linux 内核和更新的图形驱动,Flatpak 也能确保软件的最新版本随时使用。 目前