Blazor(服务器)- 良好实践:我需要控制器还是由服务处理任何内容

CAo*_*AoT 7 .net c# blazor blazor-server-side blazor-webassembly

我是 .net、C# 新手,目前正在编写我的第一个 Blazor(服务器端)应用程序。后来我想迁移到 Blazor WebAssembly..

但是,我想到了一个问题,我需要控制器吗?
我知道 NestJS 形式的控制器 - 控制器处理 http 请求并使用服务进行数据交换和其他任务。

但是因为目前一切都是在服务器端处理的,所以不会发出 http 请求。所以我想不出这个(部门)可以派上用场的情况。


我是否误解或监督了某些事情?

此外,控制器是否在发出实际 http 请求的 WebAssembly Blazor 应用程序中使用?
因为在这里我可以想象这样的划分是有利的。


提前致谢。

And*_*son 7

每次浏览网站时,您都会发出 http 请求。Asp.Net 有两种处理请求和返回响应的主要方式:

  • 页面(Blazor)
  • 控制器(例如 MVC 或 api 控制器)

您可以单独使用其中一种方法,也可以同时运行这两种方法。服务器端 Blazor 管道的简化描述:

  • 决定请求路由到哪个页面
  • 根据该页面的 C# 类反序列化正文和查询参数
  • 实例化页面
  • 执行页面上的handler方法
  • 渲染页面
  • 返回呈现的页面作为响应

控制器管道非常相似:

  • 决定请求路由到哪个控制器+操作
  • 基于 C# 控制器和操作,反序列化主体和查询参数
  • 实例化控制器
  • 执行操作(这可能涉及渲染页面)
  • 返回操作的结果(可以是 html,也可以是 json)

如果您所做的只是在服务器端渲染页面并与它们交互,那么您可以完全通过 Blazor 来完成此操作,而不需要控制器。这不是 Blazor 的主要卖点,服务器端渲染已经存在了一段时间了。有趣的是,您可以将托管模型更改为客户端,并且仍然可以实现这一点!客户端维护与服务器的连接,并在用户与页面或组件交互时发送事件,但 Blazor 会为您处理所有详细信息。这确实会带来开销 - 每次 UI 上的某些内容需要更新时,服务器都必须将该 UI 发送到客户端。如果您想消除该开销,只发送原始数据,那么您需要创建 api 控制器。

我建议阅读这些页面以获取更多信息: