Внедрение комет для ASP.NET?

Я рассматривал способы реализации gmail-подобных сообщений внутри браузера и пришел к концепции Comet. Тем не менее, я не смог найти хорошую реализацию .NET, которая позволяет мне делать это в IIS (наше приложение написано в ASP.NET 2.0).

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

Итак, мой вопрос: знаете ли вы о реализации ASP.NET для кометы, которая работает по-другому? Возможно ли это с IIS?

Ответ 1

Комета сложно масштабировать с помощью IIS из-за постоянной связи кометы, но теперь есть команда, которая смотрит на сценарии кометы. Также смотрите блог Aaron Lerch, поскольку я считаю, что он сделал некоторые ранние работы Comet в ASP.NET.

Ответ 2

WebSync - это масштабируемый сервер Comet, совместимый со стандартами, который интегрируется непосредственно в конвейер IIS/.NET. Он также доступен по запросу в качестве размещенной службы.

Он официально поддерживает до 20 000 одновременных подключений клиентов на сервер node, но отдельные тесты показали, что он достигает 50 000. Пропускная способность сообщений оптимальна вокруг отметки 1000-5000 одновременных клиентов, а сообщения доставляются до 300 000 в секунду от одного node.

Он включает поддержку на стороне клиента для JavaScript,.NET/Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime и .NET Compact, с поддержкой на стороне сервера для .NET/Mono и PHP.

Кластеризация поддерживается с использованием SQL Server или Azure Caching из коробки, но пользовательские поставщики могут быть написаны практически для чего угодно (Redis, NCache).

Отказ от ответственности: Я работаю в компании, которая разрабатывает этот продукт.

Ответ 3

Недавно я написал простой пример сервера чата с длинным опросом с использованием MVC 3 Async Controllers на отличная статья Клей Ленхарта

Вы можете использовать пример в развертывании AppHarbor. Я настроен на основе источника из проекта BitBucket.

Кроме того, более подробная информация доступна на моем блоге

Ответ 4

На самом деле существует множество вариантов создания поддерживаемого веб-сайта ajax с помощью ASP.NET, но, честно говоря, PokeIn это самый простой способ создать поддерживаемое comet ajax веб-приложение. Он сохранил один из проектов моей компании.

Ответ 5

Вы также можете посмотреть Kaazing Enterprise Gateway, который сделал производственный выпуск своего шлюза webSocket [HTML5], который заменяет комету полностью и обеспечивает полнодуплексные соединения между браузерами и серверами приложений.

Вы также можете посмотреть Light Streamer Demos

Ответ 6

Я когда-то давно использовал сайт чата, который использовал настраиваемый HTTP-потоковый сервер. Я фактически воспроизвел это программное обеспечение в одном месте из чистого любопытства, и это достаточно легко сделать, я думаю. Я бы никогда не попытался реализовать подобный тип "бесконечного запроса" в IIS, особенно в ASP.NET, потому что запросы связывают поток потока потока (или поток IO, если используются асинхронные обработчики) неограниченно, что означает, что вы можете обрабатывайте столько на сервере, сколько позволяет конфигурация пула потоков.

Если бы у меня была сильная законная потребность в такой функциональности, я бы честно написал для нее собственный http-сервер.

Я знаю, что на самом деле не отвечает на ваш вопрос, но я думал, что вход может быть релевантным.

Ответ 7

Группа WS-I опубликовала нечто, называемое "Надежный защищенный профиль" , в котором есть Glass Fish и . NET-реализация, которая, по-видимому, хорошо взаимодействует.

В любом случае существует Javascript реализация.

Существует также реализация Silverlight, которая использует HTTP Duplex. Вы можете подключить javascript к Silverlight, чтобы получить обратные вызовы, когда происходит нажатие.

Существуют также коммерческие платные версии.

Ответ 8

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