Создание асинхронных клиентов WCF без использования ссылок на службы - PullRequest
3 голосов
/ 10 ноября 2010

В настоящее время я не использую Service References, так как считаю, что код, который он генерирует, имеет больший вес, чем мне нужно. Вместо этого я создаю прокси-класс, выполнив:

public class MyClient : ClientBase<IMyService>, IMyService

Это отлично сработало, прокси-классы не генерируются, поэтому я снова использую те же типы данных. Но это только позволяет мне создавать синхронные методы клиента.

Что потребуется для генерации асинхронных версий? Я взглянул на автоматически сгенерированный код, который можно было бы добавить при добавлении ссылки на сервис, и, похоже, это слишком много. Тонна типов данных arg начала / конца / onbegin / oncomplete, связанных с событием и т. Д. И т. Д.

Есть ли более простой способ с меньшим количеством строительных лесов, необходимых для создания асинхронных клиентских методов? Моя конечная цель - иметь возможность использовать новые ключевые слова c # 5 async / await на клиентах веб-сервиса

Ответы [ 3 ]

2 голосов
/ 10 ноября 2010

Вы всегда можете создать контракт IMyAsyncService, который точно такой же, как IMyService, но использует асинхронный шаблон Begin / End (и имеет [ServiceContract(Name="IMyService")] для сохранения того же имени). Это будет тот же проводной контракт, который будет работать с ClientBase, но теперь у вас есть асинхронные методы, которые вы можете использовать с await.

0 голосов
/ 21 декабря 2010

CTP для async / await - это всего лишь предварительный просмотр поддержки этих функций. Они планируют полностью интегрировать их в WCF.

http://blogs.msdn.com/b/endpoint/archive/2010/11/13/simplified-asynchronous-programming-model-in-wcf-with-async-await.aspx

0 голосов
/ 10 ноября 2010

думаю добавить это [OperationContract (IsOneWay = true)]

к объявлению вашего метода в Интерфейсе ваших служб будет определяться его асинхронность.

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