Подтвердить что ты не робот

Как применить шаблон задачи Async и WCF ChannelFactory <TChannel>?

У нас есть надежный клиент WCF, созданный в 2008 году на .NET 3.5 (теперь перекомпилирован в .NET 4.0), который рассказывает о нашей собственной службе WCF по привязке net.tcp. Устойчивый клиент использует ChannelFactory <IOurServiceInterface> () для создания прокси-сервера службы, через который мы в настоящее время выполняем синхронные вызовы для этой услуги. Мы получаем результаты от каждого вызова; у нас нет односторонних вызовов.

Мы переносимся на .NET 4.5/С# 5 и хотели бы сделать асинхронный клиент, используя async/await/TAP. Как лучше всего сделать это таким образом, чтобы обеспечить чистый код и хорошую производительность во время выполнения?

(Я рассмотрел документацию по этой теме, но всегда говорит о запуске svcutil. Мы не используем svcutil, мы напрямую используем ChannelFactory. Также: MS-документация для операций вызова асинхронно с использованием канала factory под .NET 4.5 не изменился с .NET 3.0 дней. Кажется, ChannelFactory не принял новую асинхронность.)

4b9b3361

Ответ 1

Вы можете обернуть существующие конечные точки APM (Begin*/End*) в TAP-ready Task, используя TaskFactory.FromAsync.

Вы можете найти мой Async WCF Today и Tomorrow post, который показывает, как использовать TAP с pre-VS2012 svcutil.

Ответ 2

Вы видели этот? Я сделал пример ожидаемого [OperationContract], возвращающего Task<TResponse>.