Опции для веб-уведомлений и обновлений в режиме реального времени с использованием технологий Comet/XMPP и WebSocket в стеке Microsoft?

Я просматриваю архитектурные варианты проекта, в котором будут отображаться текущие обновления (например, Facebook) действий пользователя - логины, фотографии и т.д. Два основных компонента пользовательского интерфейса - это область автоматического обновления прокрутки, в которой будут появляться новые уведомления (фотографии и т.д.) и панель инструментов, которая будет обновляться такими вещами, как обновленное количество сообщений и т.д.

Соперниками для этого являются технологии Jabber/Comet/XMPP и WebSocket.

Зал кометы:

Лагерь WebSockets:

Поскольку эта существующая инфраструктура представляет собой стек Microsoft, я бы предпочел не вводить в состав Java-серверов. Говоря это, он оставляет (очень привлекательный) WebSync (Comet) и SuperWebSocket (WebSockets). Однако интеграция с Pokein DLL довольно легко интегрируется в проект .Net.

Есть ли еще реальные инициативы WebSocket для уровня производительности для .NET? Слишком рано использовать WebSockets в стеке Microsoft, и я должен пойти в пользу чего-то вроде Kazing?

Я все еще жду отчета о наших типах и версиях браузера текущего пользователя (проверка совместимости с HTML5). Я подозреваю, что это число будет низким (старшая пользовательская база). Если это так, то победителем будет опция кометы.

Что еще нужно рассмотреть?

Глядя на некоторые из .Net-инициатив, таких как Sockets.IO и другие, я думаю, что это может быть слишком много в зачаточном состоянии, применительно к крупномасштабной производственной системе.

Могу ли я получить комментарии от тех, кто использовал любую из технологий и продуктов, перечисленных выше?

Спасибо.

UPDATE

Я все еще охочу за некоторыми хорошими серверами WebSocket, которые являются надежными на уровне производства. Я добавил XSockets и SignalR в лагерь Websockets после того, как их недавно нашли. В это время еще есть два основных соперника. Это может быть просто из-за того, что у них потрясающе отличные маркетинговые команды, хорошие материалы для разработчиков - API и видео. Множество других реализаций, похоже, все еще находится в фазе новых форм, где приводятся примеры подключения только с несколькими клиентами. Хотя это демонстрирует технологию, эти демонстрации не подкреплены значительными данными о полезной нагрузке и нагрузке. Kaazing и LightStreamer соответствуют приведенным ниже требованиям.

В XSockets есть несколько приятных примеров, но опять же, отсутствуют некоторые реальные производственные показатели.

Похоже, что SignalR еще не протестирован в реальной производственной среде. Масштабное решение находится в разработке, но пока не выглядит стабильным. С нетерпением ждем, как этот проект будет реализовываться в будущем.

Основные требования:

  • Возможность реализовать отказоустойчивую технологию (если HTML5/WebSockets не доступно)
  • Большое количество одновременных подключений и количество сообщений в второй
  • Масштабируемость - возможность добавления дополнительных серверов/узлов для больших требования к трафику

Ответ 1

WebSync v4 использует WebSockets в дополнение к возврату к длительному опросу/обратному опросу по мере необходимости. WebSockets в WebSync также являются стандартными портами HTTP, поэтому проблем с маршрутизаторами/файловыми системами и т.д. Не будет.

В "нормальной" системе вы должны видеть ~ 20k одновременно (за node) и ~ 100 тыс. сообщений/сек. Тем не менее, это очень грубые цифры, поскольку это сильно зависит от вашей системы и типов сообщений, которые вы отправляете, и т.д. Мы видели до 50 тыс. Пользователей (за node) и (в другом тесте) 300 тыс. Сообщений/сек.

(Отказ от ответственности: я работаю для Замороженной горы)

Ответ 2

По причинам, в т.ч. уже упомянутые выше, я бы пошел с WebSockets.

Если вы используете WebSockets, вы также можете рассмотреть Autobahn WebSockets - высокопроизводительный WS-сервер, который поддерживает Windows, где он работает поверх IOCP (порты завершения ввода/вывода).

Последнее важно, если вы хотите масштабировать до больших номеров соединений (сотни тысяч).

Отказ от ответственности: я автор Autobahn WebSockets. Базовая технология - OSS. В настоящее время мы готовим коммерческое предложение, центр обмена сообщениями в режиме реального времени, предоставляемый в качестве виртуального устройства (работает на VMware/сфере). Полностью интегрированное, закаленное устройство. Последний также позволяет вызывать уведомления через концентратор, используя простой старый HTTP/POST.. он имеет REST API, который позволяет отправлять клиентам, подключенным через WS. Если вас интересует частное бета-тестирование, свяжитесь со мной.

Ответ 3

Кажется, вы выбираете наиболее стабильные реалии Comet. Все они выглядят стабильными, способными вмещать от десяти до сотен тысяч пользователей за node и более.

Итак, что может быть следующим? Например, PokeIn будет размещать все аспекты веб-приложения над VisualJS.NET; Видео-1, Видео-2

Это также показывает встроенные возможности этой библиотеки и варианты, которые вы можете сделать.

Кроме того, последняя версия поддерживает сериализацию Base64 для сообщений между клиентом и сервером, следовательно, не более обнаженных сообщений JSON в сетевых пакетах.

ОБНОВЛЕНИЕ: PokeIn 2.0 имеет встроенную поддержку WebSockets.

Ответ 4

Производительность, получаемая с помощью WebSockets по сравнению с традиционными решениями комет, находится в нескольких порядковых диапазонах; Я бы определенно пошел с лагерем WebSockets. Здесь традиционное сравнение комет поставщиков двух технологий, измеряющее более чем 150-кратный фактор в пользу WebSockets (700 мс против 3 мс у 50 000 пользователей).

Несколько примечаний к имени Каузинга:

Kaazing полностью поддерживается Microsoft как серверная платформа. Кроме того, как вы заметили, Kaazing поддерживает множество клиентских библиотек и технологий, в том числе стек Microsoft:.NET и Silverlight, которыми счастливо пользуются многие наши клиенты.

Кроме того, Kaazing предлагает богатые деловые протоколы поверх WebSockets, позволяя вам "говорить" XMPP непосредственно в вашем клиентском коде.

О поддержке браузера: Kaazing обеспечивает исключительно хорошую эмуляцию WebSocket, поддерживая все браузеры там, включая старые браузеры, вплоть до IE6. Вы можете больше узнать об этом в этом сообщении в блоге.

Что касается зрелости: Kaazing WebSocket Gateway поставляется с 2009 года и имеет большое количество клиентов высокого профиля во многих отраслях, включая финансовые, логистические, игровые и розничные продажи; очень зрелая платформа с поддержкой верхней метки.

Ответ 5

SignalR выигрывает.

Теперь, когда продукт созрел, он был ветерок для реализации. По сути, он предлагает то, что эти $everall ваши $и долларовые пакеты стоят, но не имеют маркетинговых долларов, чтобы продемонстрировать некоторые действительно классные реализации.

С технической точки зрения вы можете выполнять те же действия с SignalR. Если ваши технические специалисты рекомендуют обратное, они, вероятно, не знают, как реализовать SignalR в среде с балансировкой нагрузки (или даже самостоятельно).