Подтвердить что ты не робот

Смутные пространства имен Microsoft WebSockets

До сих пор в учебниках, блогах и официальной документации я видел:

  • Microsoft.Web.WebSockets
    • Получено от NuGet
    • Сборка - это Microsoft.WebSockets, но пространство имен - это Microsoft.Web.WebSockets
    • Последнее обновление 14 сентября 2011 г.
    • Содержит WebSocketHandler, WebSocketCollections, WebSocketExtensions
  • System.Web.WebSockets
    • Часть .NET 4.5 и доступна в Visual Studio 11 Developer Preview
    • Содержит классы AspNetWebSocket, AspNetWebSocketContext, AspNetWebSocketOptions
    • Документация на MSDN
  • System.Net.WebSockets
    • Спасибо Ладиславу Мрнке за то, что он указал на это.
    • Часть .NET 4.5 и доступна в Visual Studio 11 Developer Preview
    • Содержит WebSocket, HttpListenerWebSocketContext и многое другое
    • Документация на MSDN
  • System.ServiceModel.WebSockets
    • Я, должно быть, предположил, что видел это где-то, не могу найти его сейчас
  • Microsoft.ServiceModel.WebSockets
    • Получено из html5labs.interoperabilitybridges.com/....
    • Установлен в [Программные файлы]\Microsoft SDK\WCF WebSockets\11.06.22\bin
    • Содержит классы WebSocketHost, WebSocketService, WebSocketsService, а также интерфейсы и коллекции.
    • Последнее обновление 22 июня 2011 года.

они как-то разные? Есть несколько более старых версий?

Я всегда предполагал, что пространство имен Microsoft.Web использовалось для кода предварительной версии, но даже демонстрации на конференции Build используют это пространство имен, несмотря на то, что .NET 4.5 включает пространство имен System.Web.WebSockets встроенный.

System.Web.WebSockets, похоже, имеет тот же API, что и Microsoft.Web.WebSockets, но с классами и методами с префиксом AspNet.

System.ServiceModel.WebSockets является частью пространства имен WCF, что также кажется разумным местом для размещения этого материала.

Справка - я в замешательстве. Что я должен использовать?

4b9b3361

Ответ 1

Я добавлю немного больше вашего замешательства. Microsoft.* префиксные сборки/пространства имен обычно либо очень специфичны для какого-либо языка, либо не являются частью .NET framework (поставляется вне диапазона (или прототипов)).

Ассембли/пространства имен, поставляемые с платформой .NET, обычно начинаются с System.*. В .NET 4.5 есть два пространства имен, содержащие функции, связанные с WebSockets:

  • System.Net.WebSockets - реализация WebSockets
  • System.Web.WebSockets - интеграция WebSockets с ASP.NET

Я не вижу System.ServiceModel.WebSockets, но я думаю, что был прототип с именем Microsoft.ServiceModel.WebSockets

Ответ 2

html5labs.interoperabilitybridges.com:

... мы не планируем никаких будущих обновлений этого прототипа.

System.Web.WebSockets:

... namespace содержит классы, которые поддерживают добавление функциональных возможностей WebSocket для приложений ASP.NET Веб-формы.

Microsoft.Web.WebSockets:

... обеспечивает функциональность для написания серверных приложений с поддержкой WebSocket в Windows 8 с использованием ASP.NET и WCF


Мой вывод:

  • System.Net.WebSockets кажется чем-то низкоуровневым.
  • System.Web.WebSockets, если вы используете ASP.NET Веб-формы
  • Microsoft.Web.WebSockets из NuGet выглядит лучше всего, когда вы используете ASP.NET MVC

Ответ 4

Что касается Microsoft.Web.WebSockets vs System.Web.WebSockets...

Я думаю, что:

System.Web.WebSockets - дает вам нижнюю api для работы с веб-сайтами

в то время как...

Microsoft.Web.WebSockets - это своего рода более высокий api, что значительно облегчает работу, а также пытается отразить события/функции, которые находятся в спецификации html5/javascript (например, onerror, onopen, onmessage, onclose, send и т.д.)

Ответ 5

Это мое убеждение в том, почему именование Microsoft.Web.WebSockets:

"Этот пакет предварительного просмотра обеспечивает функциональность для написания серверных приложений с поддержкой WebSocket в Windows 8 с использованием ASP.NET и WCF. Требуется .NET 4.5 RC и Windows 8 RC."

Возможно, это библиотека Microsoft. * named, потому что она была разработана против Windows 8 RC. Что не является надежной зависимостью, поэтому оно не может быть частью официальной структуры .net.

Конечно, как только Windows 8 выйдет, они могут зависеть от него и начать выпуск библиотек websockets в рамках официальной структуры. Таким образом, Microsoft.Web.WebSockets можно эффективно устаревать, не покидая статус предварительной публикации.

Как насчет System.Web.WebSockets vs System.Net.WebSockets?

System.Web.WebSockets: "классы, которые поддерживают добавление функций WebSocket для приложений ASP.NET Web Forms".

Hm... Кажется простым. Эти классы предназначены для использования в веб-формах ASP.NET. Требуется ли Windows 8? Не уверен.

System.Net.WebSockets: это что-то еще, что не связано с веб-формами. Но он работает, только если у вас Windows 8.

Microsoft.ServiceModel.WebSockets

Другой старый пакет предварительной оплаты. Это работает на Windows 7!

Примечание: вместо того, чтобы беспокоиться о том, что работает на платформе + framework, чтобы использовать для получения WebSockets, вы можете просто использовать SignalR вместо этого, который выберет транспорт и попытается сделать что-то вроде веб-сайтов для вас.