我将在这个问题的开头说我大约在 30 小时前开始使用 SignalR,所以请原谅任何业余问题,如果您知道一些我错过的文档,请随时指出我。另外,我不是想写一篇博文——只是解释我为达到我所经历的步骤。
TLDR?跳到最后的问题...
我需要使用 Sql Server 背板(很想使用 Redis,但我们目前不处理 Redis,并且不愿意在一个开发周期中引入太多新技术)。目前,没有可用的 NuGet 包,Microsoft.AspNet.SignalR.SqlServer
所以我必须使用 Github 源代码。
所以我去下载源代码,编译并添加对 Microsoft.AspNet.SignalR.SqlServer.dll 的引用,但现在编译失败(特别GlobalHost.DependencyResolver.UseSqlServer( ... )
是在我的代码中引用时 - 这是一个依赖冲突,*.SqlServer
代码需要更新版本*.SignalR.Core
- 这并不奇怪,因为自从 NuGet 包发布以来,Github 的版本(毫无疑问)有很多变化)。:(
所以下一步是使用*.Core
我编译的*.SqlServer
. 下一个问题 - 新的 SignalR 版本不再适用于*.Hosting.Common
或*.Hosting.AspNet
已被*.Owin
库替换。
所以,我添加了*.Owin
(和 Owin - 来自 NuGet),但现在我遇到了另一个问题:MapHubs( ... )
扩展方法不再起作用 -MapHubs( IAppBuilder builder, ... )
在 Owin 中调用了扩展方法,但它们不再起作用RouteTable
- 它们起作用Owin.IAppBuilder
(因此我想需要参考 Owin)。
所以这就是我所在的地方。我对Owin做了一个快速的阅读(似乎是一个很酷的概念),但我并不特别在意花几个小时来解决这个问题,只是为了能够在服务器端设置 SignalR。所以,现在的问题:
- 我是否应该尝试
*.SqlServer
与 SignalR 的较旧 NuGet 包配合使用(换句话说,更改依赖关系是否可能*.SqlServer
会引入不可靠的行为)?或者,是否有一个版本*.SqlServer
可以与 SignalR 的当前 NuGet 版本一起使用? - 通过 Owin 主机方法运行 SignalR 需要哪些具体步骤(如果没有引入 Nancy 集成,我找不到任何示例 - 或者这是正确的方法)?
- MapHubs 方法的替代方法是什么?我从哪里获得 IAppBuilder?我什至应该这样做吗?
- 在Google Groups 帖子中,David Fowler 指出,在 Owin 支持下,不再需要 AspNet 依赖项。很好 - 但是现在有什么理由在 ASP.Net MVC 应用程序中使用 SignalR 吗?
- 如果 SignalR 的任何部分都没有通过服务器上的 IIS 托管,客户端回退(即 SSE 或长轮询)是通过 IIS 还是独立使用 Owin 主机?
- 最后,我计划在一个 ASP.Net MVC 4 项目中运行 SignalR,该项目作为另一个现有站点的虚拟目录托管 - 我想在单个域中工作。当我的站点托管在 IIS 7.5 中时,使用 Owin 方法是否仍然可行?
更新:根据上面的1.,我设法通过*.SqlServer
依赖当前的 NuGet*.Core
实现来编译代码。所以现在我可以继续开发了。我不认为我想在生产中使用它——我只需要做一个与处理对象相关的小改动——但我只是不认为这是一个好方法。所以我关于 Owin 方法的问题仍然存在——除非有人能说服我我所采取的方法是好的。
谢谢,扎克