Простой JQuery AJAX против SignalR против AspComet - PullRequest
2 голосов
/ 13 февраля 2012

Я читаю о длинных опросах, кометах и ​​т. Д. И, работая над .Net, я читаю все, что нашел о SignalR и AspComet.Я новичок в кометах и ​​подобных, но мне не ясно, каковы преимущества использования SignalR или AspComet, где я могу просто использовать jquery.ajax / complete:

(function poll(){
    $.ajax({ url: "server", success: function(data){
       doSomething();    
    }, dataType: "json", complete: poll, timeout: 30000 });
})();

, но мне явно не хватаетчто-то здесь, вы можете помочь?

Кроме того, с точки зрения системы / сервера, каковы основные различия?Я понимаю, что с $ .ajax я открываю соединение с сервером и держу его открытым долго (со всеми недостатками, связанными с слишком большим количеством открытых одновременных соединений и т. Д.), Но я предполагаю, что SignalR делает то же самое.Или нет?В то же время AspComet сообщает, что освобождает поток обратно в пул запросов.

Я знаю, я немного запутался и ознакомился с преимуществами использования SignalR и / или AspComet по сравнению с $.Ajax материал будет принята с благодарностью:)

Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 февраля 2012

Для приложений COMET часто требуется собственный сервер. IIS поддерживает выделенный поток для обработки каждого запроса, который явно не масштабируется. В IIS существует ограничение в несколько тысяч потоков на процессор.

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

SignalR - это клиент-серверное решение, которое инкапсулирует базовый протокол связи в асинхронных вызовах. SignalR выбирает лучший доступный протокол (длинный опрос, веб-сокеты или другой), поэтому вам не нужно беспокоиться об этом. У них есть клиенты для .NET, Silverlight, WP7, JS и т. Д.

2 голосов
/ 13 февраля 2012

В вашем примере $.ajax вы отправляете несколько запросов на сервер, и вы делаете это для каждого клиента. Таким образом, ваш веб-сервер постоянно сталкивается с HTTP-запросами, и лишь немногие из них на самом деле служат какой-либо цели, поскольку данные, на которые клиенты подписались на уведомления, могут меняться не так часто. Пока один AJAX-запрос завершается, другой отправляется немедленно.

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

Преимущество длинных опросов заключается в том, что вы ограничиваете количество HTTP-запросов, отправляемых на ваш сервер.

...