¿Cómo se aplica el patrón Async de tareas y ChannelFactory de WCF<TChannel>?
asynchronous task (2)
Tenemos un cliente robusto WCF construido en 2008 en .NET 3.5 (ahora recompilado bajo .NET 4.0) que habla con nuestro propio servicio WCF sobre el enlace net.tcp. El cliente robusto utiliza ChannelFactory <IOurServiceInterface> () para generar un proxy de servicio, a través del cual hacemos actualmente llamadas sincrónicas al servicio. Obtenemos resultados de cada llamada; no tenemos llamadas de una sola vía.
Estamos migrando a .NET 4.5 / C # 5 y deseamos que el cliente sea asincrónico utilizando async / await / TAP. ¿Cuál es la mejor manera de hacer esto de forma que resulte en código limpio y buen rendimiento en el tiempo de ejecución?
(He examinado la documentación de MS sobre este tema, pero siempre se trata de ejecutar svcutil. No utilizamos svcutil; utilizamos ChannelFactory directamente. Además: la documentación de MS para las operaciones de llamada de forma asincrónica utilizando una fábrica de canales en .NET 4.5 no ha cambiado desde .NET 3.0 días. Parece que ChannelFactory no ha adoptado la nueva asincronía).
Puede ajustar los puntos finales existentes APM ( Begin*
/ End*
) en Task
listas para TAP utilizando TaskFactory.FromAsync
.
Puede encontrar útil mi publicación Async WCF Today and Tomorrow , que muestra cómo usar TAP con el svcutil anterior a VS2012.
¿Viste esto ? Hice un ejemplo de una Task<TResponse>
retorno Task<TResponse>
[OperationContract]
esperar [OperationContract]
Task<TResponse>
.