[.NET] ¿Qué son las Static Classes?


Una static class es aquella clase que se usa sin necesidad de realizar una instanciación de la misma. Se utiliza como una unidad de organización para métodos no asociados a objetos particulares y separa datos y comportamientos que son independientes de cualquier identidad del objeto.
Las clases estáticas son adecuadas cuando no tienen que almacenar información, sino sólo realizar cálculos o algún proceso que no cambie. Los datos de miembros estáticos se almacenan en una zona especial del Heap denominado High Frequency Heap.

Seguir leyendo

[.NET] Mis interfaces favoritos: IDisposable


Siguiendo con la serie de Mis interfaces favoritos, en esta entrega conoceremos a nuestro amado interfaz IDisposable.
Como ya dijimos en post anteriores, .NET usa dos zonas de memoria llamadas Heap y Stack.

  • En el Stack se almacenan los Value Types, que son básicamente los tipos básicos definidos por el Framework. Esta zona de memoria generalmente la gestiona el propio sistema operativo.
  • En el Heap se almacenan los datos reales de los Reference Types, zona de memoria que gestiona automáticamente el motor en tiempo de ejecución de .NET, el Common Language Runtime (CLR). Esta gestión de memoria automática se denomina Garbage Collection y el “problema” que tenemos es que no es posible controlar la liberación y recuperación de los objetos en el Heap.

Seguir leyendo

[C#] C# 7. Las nuevas características de nuestro lenguaje favorito.


La verdad es que el equipo de producto de C# está trabajando a un ritmo impresionante. No sólo acabamos de aterrizar en la versión 6 de C# si no que ya se está preparando la versión 7 con nuevas y jugosas mejores características.

Paso a resumir aquellas que para mí son más importantes (por ahora son todas propuestas), las cuales podéis ver en C# 7 Work List of Features #2136

Seguir leyendo

[.NET] Mis interfaces favoritos: IComparable


Este es el primer post sobre aquellos interfaces de la plataforma .NET que a mi juicio son más interesantes y que más aplicaciones pueden tener a la hora de desarrollar un proyecto.

Empezaremos con el interfaz IComparable y su versión genérica IComparable<T> cuya misión es proporcionar un método de comparación de dos objetos de un tipo particular. Como sugiere el nombre, IComparable<T> compara la instancia actual de un objeto con otro y define una interfaz con un método CompareTo() que toma como parámetro un objeto del mismo tipo y compara el objeto actual con éste. Es útil cuando sólo hay una forma lógica o forma predeterminada común de comparar los objetos de un tipo e implícitamente se implementa los operadores de comparación <, >, <= y >=.

Seguir leyendo

[EVENTO] Microsoft dotNet Spain Conference 2016


Al igual que en el año 2015 se celebró el mayor evento de .NET en España, este año tienes una cita para la última edición de este eventazo.

Estará compuesto de 8 tracks con sesiones de más de una hora para desarrollo Web, Apps, IoT, Cloud, Videogames… Además, por primera vez, habrá un track especial en que se mostrarán la arquitectura técnica de algunas soluciones implementadas con .NET en el mundo real.

 ¿Dónde y cuándo se desarrollará el evento?

El evento tendrá lugar el 24 de febrero de 2016 en los Kinepolis Madrid Ciudad de la Imagen, un sitio perfecto con muchas pantallas gigantes, asientos cómodos y espaciosos para poder disfrutar de este evento como tanto se merece.

Para más información, inscribiros o mandar vuestras propuestas de sesiones, podéis visitar el enlace dotNet Spain Conference 2016

 

[.NET] Novedades de System.Security.Cryptography en el .NET Framework 4.6


En este post veremos las novedades referentes al sistema de criptografía incluido en la versión 4.6 de la plataforma .NET Framework.

Como bien sabemos, .NET Framework nos provee de varias clases que implementan los algoritmos criptográficos más utilizados y en esta versión del Framework posee mejoras para el  soporte para Windows CNG cryptography APIs:

Seguir leyendo

[C#] Cómo implementar la (de)serialización personalizada.


La serialización es el proceso de convertir un objeto en un stream de bytes para poder ser persistido en una base de datos, en un fichero o preservarlo en memoria. El proceso inverso, convertir el stream de bytes en un objeto, se denomina deserialización.

Existen dos tipos de serialización:

  • Binary serialization: Serializa un objeto a un formato binario. Con este tipo de serialización se puede enviar un objeto al disco, a memoria, etc…
  • XML serialization: Serializa un objeto a un formato XML en el cual únicamente se tienen en cuenta las propiedades públicas. Esta forma de serializar es muy útil para compartir información a través de servicios web empleando SOAP.

En este post no me detendré en explicar cómo (de)serializar de forma básica un objeto, si no que veremos cómo se puede controlar de forma personalizada la (de)serialización de un objeto.

Seguir leyendo

[C#] Cómo hacer llamadas asíncronas usando Delegates.


Uno de los usos más comunes de los delegados son las llamadas a métodos asíncronas, esto es, se puede realizar una invocación a un método y volver al hilo principal inmediatamente mientras el delegado se ejecuta en un hilo separado. El delegado se ejecuta en paralelo al hilo llamador y cuando dicho delegado termina su trabajo, se realiza una llamada callback al llamante informando de su finalización.

Seguir leyendo

[.NET] Qué es un Delegate y su implementación en C# (y II).


En el anterior post vimos la definición de delegate, qué características tiene y vimos también las diferentes formas de instanciarlos. En el siguiente post veremos qué es un Multicast delegate y los diferentes tipos de Generic delegate.

¿Qué es un Multicast delegate?

Un Multicast delegate es un delegado el cual mantiene referencias a más de un método. Este tipo de delegado debe contener únicamente métodos que devuelvan un void, de otro modo se lanzará una excepción en tiempo de ejecución. Al invocar al delegado, se ejecutarán todos los métodos asociados en el mismo orden en el cual fueron agregados al delegado.

Para agregar métodos al delegado se emplea el operador  ‘+=’ y para eliminar métodos del delegado se emplea el operador ‘-=’. Un mismo método se puede añadir a un objeto delegado más de una vez.

Seguir leyendo