Blazor(服务器)-良好做法:我需要控制器还是由服务处理任何事情



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

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

但由于目前所有内容都是在服务器端处理的,因此不会发出http请求。。所以我想不出有什么情况可以让这种(划分(派上用场。。


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

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


提前感谢。

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

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

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

  • 决定请求路由到哪个页面
  • 基于该页的C#类,反序列化正文和查询参数
  • 实例化页面
  • 在页面上执行处理程序方法
  • 渲染页面
  • 返回渲染的页面作为响应

控制器管道非常相似:

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

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

我建议阅读这些页面了解更多信息:

  • 架构比较
  • 主机模型

我认为最好是通过api控制器查询数据,即使是Blazor服务器(它们可以在Blazor Server项目中实现(,这样从服务器迁移到wasm 会容易得多

我刚刚创建了一个Blazor服务器应用程序,并将DAL注入到每个组件中(而不是使用api控制器(,因为它的开发速度要快得多,但当我试图迁移到wasm时,这非常困难,因为我必须重写它的大部分

相关内容

  • 没有找到相关文章

最新更新