Разница между синхронизацией WCF и асинхронным вызовом? - PullRequest
4 голосов
/ 25 сентября 2010

Я новичок в WCF, хочу знать, в чем разница между синхронизацией или асинхронным вызовом, будет очень полезно, если кто-нибудь объяснит на примере

Ответы [ 2 ]

6 голосов
/ 25 сентября 2010

Асинхронный вызов клиента аналогичен любой другой асинхронной операции в .NET Framework. Когда вы делаете синхронизирующий вызов из потока в службу WCF, поток будет зависать. Это означает, что поток не сможет выполнять какую-либо другую работу, пока сервисный вызов не вернет ответ или исключение. Напротив, асинхронный вызов будет выполняться в отдельном потоке (созданном фреймворком), поэтому ваш основной поток сможет продолжить работу и будет уведомлен о завершении асинхронного вызова с помощью callback (события).

Итак, предположим, что у вас есть приложение WinForms в качестве клиента WCF и вы хотите вызвать службу WCF. Если вы сделаете синхронизирующий вызов, который займет несколько секунд, чтобы завершить ваше приложение, оно будет зависать в течение этого времени обработки = пользователь не сможет ничего сделать с приложением (убить его только из диспетчера задач). Но если вы используете асинхронный вызов, он будет полностью интерактивным, потому что асинхронная операция будет обрабатываться фоновым потоком. Так что асинхронные операции подходят для интерактивных решений или если вам нужно выполнять несколько операций параллельно.

Например, отметьте это Как написать статью из MSDN.

Просто для полноты я описал разницу между синхронными и асинхронными вызовами = синхронная и асинхронная обработка на клиенте. WCF также поддерживает синхронизацию и асинхронные операции = синхронную и асинхронную обработку на сервере.

3 голосов
/ 25 сентября 2010

WCF имеет встроенную поддержку асинхронности. Могут быть различные сценарии использования асинхронных вызовов.

Если вашему приложению требуется выполнить вызов WCF, который, в свою очередь, выполняет некоторый процесс, занимающий много времени, то может быть лучше выполнить асинхронный вызов. Это сразу даст пользователю контроль, так что приложение не будет зависать. Как только фоновый вызов WCF завершится, пользователь приложения узнает, что это сделано.

Допустим, у вас есть WCF, который вставляет несколько строк в таблицу. Предположим, что WCF запрашивает имя таблицы и строки для вставки в качестве аргументов. Поэтому, если вам нужно вызывать WCF 3 раза, чтобы вставить строки в 3 отдельные таблицы, возможно, было бы лучше начать 3 асинхронных вызова, которые могут работать параллельно, вместо последовательной вставки строк в 3 таблицы по одной.

Получите хорошее чтение по адресу: http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...