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.
Read More

Inicio de una aplicación ASP.NET Core

Introducción

ASP.NET Core es un framework para desarrollar aplicaciones web multiplatarforma, de código abierto y se encuentra disponible en GitHub. El hecho de que sea multiplataforma significa que nuestra aplicación no puede estar acoplada a un servidor concreto. Aparte de que nuestra aplicación sea multiplataforma tendremos otros beneficios adicionales:
Read More

Método Main asíncrono disponible en C# 7.1

Punto de entrada Main

En .Net podemos crear programas con o sin un punto de entrada. Si tenemos un punto de entrada, el sistema operativo podrá cargar y ejecutar su código, y si no lo tenemos, el sistema operativo no podrá directamente ejecutar el programa, más bien será otro programa el que referencie nuestro código y sea él quien lo ejecute.
Read More

Inicialización diferida

Introducción

La inicialización o carga diferida (lazy initialization) nos permite posponer la creación de un objeto hasta su primer uso. Esto nos ayuda a aumentar el rendimiento de nuestras aplicaciones cuando tenemos objetos muy pesados que no son necesarios de forma inmediata e incluso puede que no se lleguen a usar nunca. También nos permite mejorar el inicio de un programa priorizando la carga instantánea de los objetos necesarios al inicio y posponiendo la carga de otros objetos pesados después.
Read More

Arboles de expresión y reflexión estática

Arboles de expresión

Un árbol de expresión es una expresión lambda sin compilar. Cuando utilizamos un árbol de expresión, el código de la expresión lambda se mantiene en memoria en forma de estructura de árbol binario. Se almacenan las partes de la expresión y las operaciones entre las partes por separado en una estructura de árbol. En este estructura los nodos representan operadores y las hojas representan valores. De esta forma es posible representar cualquier operación como una jerarquía. Veamos un ejemplo de árbol de expresión binario muy simple:
Read More

Interfaces fluidas

Introducción

Martin Fowler definió la técnica Interfaz fluida (Fluent Interface) como un estilo para construir interfaces (APIs) orientadas a objetos que nos permite escribir un código fácilmente leíble.

A continuación, mostraré como se implementa esta técnica con el encadenamiento de métodos (Method Chaining). Después ampliaré el post para ver esta misma técnica con métodos que aceptan como parámetros a delegados (Actions o Functions), dando una mayor flexibilidad y expresividad a esta técnica.
Read More

Composición o herencia: Ser o tener

Introducción

El diseño de una solución software basado en objetos requiere que los objetos se relacionen entre sí. Cuando una clase necesita utilizar el código de otra clase necesitamos relacionar estas dos clases. Esta relación la podemos establecer de varias formas y dos de las más importantes en POO son:
  • heredando de una clase base: el objeto adquiere todas las propiedades y comportamientos del objeto base;
  • por composición: conteniendo instancias de otros objetos que implementen esa funcionalidad.
Read More

La importancia del encapsulamiento. Parte 4. Encapsular constructores.

Encapsular constructores

Hay un principio de programación que dice: separar el uso de las clases de su creación. De la misma forma que anteriormente he mencionado que para acceder al estado de una clase se debe controlar la forma en que lo vamos a permitir por medio de los controladores de acceso, también se puede hacer extensible a su construcción.

Read More

La importancia del encapsulamiento. Parte 3. Descriptores de acceso. Controlando la forma de acceder al estado.

Descriptores de acceso. Controlando la forma de acceder al estado.

Que una clase permita leer un valor a otra clase que lo requiera no quiere decir que lo pueda modificar. Y si una clase debe poder modificarlo no significa tampoco que lo pueda hacer de forma directa, sino que quizás debería utilizar descriptores de acceso (assessors), también llamados getters and setters o propiedades en .Net.

Read More

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í:

  1. Como mecanismo de restricción del acceso a componentes de un objeto;
  2. 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.
Read More

You're up and running!

Next you can update your site name, avatar and other options using the _config.yml file in the root of your repository (shown below).

Read More