【问题标题】:SignalR Hubs in a class library? Is this a good idea or a bad one?类库中的 SignalR 集线器?这是个好主意还是坏主意?
【发布时间】:2014-06-02 17:24:10
【问题描述】:

我对 SignalR 还很陌生。 我开始编写集线器并将该逻辑放入类库中。

这是我想要完成的任务:

我有一个“预处理器”服务,它会启动并从外部源预获取一些对象/文档/等,并将它们放入缓存中。在预取所有项目后,我正在使用集线器与客户端进行通信。

我们还有几个客户消费者。其中包括:

  • 典型的 MVC 应用/项目
  • 我们用于快速测试的控制台应用
  • 一个 webapi 和一个 WCF/SOAP 项目,用于向外部方公开我们的服务
  • 一个单元测试项目

问题

通过将集线器放在类库中,我使所有下游消费者(包括其他类库)都依赖于 OWIN...我现在需要我的启动类(和/或应用程序配置设置来告诉 Owin不使用它)。

public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}

<add key="owin:AutomaticAppStartup " value="false" />

架构?

这对我来说“有味道”。也许 SignalR 集线器不应该在类库中?如果是这样的话,什么是更好的设计?例如在自己的 WebApi 服务中有集线器吗?以及该服务的代理?这样,我的预处理器逻辑(包含在类库中)可以调用集线器吗?

我们将不胜感激。

【问题讨论】:

    标签: .net web-services shared-libraries signalr


    【解决方案1】:

    您当然可以将 SignalR 的东西放在类库中,但在您的情况下,这可能与您进行预处理的地方不同。 SignalR 将是纯粹的基础设施,不会发生任何业务逻辑,只是消息传递。您可以在中间定义一些接口,并将基础设施插入您的预处理接口。这样,对 SignalR 的依赖就在接口后面,你的代码是干净的,对 Owin 的依赖被隔离到基础设施中。

    【讨论】:

    • 我面临同样的问题,我是新来的信号 r ,我在类库中拥有所有集线器,我在哪里保留我的 owin 类?类库或 Web 应用程序?集线器在类库中,如何从 javascript 中创建集线器对象?
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2019-11-11
    • 2010-11-23
    • 2011-10-26
    相关资源
    最近更新 更多