最近blazor更新很快,今天在官方博客上发布了Blazor WebAssembly 3.2.0 RC:https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-release-candidate-now-available/ ,这是最后一次预览版了,功能开发都已经完成。
5.19的微软Build大会上就正式发布了,我最近也在积极的研究学习blazor,在博客和公众号发了几篇最新版本发布的文章,在评论区还是微信群,有人问我,为什么你对blazor如此热情,这些同学都在使用vue/angular/react等前端框架,blazor正好是利用WebAssembly 开发的前端框架,编程语言从js变成了c#, 我觉得如果您对你的前端技术栈感到满意,你可以继续使用现在你所用的框架继续前进,也许blazor并不适合你 ,巧的是最近vue3 也发布了beta版本,vue3 要真正普及也是需要至少一年的时间,blazor 可以充分的吸收前端技术栈的精华,为我所用,我将在文章的末尾列出一些blazor 吸收前端技术圈的成果的开源项目。
blazor适用于编写内部应用程序,企业应用开发人员开发的B2B和B2C的应用程序都适合使用blazor开发,现在已经有很多企业应用开发人员接受了JavaScript,还有许多企业开发人员没有,特别是winform,wpf 等开发人员,他们特别希望能够高效的的完成开发工作,这里面有很多的开发人员都很认同Sliverlight 是他们交付Web应用程序的捷径,一朝被蛇咬,十年怕井绳,有人认为blazor 只是 Silverlight vNext。我们为什么要相信微软这次不会杀死它?这种观点可以理解,但是将blazor 的未来与Sliverlight的过去混为一谈是荒谬的。
Silverlight是浏览器插件模型的牺牲品。2010年Flash是浏览器上非常流行的插件,史蒂夫-乔布斯(Steve Jobs)杀死了他,iOS设备上不支持Flash,当时Silverlight 也是如日中天,微软亲手杀死了它,拥抱了Html5这种无插件模型,相比之下,blazor是在WebAssembly标准之下的现代浏览器中运行,每个主流浏览器(IE11除外),甚至是iOS设备上的Safari 都支持blazor,这里要吐槽下微信里面的哪个浏览器貌似支持不太好。我们可以将WebAssembly视为在JavaScript运行所在的沙箱中运行的二进制编译代码,blazor 正式借助于WebAssembly 实现了将.NET 运行时运行在浏览器中。这个运行时处理 JavaScript 互操作,并提供基本服务(如垃圾回收)和更高级别的功能(布局、路由和用户界面小部件等)。换句话说,blazor使用了一个驻留在另一个虚拟机中的虚拟机,堪称《盗梦空间》级别的悖论,也是一种在浏览器中运行非 JavaScript 应用程序框架的巧妙方法。
运行时使得blazor 和 WebAssembly 上运行的其他语言与众不同,MonoCLR 编译为WebAssembly。任何.NET Standard 2.1的代码都可以在上面运行,这样就可以把.NET生态的大量库带到前端开发,其他的语言只实现了直接编译为WebAssembly,blazor当前利用WebAssembly 的一个独特创新,据我所知,还没有一个类似于blazor这样的WebAssembly运行时存在。
blazor 真正是一个组件模型,组件模型也很优雅,blazor的绑定模型也很容易理解。事件模型和标准的C# 一样,随着诸如DevExpress、Telerik、Radzen、Syncfusion等控件厂商提供了大量的控件,企业应用开发人员有理由开始blazor之旅。InfoQ的一篇文章《Mono 现状与未来:从 Xamarin 到 WebAssembly、Blazor 及.NET 5》有助于大家理解blazor和.NET的关系。
我这里也期望JavaScript的开发同学一起来使用这项创新的前端开发框架,人们经常说,WebAssembly 并不是用来代替 JavaScript 的。但这句话对所有革命性平台都是一样的。JavaScript 当初并不是要取代嵌入浏览器的 Java。Web 应用程序并非旨在替代桌面应用。但一旦能做到这些,它们必然会走上那条路。在社区也出现了大量的blazor 开源项目,这项开源项目都是急需前端开发同学的参与:
开源项目 ant-design-blazor,目标是成为Ant Design官方认可的Blazor实现,并丰富Blazor生态
Github:https://github.com/ElderJames/ant-design-blazor
Demo:https://ant-design-blazor.gitee.io
开发文档:https://github.com/ElderJames/ant-design-blazor/wiki
Bootstrap 是 Blazor基于Bootstrap ,这个UI库目前只有服务器端,客户端wasm模式等正式版出来会搞
仓库地址:https://gitee.com/LongbowEnterprise/BootstrapBlazor
演示地址:blazor.sdgxgz.com
Blazui Element的blazor版本,用 .NET 写前端的 UI 框架
仓库地址:https://github.com/wzxinchen/Blazui
演示地址 http://blazui.com:9000
Blazorise 是一个组件库,基于 像Bootstrap, Bulma 和Material 等CSS frameworks
github:https://github.com/stsrki/Blazorise
官网:https://blazorise.com/
Skclusive-UI Component library for Blazor using Material Design.
github:https://github.com/skclusive/Skclusive.Material.Component
Material Design components for Blazor and Razor Components
github:https://github.com/SamProf/MatBlazor
github的仓库:https://github.com/AdrienTorris/awesome-blazor 收集了更全面的blazor 和webassembly相关的资料。