Необходимость асинхронного выполнения веб-сервисов на стороне сервера при вызове .ajax в jQuery. - PullRequest
2 голосов
/ 22 марта 2011

У меня есть веб-страница ASP.NET (3.5), которая вызывает несколько веб-методов (на основе SOAP), используя метод jauery's .ajax. Веб-методы реализуют атрибут ScriptMethod и возвращают данные JSON. Файл веб-службы (asmx) является локальным для того же проекта.

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

Я прочитал эту статью , и я не уверен, понимаю ли я, что WebMethods, которые реализуют Scriptmethod, могут работать только синхронно (они реализуют IHttpHandler, а не IHttpAsyncHandler).

Если это правда, возможно, мне придется изменить дизайн.

Я ищу другие проекты, например, использующие WCF, где браузер может вызывать веб-методы с использованием JavaScript, а веб-методы работают асинхронно на сервере.

Есть идеи или пример кода?

Ответы [ 2 ]

0 голосов
/ 22 марта 2011

Если вы используете WCF, вы можете использовать атрибут поведения службы следующим образом: [ServiceBehavior (ConcurrencyMode = ConcurrencyMode.Multiple)]

http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.concurrencymode.aspx

0 голосов
/ 22 марта 2011

Поскольку вы вызываете веб-службу из браузера с помощью метода ajax в jQuery, вызов уже асинхронный.Вы можете увидеть это в документации $ .ajax на http://api.jquery.com/jQuery.ajax/.. Если вы делаете 3 вызова ajax подряд, каждый из них будет выполняться одновременно, и функция обратного вызова будет запущена в порядке очереди.

Надеюсь, я не ошибаюсь в вашем вопросе.

...