扩展应用程序可能是一个巨大的挑战,两种托管模式都有其优点和缺点。在 .NET 7 之前,可以通过所谓的“托管模板”交付 Blazor 应用程序。该模板是一个标准 ASP.NET Core 应用程序,它将 Blazor 应用程序交付给客户端。该模板使得使用 WebAssembly 变体并同时在服务器上执行敏感逻辑成为可能。这意味着您可以从两种模型的优点中受益,同时减少缺点。不幸的是,自 .NET 8 以来,该模板已不再存在。但是,有一个新模板提供相同的功能。
新的 Blazor Web 应用模板
在这篇文章中,我们将仔细研究具有 InteractiveAuto 渲染模式的新 Blazor Web 应用程序。此模板激活 WebApp 页面的自动服务器端预呈现。首先,用户看到在服务器上呈现的页面。 UI 逻辑在服务器上执行并通过 Web 套接字连 阿尔及利亚 whatsapp 数据 接传递到前端。一旦应用程序的二进制文件完全加载,客户端就会关闭 Web 套接字连接并在浏览器中使用 Wasm 程序集。
您可以使用以下 Cli 命令创建相应的 Blazor Web 应用程序:
这为我们提供了以下项目:
Blazor天气应用程序
页面和组件所在的 Blazor 服务器项目。这些可以在服务器端静态呈现或交互式呈现。
静态呈现的组件作为简单的 HTML 文件从服务器传递到客户端,并且没有交互性。
交互式服务器端渲染组件是交互式的并且在服务器端运行。它们通过 Web 套接字连接传递给客户端。
BlazorWeatherApp.Client
Blazor 客户端项目,包含使用 WebAssembly 渲染或自动渲染的组件。首先,这些组件在服务器端渲染,然后当在浏览器中下载 DLL 文件时,渲染在 WebAssembly 中的客户端完成。
该项目模板允许我们在应用程序中编写服务器端和客户端呈现的组件。它还解决了首次启动时加载时间长的问题。如果页面使用自动渲染模式,则应用程序将在启动时使用服务器端渲染的页面,并在所有必需的 DLL 传输到客户端后切换到使用 WebAssembly 及其所有优点。如果 WebAssembly 版本不起作用,您将自动返回到服务器端渲染的页面。让我们为此页面编写一个示例。
在 Blazor.Client 项目中创建 WebAssembly 页面
通过 WebAssembly 执行的页面是在 BlazorWeatherApp.Client 项目中创建的。下图显示了此类页面的骨架。