Асинхронные веб-звонки - необходима настройка - PullRequest
1 голос
/ 15 января 2012

Я работаю над добавлением веб-метода Async в существующий веб-сервис ASP.Я буду использовать SoapHttpClientProtocol и begininvoke для вызова асинхронного метода, передавая объект asynccallback.

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

Спасибо.

1 Ответ

0 голосов
/ 15 января 2012

Вопрос немного в деталях.Выводы (которые могут быть неверными из-за недостатка подробностей) заключаются в том, что у вас есть клиент .NET, выполняющий вызов веб-службы, представленной приложением Classic ASP.

Вы рассматриваете возможность использования BeginInvoke вподкласс SoapHttpClientProtocol, чтобы сделать вызовы асинхронными с точки зрения ваших клиентов.

На основании того, что мои выводы верны, вам не нужно делать ничего особенного для веб-службы ASP, просто добавьте метод службы какнормальный.Фактически, если вы рассматриваете вызов существующего асинхронно, вам вообще ничего не нужно делать с кодом на стороне сервера.«Асинхронность» - это полностью выдумка на стороне клиента, когда клиентские API выполняют обратный вызов после завершения запроса.

Вероятно, лучше понять, как работают синхронные вызовы, потому что на самом деле они более «искусственные», чемвидимо, более сложные асинхронные вызовы.Прежде всего все операции, которые выполняют какой-либо сетевой ввод / вывод , будут по необходимости асинхронными .В какой-то момент текущему выполняющемуся потоку больше нечего делать, пока он ожидает вечность (с точки зрения современного ЦП) для завершения операции ввода / вывода.

Таким образом, все веб-сервисы фактически будут асинхронными, и вам не понадобится ничего особенного с конфигурацией или брандмауэрами.Просто типичный дружественный к разработчику API-интерфейс будет блокировать текущий поток, в то время как IO завершает работу, и часто использует семантическую функцию для возврата ответа.

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

...