2008-09-15 8 views
102

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

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

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

+12

Я предполагаю, что первоначальный MS-благословен реализация SignalR: http://www.hanselman.com/blog/AsynchronousScalableWebApplicationsWithRealtimePersistentLongrunningConnectionsWithSignalR.aspx – user423430 2011-08-30 20:25:43

+0

Node.js теперь поддерживается в Azure, скоро IIS на 2003 будет поддерживаться. Это означает, что мы сможем запускать кометный сервер в IIS (http://www.windowsazure.com/en-us/develop/nodejs/) – LamonteCristo 2012-01-16 22:52:05

ответ

44

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

+9

Это фактически реализовано; проверьте WebSync, на ответ Антона ниже. (http://www.frozenmountain.com/websync/) – jvenema 2010-03-22 15:10:55

+3

Кто-нибудь звонил в обратный аякс? проверьте это: http://pokein.codeplex.com – Zuuum 2011-01-04 03:29:08

+4

MVC Async Controllers могут помочь в борьбе с проблемами IIS, выгружая ожидания для рабочих потоков, не относящихся к IIS, см. это [отличный пост от Clay Lenhart] (http: //clay.lenharts .net/блог/2010/10/19/WebSockets-это-круто-но-что-может-вы-делать-сегодня). Также см. [Пример примера сервера чата] (https://bitbucket.org/jacob4u2/mvcchatsite/src) в BitBucket. – Jacob 2011-04-13 14:26:40

0

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

+6

Все только масштабируется по вертикали до точки, после чего требуется масштабирование по горизонтали место. – Anton 2009-11-21 02:13:26

3

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

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

33

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

Он официально поддерживает до 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).

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

1

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

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

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

4

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

15

Я недавно написал simple example of a Long Polling Chat Server с использованием контроллеров MVC 3 ASync на основе great article by Clay Lenhart

Вы можете использовать example on a AppHarbor deployment настроить на основе источника из проекта Bitbucket.

Также имеется более подробная информация, полученная от моего blog post explaining the project.

1

Группа WS-I опубликовала что-то под названием "Reliable Secure Profile", в котором есть стеклянная рыба и .NET implementation, что, очевидно, inter-operate хорошо.

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

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

Есть также commercial paid versions.

 Смежные вопросы

  • Нет связанных вопросов^_^