2012-04-05 9 views
1

Я реализую комету с использованием AsyncHttpHandlers в моем текущем приложении asp.net. В соответствии с моим клиентом по реализации первоначально отправляет запрос уведомления об ошибке на сервер (с его идентификатором пользователя) на AsyncHttpHandler, а на стороне сервера я поддерживаю словарь глобального уровня (Application level) для userid (key) и IAynsResult (значение). Поэтому, когда приходит запрос на отправку уведомления пользователю, я просто выбираю соответствующий IAsyncResult из Глобального словаря и отправляю ответ клиенту.Комета с ASP.NET AsyncHttpHandlers

Моя забота о том, является ли словарь Userid и IAsyncResult на уровне приложения хорошим дизайном? Я чувствую, что это наложит большую нагрузку на сервер во время высокого трафика. Есть ли другой способ достичь кометы. или что будет хорошим дизайном для достижения кометы для сценариев с высоким трафиком.

+0

Вы должны проверить библиотеку PokeIn. – Zuuum

ответ

1

Это зависит от количества запросов на сервер. В запросе IAsyncResult используется ThreadPool процесса, который автоматически управляет количеством рабочих потоков. Этим потокам назначается задача, запускается их до завершения, а затем возвращаются в ThreadPool для повторного использования.

ThreadPool используется другими аспектами .NET и предоставляет ограниченное число количество потоков. Если вы злоупотребляете им, есть вероятность того, что ваши задачи будут заблокированы, ожидая завершения других!

Таким образом, для запуска кометного сервера на ASP.net требуется либо сильное аппаратное обеспечение, либо распределение приложений на нескольких серверах.

Я бы порекомендовал HTML5 WebSocket, который является W3C API для реализации сокетов в HTML и проще в установке на сервере ASP.net:

SignalR for .net 4

ASP.net WebSocket API for .net 4.5

+0

Можно ли создать сервер видеочата, используя веб-камеры HTML5? – Sumit

+0

Нет, это не так! Потоковая часть в порядке, однако вы не можете передавать видеопоток таким образом: http://groups.google.com/a/chromium.org/group/chromium-html5/browse_thread/thread/bec3ac48af5766b1?pli=1 –

+0

спасибо за ответ, я только хочу реализовать потоковое часть с помощью websockets. – Sumit