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