在具有多个项目(API/Service/Data 等)的解决方案中编写 SignalR 服务的最佳方式是什么?
What's the best way to write a SignalR service in a solution with multiple projects (API/Service/Data etc.)?
我有一个 ASP.NET 核心解决方案,其中包含 API、服务、数据等多个项目。现在我想在我的解决方案中添加一个 SignalR 集线器。为了在向客户端发送消息之前生成有效负载,我想要一个服务。但我无法在服务项目中创建它,因为 API 项目依赖于它,而 SignalR 在 API 项目中。我想知道实现这一目标的最佳方法是什么。替代设计理念也将受到赞赏。
我很确定您可以在 class 库中定义您的集线器,因此它不在您的 API 项目中。
或者
- 在另一个库中声明“消息传递接口”
- 引用该库并在您的 API 项目中实现接口。该实施者将负责与集线器的对话。
- 从您的服务中引用接口(而不是直接使用集线器)。
- 将消息传递接口的实现者传递给服务方法(或在 DI 中注册),以便您的服务可以请求接口并让选择的实现者(在 API 项目中)完成工作。
我有一个 ASP.NET 核心解决方案,其中包含 API、服务、数据等多个项目。现在我想在我的解决方案中添加一个 SignalR 集线器。为了在向客户端发送消息之前生成有效负载,我想要一个服务。但我无法在服务项目中创建它,因为 API 项目依赖于它,而 SignalR 在 API 项目中。我想知道实现这一目标的最佳方法是什么。替代设计理念也将受到赞赏。
我很确定您可以在 class 库中定义您的集线器,因此它不在您的 API 项目中。
或者
- 在另一个库中声明“消息传递接口”
- 引用该库并在您的 API 项目中实现接口。该实施者将负责与集线器的对话。
- 从您的服务中引用接口(而不是直接使用集线器)。
- 将消息传递接口的实现者传递给服务方法(或在 DI 中注册),以便您的服务可以请求接口并让选择的实现者(在 API 项目中)完成工作。