У меня есть приложение WPF, в котором я сейчас работаю над разделением на клиентскую и серверную стороны - с использованием WCF. Мне не нравился беспорядок, который я изначально получил с прямым решением, так что теперь я реструктурирую следующие рекомендации в скринкасте Мигеля Кастро, WCF Extreme. Если вы не знакомы с видео, он в основном настраивает все сообщение вручную - без использования ссылок на службы. Это включает в себя:
- Общий договор со всеми контрактами на обслуживание и передачу данных, на которые ссылаются клиент и сервер
- Консольное приложение, обслуживающее службу
- Прокси-классы на клиенте, сопоставляющие службу и передающие ему вызовы (с использованием ClientBase или ClientFactory)
Я выполнил все его шаги, и мне очень нравится, где это происходит. Однако он не обращается к асинхронным вызовам службы, и это то, что я хотел бы использовать.
При добавлении ссылки на службу я могу установить флажок "Сгенерировать асинхронные операции", и я получаю MyServiceCompleted и MyServiceAsync. Тем не менее, я думаю, это то, что было создано при добавлении ссылки на службу, а не какая-то магия в классы, на которых это происходит?
Итак, могу ли я как-то получить асинхронные операции из ClientBase или ClientFactory? Или мне нужно определить, какие службы на стороне сервера будут асинхронными? Если да - может кто-нибудь, пожалуйста, дайте мне несколько советов или примеров о том, как начать работу с простой службой асинхронного обслуживания? Я читал в MSDN по этому вопросу, но это оставило меня все смущенное чувство, как идиот, чтобы не получить это уже.