it-swarm-ru.tech

Реализация кометы для ASP.NET?

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

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

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

102
Doron Yaacoby

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

44
Scott Hanselman

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

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

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

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

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

33
Anton

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

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

Кроме того, дополнительную информацию можно получить из моего сообщение в блоге, объясняющее проект .

15
Jacob

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

4
BigbangO

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

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

3
Vikram

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

Если повезет, есть реализация Javascript .

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

Также есть коммерческие платные версии .

1
Christopher

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

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

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

1
Chris

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

0
cruizer