今天我们来说说Blazor的三种部署方式,如果大家还不了解Blazor,那么我先简单介绍下Blazor
Blazor 是一种 .NET 前端 Web 框架,在单个编程模型中同时支持服务器端呈现和客户端交互性: ● 使用 C# 创建丰富的交互式 UI。 ● 共享使用 .NET 编写的服务器端和客户端应用逻辑。 ● 将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器。 ● 使用 .NET 和 Blazor 生成混合桌面和移动应用。
以上的介绍来自于官方的文档介绍,简单来说Blazor和Vue,Recat,Angular等前端框架一样,都是Web前端框架,但是Blazor实现了使用C#来编写业务逻辑,不适用JS来编写逻辑。如果大家想了解更详细的介绍内容可以参考官方文档。 Blazor提供了三种部署方式,大家可以根据场景来进行多种选择。
让我们先了解下WebAssembly是什么? WebAssembly也被简称为WASM,是一种为网络设计的可移植的编译目标,旨在将C、C++、Rust等编程语言编译成高效的二进制代码,使其在现代网络浏览器中运行。WebAssembly可以提供更快的加载速度和和更高的执行效率。
Blazor WebAssembly 的部署模式如下: ● 在满足浏览器支持 WASM 标准的前提下,会将 Blazor 项目编译得到的.NET 程序集传输至客户端。 ● 这些程序集随后在客户端浏览器的 WebAssembly 环境中运行,可以在离线状态下执行,为用户提供更加灵活的使用体验,无论用户处于网络连接不稳定还是完全脱机的情况,都能正常使用应用程序,提升了应用的可用性和用户体验。
在这种开发架构中,所有的 HTML+CSS 以及 C# 后端代码的执行过程都是在服务器端完成的。并将解析后的完整 HTML+CSS 代码发送到前端的浏览器执行,Blazor 脚本与服务器建立 SignalR 连接,每个客户端与服务器都会建立一个持久的 SignalR 通道,通过 SignalR 通道实现客户端与服务器的交互。
在这种部署方式下我们提到了SignalR,我们对SignalR做一个简单的介绍
ASP.NET SignalR 是一个面向 ASP.NET 开发人员的库,可简化向应用程序添加实时 Web 功能的过程。 实时 Web 功能是让服务器代码在可用时立即将内容推送到连接的客户端,而不是让服务器等待客户端请求新数据。 Blazor Hybrid 使用跨桌面、移动和 Web 共享相同的 Blazor 组件,可以开发出 Android、iOS 移动设备上的 App、还可以开发出在macOS 和 Windows 上运行的桌面应用。简单来说通过Blazor混合应用,可以开发出目前几乎所有的跨平台应用
使用跨桌面、移动和 Web 共享相同的 Blazor 组件,可以开发出 Android、iOS 移动设备上的 App、还可以开发出在macOS 和 Windows 上运行的桌面应用。简单来说通过Blazor混合应用,可以开发出目前几乎所有的跨平台应用
先来看一个官方提供的区别图,下面我总结以下三种方式的优缺点供大家参考
(1) WebAssembly为二进制代码,有着更好的性能 (2)在浏览器客户端首次运行获得程序集后,可离线运行 (3)第一次加载需要客户端发送程序集,会导致首次加载速度慢
(1)所有代码在服务端运行,服务端负载大,客户端加载速度快 (2)不需要浏览器支持WebAssembly标准,可以使得应用在一些旧版本的浏览器上也可以运行 (3)不支持离线场景,无网络情况下无法访问 (4)SignalR连接,会对性能有所损耗
(1)开发速度快,多平台使用 (2)不同平台需要编译不同的应用 (3)手机和电脑端需要安装APP才能使用,不能直接从浏览器访问