Con las ventajas de la E/S asincrónica y ahora es bastante fácil de codificar y componer (utilizando los métodos Await y TAP) me pregunto si deberíamos usar asincronización de manera predeterminada y solo ajustar el rendimiento utilizando la sincronización cuando sea necesario.¿Deberíamos cambiar para usar la E/S asincrona por defecto?
Async I/O libera el hilo de llamada y permite hacer algo más mientras espera el resultado. Por otro lado, async I/O es un poco más lento que la sincronización.
Para imponer IU receptivas, los diseñadores de WinRT consideraron aceptable ofrecer métodos solo asíncronos.
AFAIK La E/S de archivos de Windows internamente es asincrónica. Al ver esto ingenuamente, no está claro para mí, por qué el archivo asíncrono de E/S en .NET debería ser más lento que la sincronización en absoluto.
Generalmente prefiero la simplicidad y la solidez y solo sintonizo el rendimiento donde sea necesario. En el pasado, utilizábamos la sincronización de forma predeterminada con la excepción de llamar a algunos servicios y donde plataformas como el teléfono aplicaban asincronías. Rara vez ajustamos mediante el uso de asincrónico.
El [pfxteam blog] (http://msdn.microsoft.com/en-us/magazine/jj133817.aspx) contiene información interesante en este contexto: * "Tenga en cuenta que no agregamos versiones asíncronas de APIs que tenían una granularidad muy pequeña, como TextReader.Peek. La razón es que las API asíncronas también agregan algunos gastos generales y queríamos evitar que los desarrolladores se desvíen accidentalmente en la dirección equivocada. Esto también significa que decidimos específicamente no ofrecer versiones asíncronas para los métodos. en BinaryReader o BinaryWriter .... * –