asp.net Blazor服务器如何在后端工作?

wa7juj8i  于 12个月前  发布在  .NET
关注(0)|答案(1)|浏览(137)

想象一下这段代码:

@page "/"

@code{
    string name;
    string greet;
}
@{
    void sayhello()
    {
        greet = $"Hello, {name}";
    } 
}
<span>Type your name : </span>
<input Type="Text" @bind="name" />
<br/>
<button @onclick="sayhello">Say hello!</button>
<hr/>
<h1>@greet</h1>

字符串
这段代码将得到用户的名字,并向用户问好。但是它是如何工作的呢?这是真的吗?
在Blazor WebAssembly中,它在客户端机器中像c#独立程序一样运行。但在BlazorServer中,它也是这样做的,但在服务器中而不是在客户端机器中,它使用SignalR将更新的UI发送到客户端。

osh3o9ms

osh3o9ms1#

正如你所说,Blazor可以以两种方式运行,服务器端或客户端。
当它是客户端的时候,就像浏览器中的JavaScript一样。当页面加载时,代码被下载到客户端计算机上。当你点击按钮时,它在浏览器中运行,而不需要与服务器联系。
当运行服务器端Blazor时,客户端发生的任何事情都将从浏览器发送到服务器进行处理,然后发送回显示。
这种服务器/客户端事务发生的级别与大多数Web框架有点不同。
如果我们看三个不同的级别或服务器渲染:
1.带有HTML响应的表单提交。当客户端提交请求时,服务器返回HTML供浏览器呈现,所有数据都已内联在HTML中。这就是ASP.Net MVC,PHP和各种其他服务器端技术传统上的工作方式。这种方法通常在页面上的每次单击都通过HTTP传输一个完整的页面。

  1. AJAX/XHR请求到API。页面通过加载HTML和JavaScript开始。当您单击页面上的按钮时,它会向服务器发送请求,服务器仅使用所需的数据进行响应,然后显示数据。此方法通常在加载时传输大量标记,然后仅在必要时传输数据。这是Blazor WASM/Client和单页应用程序框架(SPA)中使用的模型。
    1.在Blazor服务器中,客户端和服务器之间有一个(接近)连续的来回连接,用户的每次点击都会在客户端和服务器之间来回传输,但每次都会发送完整的HTML页面或数据,只是进行最小的更改来更新页面。这发生在SignalR上,但也可能发生在Http或其他协议上,SignalR协议正是作为一种有效的真实的实时数据传输协议而被选用的。
    正如@Crowcoder和@Adyson所提到的,SignalR是一个抽象,它主要使用websockets,有时也使用HTTP或其他技术。微软提供这个抽象很大程度上是因为WebSockets快速高效,但编码起来不舒服,也不稳定。而不是每个人都必须编写必要的代码来安全地使用WebSockets,SignalR将其 Package 在一个易于使用的API中。客户端和服务器之间的Blazor链接就是使用该抽象构建的。
    这三个场景并不难区分。这三个层经常混合在一起,有很多如果和但是,以及位于边界某处的场景。然而,它们是常见的场景,有助于理解这两种类型的Blazor在Web框架中的位置。

相关问题