【问题标题】:Blazor WebAssembly - use SignalR or Controller actions for basic operations?Blazor WebAssembly - 使用 SignalR 或 Controller 操作进行基本操作?
【发布时间】:2021-07-25 06:43:04
【问题描述】:

我通常使用 ASP.NET MVC 进行开发,但我对 Blazor 很陌生。我正在 Blazor WebAssembly 中创建一个新站点。我需要做的第一件事是创建一个带有简单表单的页面,该页面可以创建或更新项目并将其发送到服务器,以保存在数据库中。我可以使用 SignalR 发送对象,也可以使用 HttpClient 将其发布到控制器操作。 Blazor Wasm 的最佳实践是什么?一开始我很想一直使用 SignalR。

我已经看到了同时使用这两种方法的示例,但对于决定在什么情况下使用哪一种几乎没有什么帮助。 This 是我能找到的最有用的东西,但它没有回答确切的问题,也不是 Blazor 特有的。

这个问题专门针对简单的创建更新操作,但两者的其他优缺点都会非常有帮助。是不是像“只在客户端需要监听来自服务器的消息时才使用 SignalR,以避免打开的连接过多”那样简单?

非常感谢

【问题讨论】:

  • Blazor 服务器应用基于 SignalR 协议而不是 HTTP。在我看来,SignalR hub 实际上是一个控制器。请注意,您的 WebAssembly 应用程序中经过身份验证的用户也应该由 SignalR 集线器进行身份验证,以便通过集线器访问服务器上的资产...您需要使用 Authorize 属性注释集线器类。

标签: signalr blazor .net-5 blazor-webassembly


【解决方案1】:

是否像“只在客户端需要监听来自服务器的消息时才使用 SignalR,以避免打开的连接过多”那样简单?

是的,我认为是的。 CRUDL 操作是事务性和异步的。做一个事务,永远等待用户,做另一个事务......我总是通过 API Get/Post 来做这些。

我唯一会考虑 SignalR 的地方是我传递 object 定义的对象 - 例如 Dictionary<string, object>。它们在控制器 API 调用中很麻烦。

【讨论】:

    猜你喜欢
    • 2021-03-18
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多