被Microsoft WebSockets命名空间困惑

到目前为止,在教程,博客和官方文档中,我已经看到:

  • Microsoft.Web.WebSockets
    • 从NuGet获得
    • 程序集是Microsoft.WebSockets,但名称空间是Microsoft.Web.WebSockets
    • 最后更新2011年9月14日
    • 包含WebSocketHandler,WebSocketCollections,WebSocketExtensions
  • System.Web.WebSockets
    • .NET 4.5的一部分,可用于Visual Studio 11 Developer Preview
    • 包含AspNetWebSocket,AspNetWebSocketContext,AspNetWebSocketOptions类
    • MSDN上的文档
  • System.Net.WebSockets
    • 感谢Ladislav Mrnka指出这一点
    • .NET 4.5的一部分,可用于Visual Studio 11 Developer Preview
    • 包含WebSocket,HttpListenerWebSocketContext等等
    • MSDN上的文档
  • System.ServiceModel.WebSockets
    • 我一定以为我在某个地方见过这个,现在找不到
  • Microsoft.ServiceModel.WebSockets
    • 从html5labs.interoperabilitybridges.com / …获得。
    • 安装到[Program Files] \ Microsoft SDKs \ WCF WebSockets \ 11.06.22 \ bin
    • 包含WebSocketHost,WebSocketService,WebSocketsService类以及接口和集合
    • 最后更新2011年6月22日

这些有点不同吗? 是一些旧版本?

我一直认为“Microsoft.Web”命名空间用于预发布代码,但即使Build会议上的演示也使用这个命名空间,尽pipe.NET 4.5包含了内置的System.Web.WebSockets命名空间。

System.Web.WebSockets似乎与Microsoft.Web.WebSockets具有相同的API,但具有以AspNet为前缀的类和方法。

System.ServiceModel.WebSockets是WCF命名空间的一部分,这似乎是一个明智的地方把这东西。

帮助 – 我很困惑。 我应该使用什么?

我会多加一点你的困惑。 Microsoft.*前缀的程序集/名称空间通常是非常特定于某种语言,或者不是.NET框架的一部分(运送带外(或原型))。

.NET框架附带的组件/名称空间通常以System.*开头。 有两个名称空间包含.NET 4.5中与WebSockets相关的function:

  • System.Net.WebSockets – 实现WebSockets
  • System.Web.WebSockets – WebSockets与ASP.NET的集成

我没有看到System.ServiceModel.WebSockets但我认为有一些原型名为Microsoft.ServiceModel.WebSockets

html5labs.interoperabilitybridges.com :

…我们不打算对这个原型的未来更新。

System.Web.WebSockets :

… namespace包含支持将WebSocketfunction添加到ASP.NET Web窗体应用程序的类。

Microsoft.Web.WebSockets:

…提供使用ASP.NET和WCF在Windows 8上编写支持WebSocket的服务器应用程序的function


我的结论是:

  • System.Net.WebSockets似乎是低级别的东西。
  • 当您使用ASP.NET Web窗体时,需要System.Web.WebSockets
  • 当您使用ASP.NET MVC时,NuGet的Microsoft.Web.WebSockets看起来是最好的select

@Greg伍兹重新System.ServiceModel.WebSockets:你没有想象它。

http://html5labs.interoperabilitybridges.com/media/1165/readme.htm

至于Microsoft.Web.WebSockets VS System.Web.WebSockets

我觉得:

System.Web.WebSockets – 为websockets提供了一个较低的 api

而…

Microsoft.Web.WebSockets – 是一种更高的 api,这使得它更容易处理,并试图对html5 / javascript规范中的事件/函数进行镜像(例如onerror,onopen,onmessage,onclose ,发送等…)

这是我为什么命名Microsoft.Web.WebSockets的信念:

“这个预览包提供了使用ASP.NET和WCF在Windows 8上编写支持WebSocket的服务器应用程序的function,需要.NET 4.5 RC和Windows 8 RC。

这可能是Microsoft *。*库,因为它是针对Windows 8 RC开发的。 这不是一个坚实的依赖关系,所以它不能成为官方.NET框架的一部分。

当然,一旦Windows 8出来,他们可以依靠它,并开始释放websockets库作为官方框架的一部分。 因此,Microsoft.Web.WebSockets可能会在没有离开预发布状态的情况下被有效废弃。

什么System.Web.WebSockets VS System.Net.WebSockets

System.Web.WebSockets:“支持向ASP.NET Web窗体应用程序添加WebSocketfunction的类”。

嗯…看起来很简单。 这些类旨在用于ASP.NET Web窗体。 他们需要Windows 8吗? 不确定。

System.Net.WebSockets:是不绑定到Web窗体的其他东西。 但它只适用于Windows 8。

Microsoft.ServiceModel.WebSockets

另一个旧的预发包。 这个在Windows 7上工作!

注意:不要担心在什么平台+框架上使用什么工作来获得WebSocket有点消失,你可以只使用SignalR,它将select一个传输,并尝试为你做一些像websockets。