【问题标题】:SignalR Sql Server/Owin Dependency IssuesSignalR Sql Server/Owin 依赖问题
【发布时间】:2012-12-13 18:05:26
【问题描述】:

我将在这个问题的开头说我大约 30 小时前开始使用 SignalR,所以请原谅任何业余问题,如果你知道一些我错过的文档,请随时向我指出。另外,我不是想写一篇博文——只是解释我为达到目标所经历的步骤。

TLDR?跳到最后的问题...

我需要使用 Sql Server 背板(很想使用 Redis,但我们目前不处理 Redis,并且不习惯在一个开发周期中引入太多许多新技术)。目前,Microsoft.AspNet.SignalR.SqlServer 没有可用的 NuGet 包,所以我必须使用 Github 源代码。

所以我去了源代码,编译并添加了对 Microsoft.AspNet.SignalR.SqlServer.dll 的引用,但现在编译失败(特别是在我的代码中引用 GlobalHost.DependencyResolver.UseSqlServer( ... ) 时 - 这是一个依赖冲突,其中 @987654326 @code 期待*.SignalR.Core 的更新版本——这并不奇怪,因为自从 NuGet 包发布以来,Github 的版本(毫无疑问)有很多变化)。 :(

所以下一步是使用我用*.SqlServer 编译的*.Core。下一个问题 - 新的 SignalR 版本不再适用于 *.Hosting.Common*.Hosting.AspNet,它们已被 *.Owin 库替换。

所以,我添加了 *.Owin(和 Owin - 来自 NuGet),但现在我遇到了另一个问题:MapHubs( ... ) 扩展方法不再有效 - 在 Owin 中有名为 MapHubs( IAppBuilder builder, ... ) 的扩展方法,但它们没有不再使用 RouteTable 了 - 它们使用 Owin.IAppBuilder (因此需要引用 Owin,我想)。

所以这就是我所在的位置。我快速阅读了Owin(似乎是一个很酷的概念),但我并不特别在意花几个小时来解决这个问题,只是为了能够在服务器端设置 SignalR。那么,现在来回答问题:

  1. 我是否应该尝试让 *.SqlServer 与 SignalR 的旧 NuGet 包配合得很好(换句话说,更改 *.SqlServer 的依赖关系是否可能会引入不可靠的行为)?或者,是否有一个版本的 *.SqlServer 可以与 SignalR 的当前 NuGet 版本一起使用?
  2. 通过 Owin 主机方法运行 SignalR 需要哪些具体步骤(如果没有引入 Nancy 集成,我找不到任何示例 - 或者这是正确的方法)?
  3. MapHubs 方法的替代方法是什么?我从哪里获得 IAppBuilder?我什至应该这样做吗?
  4. Google Groups post 中,David Fowler 指出,在 Owin 支持下,不再需要 AspNet 依赖项。很好 - 但是现在有任何理由在 ASP.Net MVC 应用程序中使用 SignalR 吗?
  5. 如果 SignalR 的任何部分都没有通过服务器上的 IIS 托管,客户端回退(即 SSE 或长轮询)是通过 IIS 还是独立使用 Owin 主机?
  6. 最后,我计划在 ASP.Net MVC 4 项目中运行 SignalR,该项目作为虚拟目录托管在另一个现有站点之外 - 我想在单个域中工作。当我的网站托管在 IIS 7.5 中时,使用 Owin 方法是否仍然可行?

更新:根据上述1.,我设法通过使*.SqlServer 依赖于当前的NuGet *.Core 实现来编译代码。所以现在我可以继续开发。我不认为我想在生产中使用它——我只需要做一个与处理对象相关的小改动——但我只是不认为这是一个好方法。所以我关于 Owin 方法的问题仍然存在——除非有人能说服我我所采取的方法是好的。

谢谢, 扎克

【问题讨论】:

  • 这类问题太宽泛了。相反,请尝试提出人们可能真正想要回答的不同的具体问题。
  • 是的,我明白你在说什么,大卫 - 我通常会尽量具体地回答 SO 问题。问题是,我一直未能找到与概述的问题相关的任何有用信息——所以我真的不知道从哪里开始。我知道你们仍在开发下一个版本,开发是理所当然地比文档更重要的重点,但如果没有工作示例,甚至很难知道要问什么。
  • 另外,虽然问题 2 和 5 可能过于笼统(我现在将看到删除/改进它们),但有一些(问题 1、3、4 和 6)是,恕我直言,很具体...
  • 仍然没有人会回复。如果您想讨论某些事情,请前往jabbr.net/#/rooms/signalr

标签: asp.net-mvc signalr


【解决方案1】:

简答:

希望这将帮助其他遇到此问题的人(我敢肯定你们中至少有一个人!):看来我提出的问题的时机确实很糟糕,因为在发布后几个小时,SignalR 已更新在 NuGet 到版本 1.0.0-rc1。所以,对于任何与我有同样问题的人 - 只需升级软件包。

详情:

安装后查看引用时,您会注意到现在有一​​个Microsoft.AspNet.SignalR.SystemWeb 引用。在尚未深入研究的情况下,我认为这是 *.Hosting.Common*.Hosting.AspNet 的替代品,因为在更新 MapHubs( ... ) 扩展方法后工作正常。

我还注意到 *.SystemWeb 引用依赖于 *.Owin - 所以我猜 Owin 引用被用作抽象层,它允许 SystemWeb 托管独立于底层 IIS/其他服务器实现。

至于.SqlServer 参考,那仍然需要我针对*.Core 的NuGet 版本编译一个版本,以便在本地编译。我现在只使用它,并希望项目团队在不久的将来某个时候在 NuGet 上发布一个工作版本。

一个现实的替代方案是让我的团队相信我们应该将 Redis 加入其中 - 在与 Redis 合作过其他项目后,我认为这是一个不错的选择,因为考虑到性能,但它确实需要 Linux,这可能是一个.Net 团队的问题...

【讨论】:

  • 不抱歉,自从我发布此消息后,我还没有查看过 Sql Server 背板。不过据我所知,SignalR 源代码中的现有实现还没有准备好生产——从 GitHub 来看,他们也没有对它做任何积极的事情(自 SignalR 1.0.0 发布之前没有更新)。我建议在这里询问更多信息:jabbr.net/#/rooms/signalr - 与其他任何地方相比,您在那里获得良好响应的机会更大。
猜你喜欢
  • 1970-01-01
  • 2016-05-21
  • 2015-12-11
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 2015-06-29
相关资源
最近更新 更多