客户端服务器从服务器获取数据的方式有哪些?

时间:2019-12-07 09:20:11

标签: blazor blazor-server-side blazor-client-side

我现在在Blazor客户端上进行了一段时间的实验,我注意到大多数不同的教程都建议客户端blazor通过服务器端Web-api来获取数据。

我不确定为什么会这样。为什么razor无法调用服务器方法,而开发人员却不得不向API公开相同的数据。为什么要执行此额外步骤?

例如

@page "/"
@inject HttpClient Http

<button onclick=@(async () => await PrintWebApiResponse())>Print Web API Response</button>

@functions {
    private async Task PrintWebApiResponse()
    {
        var response = await Http.GetStringAsync("/api/Customer");
        Console.WriteLine(response);
    }
}

可以改写为

@page "/"
@inject HttpClient Http

<button onclick=@(async () => await PrintWebApiResponse())>Print Web API Response</button>

@functions {
    private async Task PrintWebApiResponse()
    {

        ServerServices.Service service = new ServerServices.Service();
        var response = service.GetCustomer();

        Console.WriteLine(response);
    }
}

我刚刚尝试了它(代码是Page Model中的部分类的一部分),它工作得很好。我在这里遗漏了一点吗?为什么建议通过API公开此方法?

1 个答案:

答案 0 :(得分:5)

我不确定您如何设置测试代码,但实际上无法执行您所暗示的事情。 Blazor WebAssembly完全在客户端上运行,整个应用程序被引导并在那里运行。它没有与服务器的活动连接,因此无法访问服务器端服务。这就是为什么您需要使用Web API调用服务器的原因。

Blazor WebAssembly仍然是客户端单页应用程序框架,例如Angular或Vue,它恰好使用C#。