我有一个ASP.NET核心解决方案,包含多个API、服务、数据等项目.现在,我想在解决方案中添加一个信号集线器.为了在向客户端发送消息之前生成有效负载,我需要一个服务.但我不能在服务项目中创建它,因为API项目依赖它,而SignalR也在API项目中.我想知道实现这一目标的最佳方法是什么.其他设计 idea 也将受到赞赏.

推荐答案

我很确定你可以在类库中定义你的中心,这样它就不在你的API项目中了.

或者

  1. 在另一个库中声明"消息传递接口"
  2. 引用该库并在API项目中实现接口.该实现者将负责与中心进行对话.
  3. 从服务引用接口(而不是直接引用集线器).
  4. 将消息传递接口的实现者传递给服务方法(或在DI中注册),以便您的服务可以请求接口,并让所选的实现者(在API项目中)完成工作.

Asp.net相关问答推荐

如何正确配置 IHttpModule?

Web API Queryable - 如何应用 AutoMapper?

httpCompression 和 urlCompression 有什么区别?

在 EF4.1 中正确地从上下文中附加和分离实体

MSCharts找不到请求类型'GET'的http处理程序错误

部署后 ASP.Net Core Identity 登录状态丢失

异步编程与线程有什么不同?

不支持关键字:服务器

在asp.net mvc c#中使用cookie

FluentValidation 使用数据库的唯一名称验证

Jquery asp.net 按钮单击事件通过 ajax

Windows 运行 ASP.NET 的 IIS 替代方案

使下拉列表项不可 Select

IIS 会话超时与 ASP.NET 会话超时

如何从 Web API 应用程序返回 PDF

Windows Azure PaaS(网络角色)的真正替代品?

删除 HTML 或 ASPX 扩展

有没有办法在没有异常类的情况下抛出自定义异常

简单的 LINQ 和列表错误:WhereListIterator`1[Task]' to type 'System.Collections.Generic.List`1[Task]'

将 html 标记从 jquery 发布调用发送到 asp.net 页面时,从客户端检测到潜在危险的 Request.QueryString 值