【问题标题】:In which layer do you place your SignalR logic? [closed]您将 SignalR 逻辑放置在哪一层? [关闭]
【发布时间】:2020-07-04 22:14:21
【问题描述】:

我一直在构建一个简单的 Web 应用程序,使用带有 EF 核心的 asp.net core 3.1 web api 和 React 作为前端。我决定实现一个聊天功能(1 对 1)并且我想使用 SignalR,所以一旦收到新消息,用户就会得到即时更新。我正在尽可能地坚持 SOLID 原则。

我有几个项目。

数据项目 - 保存我的 DbContext、模型、存储库。

服务项目 - 保存与存储库通信并执行数据库查询的服务。

Web 项目 - 持有我的控制器和我的 ClientApp(React)。

我的问题是,我不知道我的 SignalR 代码应该在哪里?

现在它非常简单 - Client -> Controller -> Service -> Repository -> Db 和反向。

【问题讨论】:

    标签: reactjs asp.net-core .net-core signalr asp.net-core-webapi


    【解决方案1】:

    如您所知,SignalR 提供服务器到客户端的远程过程调用 (RPC)。所以它与控制器处于同一级别。因为它是从客户端像控制器一样进入您的 API 和逻辑的第一个入口。

    因此,您的 SignalR 集线器肯定应该在 Web 项目 中,它将包含所有通信逻辑。现在,例如,如果您需要将聊天存储在您的数据库中或执行其他逻辑,您应该使用例如 DI 在您的集线器中注入管理器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 2013-09-04
      相关资源
      最近更新 更多