У меня есть приложение WPF, которое я сейчас работаю над разделением на клиентскую и серверную стороны - с использованием WCF. Мне не понравился беспорядок, который я изначально получил с прямым решением, так что теперь я реструктурирую следующие рекомендации в скринкасте Мигеля Кастро, WCF Extreme. Если вы не знакомы с видео, он в основном настраивает все сообщение вручную - без использования ссылок на службы. Это включает в себя:Реализация службы async WCF
- Общий договор со всеми контрактами услуг и данных - ссылка клиентом и сервером
- Консоль хостинг приложений службы
- прокси-классы на отображение клиента до службы и прохождения вызовов (используя ClientBase или ClientFactory)
Я следил за всеми его шагами, и мне очень нравится, где это происходит. Однако он не обращается к асинхронным вызовам службы, и это то, что я хотел бы использовать.
При добавлении ссылки на службу я могу установить флажок «Сгенерировать асинхронные операции», и я получаю MyServiceCompleted и MyServiceAsync. Тем не менее, я думаю, это то, что было создано при добавлении ссылки на службу, а не какая-то магия в классы, на которых это происходит?
Итак, могу ли я как-то получить асинхронные операции с ClientBase или ClientFactory? Или мне нужно определить, какие службы на стороне сервера будут асинхронными? Если да - может кто-нибудь, пожалуйста, дайте мне несколько советов или примеров о том, как начать работу с простой службой асинхронного обслуживания? Я читал в MSDN по этому вопросу, но это оставило меня все смущенное чувство, как идиот, для того, чтобы не получить это уже.
Спасибо! И IMapProvider будет иметь функции BeginGetImage и EndGetImage, определенные с тегом «[OperationContract (AsyncPattern = true)]»? И мне нужно определить конкретный результат из этого, GetImageAsyncResult? – stiank81
Правильно - я нашел базовый класс AsyncResult в Интернете. GetImageAsyncResult вытекает из этого. – Goran
Хорошо - это отвечает на мой вопрос. Однако я понял, что не хочу, чтобы служба была асинхронной, но я хочу синхронно вызывать синхронную службу. То есть Я обработаю его на стороне клиента. Я легко решаю это с помощью AsyncMethodCaller. Спасибо, в любом случае! – stiank81