Ir al contenido principal

Programación asíncrona con async/await en .Net

Introducción A partir de la versión 4.5 de .Net framework se ha simplificado de forma considerable la forma en que podemos trabajar con código asíncrono. Con los anteriores frameworks, si queríamos contar con los beneficios de una programación asíncrona nos veíamos obligados a lidiar con una gran complejidad en nuestro código. Esto nos hacía evitar su uso en lo posible a pesar de perder esta importante característica. Stephen Cleary , un MVP especializado en concurrencia define la programación asíncrona como: Una forma de concurrencia que utiliza futuros o "callbacks" para evitar hilos innecesarios. La programación moderna con async y await nos abstrae de la utilización de "callbacks" y nos permite utilizar futuros (Tasks) que se encargarán de notificar al llamante cuando el método asíncrono se complete. async y await Las palabras async y await son las palabras clave que .Net ha introducido en el lenguaje para que podamos implementar métodos asíncronos co...

La importancia del encapsulamiento. Parte 2. Un ejemplo de encapsulamiento en la vida real.

Un ejemplo de encapsulamiento en la vida real

Supongamos un taller de carpintería que fabrica muebles a medida. Por una parte tendríamos el propio taller, que sería la clase a encapsular. Por otra los clientes, que serían nuestros usuarios y representarían las clases que USAN la clase taller. Y por otra parte podríamos pensar en talleres filiales que representarían una especialización del taller matriz, es decir, clases que extienden al taller de carpintería y por lo tanto SON talleres.

El taller cuenta con funcionalidades puestas al servicio de los clientes como la elaboración de presupuestos, consulta de catálogos, selección de tipo de madera, selección de color, etc. También cuenta con funcionalidades propias del taller como cortar, lijar, pintar, barnizar, ensamblar mueble, etc.

Para la elaboración de los presupuestos el taller matriz cuenta con una tarifa de precios que sólo los talleres pueden acceder para poder elaborar los presupuestos. Esta tarifa la fija el taller matriz y ninguna filial puede modificarla. Por supuesto, esta tarifa es completamente inaccesible para los clientes: ni pueden ver los precios internos ni mucho menos modificarlos.

Los presupuestos que se sirven a los clientes se confeccionan a través de la funcionalidad establecida para tal fin. Es decir, el cliente “solicita un presupuesto” y el taller, usando los precios internos y su lógica de negocio particular, confecciona un presupuesto y se lo presenta al cliente. Según el tipo de cliente podremos incluso establecer descuentos especiales, formas de pago personalizadas, acceso a colores corporativos exclusivos de un cliente, etc.

Además, si fuéramos un cliente, no se nos ocurriría entrar en la carpintería y manipular nosotros mismos sus máquinas y herramientas. Está claro que hay funcionalidades que no son aptas al público, sino que son internas del propio taller. Para eso se diseña la interfaz. Sin embargo, una filial sí que debe tener acceso a este tipo de funcionalidades para poder fabricar muebles. La interfaz pública de la carpintería debería ser la justa y necesaria para comunicarse con sus clientes o con sus filiales.

Como vemos existen dos perspectivas distintas para la visibilidad de una clase: la visibilidad desde el exterior de la clase, y la visibilidad por herencia.

>> Ir a Parte 3. Descriptores de acceso. Controlando la forma de acceder al estado.
<< Volver a Parte 1. Introducción.

Comentarios

Entradas populares de este blog

La importancia del encapsulamiento. Parte 1. Introducción.

Introducción En programación orientada a objetos el término encapsulamiento es utilizado indistintamente para describir dos conceptos diferentes pero a la vez relacionados entre sí: Como mecanismo de restricción del acceso a componentes de un objeto; Como construcción del lenguaje para facilitar el “empaquetado” del estado y el comportamiento. En este post el significado al que se hace referencia es al primero de ellos. La visibilidad o accesibilidad es el primer paradigma que nos encontramos al empezar a escribir nuestro código. Cuando comenzamos a escribir una clase, interfaz, enumerado o estructura, lo primero que hacemos es establecer su modificador de acceso, y si no lo hacemos, se establecerá el modificador por defecto. Lo mismo ocurre cuando empezamos a escribir cada uno de sus miembros: variables de estado (campos) y métodos: lo primero de todo es escribir su modificador de acceso. A menudo me encuentro con código sin tener en cuenta este aspecto: código demasiado “ab...

Programación asíncrona con async/await en .Net

Introducción A partir de la versión 4.5 de .Net framework se ha simplificado de forma considerable la forma en que podemos trabajar con código asíncrono. Con los anteriores frameworks, si queríamos contar con los beneficios de una programación asíncrona nos veíamos obligados a lidiar con una gran complejidad en nuestro código. Esto nos hacía evitar su uso en lo posible a pesar de perder esta importante característica. Stephen Cleary , un MVP especializado en concurrencia define la programación asíncrona como: Una forma de concurrencia que utiliza futuros o "callbacks" para evitar hilos innecesarios. La programación moderna con async y await nos abstrae de la utilización de "callbacks" y nos permite utilizar futuros (Tasks) que se encargarán de notificar al llamante cuando el método asíncrono se complete. async y await Las palabras async y await son las palabras clave que .Net ha introducido en el lenguaje para que podamos implementar métodos asíncronos co...