Blazor 服务器是如何运行的?

自微软推出Blazor以来已有一年左右的时间 ,该工具用于在浏览器中运行.Net代码 。 一年来是不平凡的一年,有多个版本,每个版本都增加了越来越多的代码兼容性。 现在被描述为“使用C#进行全栈Web开发”的Blazor可在客户端和服务器上运行。

Blazor建立在开放标准WebAssembly平台之上 ,并在针对单页Web应用程序进行了优化的浏览器中实现了.Net运行时。 使用基于熟悉的Mono的浏览器版本,可以即时编译代码,从而驱动HTML和JavaScript页面组件。 尽管Microsoft仍将Blazor归类为实验性产品,但最近的一系列公告清楚地表明,它已经准备好迎接黄金时段。

服务器上的Blazor

尽管WebAssembly Blazor与发行版还有一段距离,但Microsoft正在加速以ASP.Net Core 3.0的一部分的Razor Components名义发布该技术的服务器端版本。 不要被名称更改所迷惑:这将是熟悉的Blazor Razor语法,您的代码现在在服务器上运行,使您可以选择在所有Web应用程序中开发和使用共享组件 。

发行服务器端版本是明智的决定,因为并非所有浏览器都完全支持WebAssembly。 您的Blazor代码不是在浏览器中运行,而是在Signal.Net Core中运行,使用SignalR在浏览器中JavaScript代码之间来回发送事件。

即将发布ASP.Net Core 3.0尚需时日,但是您现在就可以开始使用服务器端Blazor,以了解如何在应用程序中使用它。 您还可以使用Razor语法标记开发第一个服务器端Blazor组件。 学习曲线应该很短,因为Blazor与用于开发Web应用程序(将标记链接到同一文档中的代码)的原始ASP.Net方法之间存在很多相似之处。

在服务器上使用Blazor,您仍然可以使用C#编写Web应用程序。 创建一个新的服务器端Blazor应用程序将为您的代码设置一个ASP.Net Core模板 ,并为客户端提供一个SignalR端点。

为什么在服务器上使用Blazor

在服务器上使用Blazor有很多好处。 因为它是一个完整的.Net应用程序,所以它将进行预编译,并且不需要在每次加载时都在WebAssembly中进行编译。 从应用程序和页面加载时间的角度来看,这应该会使您的用户更快。 开发人员也可以获得其他好处:在运行ASP.Net Core代码的情况下使用Visual Studio的远程调试器,您可以直接访问它进行调试。 您还可以针对更广泛的客户端,包括不支持WebAssembly的较旧的移动设备。 使用SignalR作为端点意味着您还可以选择交付本机客户端和Web应用程序。

并非Blazor中的所有事物都是美好的。 浏览器托管的WebAssembly应用程序可以脱机运行,也可以作为渐进式Web应用程序的一部分运行。 服务器端Blazor并非如此,因为您需要与服务器建立SignalR连接。 该连接也将受到网络延迟的影响,这使得服务器端Blazor应用程序的运行速度明显慢于WebAssembly中运行的应用程序。

这种方法还存在其他一些问题,需要加以思考:Blazor本质上是一个用于构建无状态单页应用程序的工具,而持久的SignalR连接应为您处理状态,但始终存在您可能无法与之建立连接的风险客户。 您需要建立一种适当的机制来在网络连接失败的情况下恢复应用程序状态,如果您希望移动客户端使用您的应用程序,那么这是必不可少的。

在WebAssembly中和服务器上使用Blazor之间存在一定的权衡。 尽管在WebAssembly中运行意味着您可以从任何地方交付代码,而无需依赖ASP.Net Core,但这种情况不受支持,而且可能会持续一段时间。 服务器端Blazor需要一台ASP.Net Core服务器,因此,如果要采用这种方法,则需要考虑如何部署一个或多个。 与其他服务器技术相比,使用ASP.Net Core的优势之一是它可以在Linux和Windows Nano Server上运行,从而可以轻松地使用Kubernetes以及Azure Service Fabric Mesh之类的工具进行容器化、管理和扩展。

向Blazor添加第三方组件

UI组件供应商已经提供了支持,Progress最近宣布它将在其Telerik UI框架中添加Blazor UI组件。 Telerik UI for Blazor以其熟悉的Kendo UI工具为基础,是一个早期的beta版本,该版本支持完整的Blazor组件模型,在单个文件中混合了标记和代码。 最初只是一小部分组件,带有数据网格,选项卡集和可自定义的按钮。

Progress的目标是在服务器端实现其Blazor组件。 使用Kendo命名空间作为NuGet软件包提供,可以轻松添加到Blazor代码中,并支持数据绑定和主题。 它目前是免费的,并且将在Microsoft更新其自己的Blazor实现时进行更新。 尽管服务器端Blazor支持是合乎逻辑的,但由于它使用与WebAssembly版本相同的运行时,因此您仍然可以在WebAssembly应用程序中使用Telerik组件。

Blazor从EdgeHTML过渡到Chrome

有了服务器端的未来保证,Blazor在浏览器中的下一步是什么? 尽管从EdgeHTML和Chakra到Chromium有了很大的转变,但是Microsoft的Edge浏览器更改不会对Blazor产生重大影响。 WebAssembly是所有主要Web平台都支持的跨浏览器技术。 Blazor已在Chrome中运行,Chrome远程调试工具是确保代码正常运行的有用部分。

实际上,这是一项更改,很可能使将客户端Blazor达到生产标准变得更加容易。 Chromium的WebAssembly功能已经在Google的Chrome中提供,因此Microsoft将其引入Edge实施相对容易。 Chromium致力于在WebAssembly中获得良好的C和C ++实现,这使得.Net运行时很容易放入Chromium。 如果我要猜测的话,我建议Edge中发生的更改可能会使Microsoft更轻松地将Blazor从试验阶段移至试生产阶段,然后释放状态。

Blazor一开始可能只是一个实验,但它正迅速成为ASP的一个组成部分.Net 的核心。将web应用程序组件的UI模型应该减少重新设计一个网格的风险控制与每一个新的应用程序,和组件供应商参与该项目将使开发人员更容易证明使用Blazor下一代web应用程序,因为他们可以建立在现有支持关系和现有的技能。

 

原文链接: https://www.infoworld.com/article/3336864/blazor-now-runs-on-a-server-what-you-should-know.html

你可能感兴趣的:(Blazor 服务器是如何运行的?)