Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

Вебсинхронизация — это масштабируемый сервер 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, но пользовательские поставщики могут быть написаны практически для чего угодно (Redis, NCache).

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

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

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

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

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

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

Вы также можете посмотреть Демонстрации световых стримеров

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top