[.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

Anuncios

[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

[OFFTOPIC] Sanidad Pública para todos (GRACIAS POR TODO)


Este post que hoy escribo no tiene relación con el mundo de la tecnología. Quiero contaros lo que me ha ocurrido este último mes y medio.

Desde finales de Julio hasta mediados de Septiembre he estado ingresado en el Hospital General Universitario Gregorio Marañón. ¿La causa? Una infección brutal por la extracción de una muela del juicio. Los cuidados y atenciones que recibí durante mi estancia en el hospital fueron increíbles, sin ellos no me hubiera recuperado tan pronto, por eso desde mi humilde blog quiero reivindicar una sanidad pública de calidad, universal y gratuita para todos. La gran profesionalidad y dedicación de nuestros profesionales sanitarios bien merecen que luchemos con ellos. DESDE EL FONDO DE MI CORAZÓN… ¡¡¡MUCHAS GRACIAS!!!


SanidadPublica

[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

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


En el siguiente post veremos la definición de un delegate y cómo se implementa en C#, qué características tienen y las diferentes maneras que existen de instanciarlos.

¿Qué es un delegate?

Un delegate es un tipo que representa referencias a métodos con una lista de parámetros determinada y un tipo de valor devuelto. Es la versión de .NET de los punteros a función de C++ pero con seguridad de tipos (type-safe), es decir, se comprueban los tipos de retorno y de los parámetros del mismo. La clase de delegado no sólo contiene una referencia a un método, también puede mantener referencias a varios métodos mientras cumplan con la firma definida.

Seguir leyendo

[MVP] Microsoft MVP 2015


MVP2015

 

Buenas a todos,
hoy he recibido una grata noticia. He sido reconocido como Microsoft MVP (Most Valuable Professional) por segundo año consecutivo. La verdad es que este reconocimiento me llena de ilusión y me da mucha energía para seguir colaborando con la comunidad técnica. Es un orgullo pertenecer a ese conjunto de personas que día a día comparten su conocimiento con todo el mundo.

Os dejo un enlace con más información sobre el Programa de Reconocimiento Microsoft MVP y a mi perfil Sergio Parra Guerra

[.NET] Qué son los Generics y su implementación en C# (y II).


En el anterior post vimos el concepto y las ventajas que tienen los Generics. Hoy veremos cómo emplear generics en clases, métodos, interfaces y delegados, y también conocer las características que tienen.

Qué es un parámetro de tipo genérico

Es un contenedor para un tipo de dato específico usado al crear una instancia de una variable generic. Por convención, los parámetros de tipo genérico vienen prefijados con la letra T y deben ser únicos en la declaración para evitar conflictos de nombres en la implementación.

Por ejemplo tenemos la siguiente declaración

public class List<T> {
   private T[] elements;
}

Como podemos observar, se puede usar el parámetro de tipo genérico (en nuestro caso T) en cualquier parte en la que se espera un tipo específico.

Así, si definimos una lista de enteros de la siguiente forma

List<int> miLista = new List<int>;

Dentro de la implementación, nuestro parámetro de tipo genérico se sustituye por el tipo específico int.

private int[] elements;

Generics

Seguir leyendo

[.NET] Qué son los Generics y su implementación en C# (I).


Desde la versión 2.0 del .NET Framework tenemos soporte para Generics. Con Generics se pueden crear clases o métodos que son independientes de su tipo contenido. En vez de escribir métodos o clases con la misma funcionalidad para diferentes tipos, se puede crear únicamente un método o una clase para ello.

Otra opción para reducir nuestro código es el uso de la clase Object. Sin embargo el problema de emplear dicha clase es que no es type-safe, es decir no se hace comprobación de tipos. Las clases genéricas hacen uso de tipos genéricos que son reemplazados por tipos específicos cuando se requiera. Esto permite la comprobación de tipos durante la compilación.

Los generics no sólo se pueden usar en clases sino también se pueden emplear en métodos, interfaces, delegados, etc.

Algunas ventajas del empleo de Generics son:

  • Rendimiento.
  • Seguridad de tipos.
  • Reutilización de código.

Seguir leyendo