No soy un chico de C# yo soy más un tipo de Objective-C, pero últimamente he visto muchas implementaciones de:Acción <T> vs Standard Volver
public void Method(Action<ReturnType> callback, params...)
En lugar de:
public ReturnType Method(params...)
Uno de los ejemplos de esto es MVVM Light Framework, allí el desarrollador implementa el contrato (e implementación) del servicio de datos utilizando el primer enfoque, por lo que mi pregunta es: ¿por qué? Es solo cuestión de me gusta o es el primer enfoque asincronous por defecto (dado el puntero de la función). Si eso es cierto, ¿el retorno estándar es la muerte? Lo pregunto porque personalmente me gusta que el segundo enfoque sea más claro para mí cuando veo una API.
En caso de que no se haya encontrado con la Biblioteca de tareas paralelas, las bibliotecas que ofrecen métodos asíncronos normalmente * ofrecerán la Tarea Método (params ...) en lugar de realizar una devolución de llamada, pero puede no ser opción para las bibliotecas que necesitan trabajar con frameworks que no tienen soporte de Tarea (por ejemplo, Silverlight tiene la Tarea agregada en la versión 5, por lo que cualquier cosa Silverlight 4 o anterior necesitaría quedarse con callbacks o algún otro patrón) –
@JamesManning He visto implementaciones del TPL que parecen bastante claras. ¿Están ellos -tras las sábanas- igual? –
Creo que eso dependería de lo que sea la biblioteca de implementación. Conceptualmente, el TPL es un poco "mejor" (en mi humilde opinión) porque maneja cosas como cancelaciones y excepciones.Con las nuevas funciones de idioma, también puede escribir lo que se siente como código sincrónico utilizando la palabra clave await, que le permite evitar tener que escribir métodos de devolución de llamada, permitiendo que el compilador reescriba el método para que lo haga por usted. –