Implementando el patrón Repositorio y Unidad de Trabajo (Unit of Work & Repository) – ASP.NET MVC 5

En esta entrada veremos un patrón de diseño que utilizo ya en todos los proyectos en los que participo, que consiste básicamente en la creación de una capa intermedia que se encuentra entre la Data Layer (acceso a datos) y la Bussiness Layer (reglas de negocio).

El uso de repositorios llega a ser muy común, ya que permite tener bien divida la aplicación, re utilización de código y ademas hace más sencillo el uso de pruebas unitarias, más si usamos interfaces e inyección de dependencias para poder crear  mockups, fake data y ese stuff.

En una unidad de trabajo su función principal es juntar todos los repositorios que conforman nuestra capa de datos y ordenarlos de tal forma que permiten el trabajar en el mismo contexto de Entity Framework y poder hacer operaciones entre repositorios y todo en las mismas transacciones. La unidad de trabajo es utilizada por la capa de negocios, que por lo regular ahí se incluyen las reglas que nuestra aplicación tendrá. Y finalmente el controlador de MVC que es el que nos comunicará con la vista. Sin mencionar que en el front-end podemos tener arquitecturas MVW (AngularJS) o MVVM (KnockoutJS, KendoUI)… un sin fin de patrones que son tan emocionantes!
Leer más “Implementando el patrón Repositorio y Unidad de Trabajo (Unit of Work & Repository) – ASP.NET MVC 5”

Como usar REDIS desde Windows y C# [Visual Studio 2015]

Redis es un motor de base de datos NoSQL del tipo key-value. Éste tiene un sin fin de casos de uso, teniendo como principal función el proveer una instancia de caché de rápido acceso.

En esta entrada veremos algo sencillo pero útil que nos sirve de introducción a las nuevas tecnologías que cada vez son más escuchadas a la hora de trabajar o estudiar nuevas tecnologías en el día a día.

Es turno de Redis, un motor de base de datos NoSQL del tipo key-value caché con persistencia de información. Esto significa que funciona como cualquier caché muy comunes en frameworks web, funcionando como un array asociativo (por eso su descripción de ser key-value) pero manteniendo una persistencia de los datos tanto en memoria y disco duro.

También Redis es popular por ser un servidor de datos estructurados ya que permite no solo guardar un valor relacionado a una llave, sino estructuras diferentes como hashes, listas, bitmaps, hash ordenados y entre otros.

NOTA: Todas las imágenes al darle click se abrirán en una ventana aparte.

Instalando REDIS en Windows

Leer más “Como usar REDIS desde Windows y C# [Visual Studio 2015]”

Crear un API con .NET y consumirla desde Android

Bueno, en esta entrada vamos a tener dos videos en donde realizo lo que dice el título, crear un API ( o esa, un webservice REST) y consumir ese webservice desde Android/Java.

El vídeo, recomiendo que lo vean en HD y en pantalla completa, el audio no me fijé, pero no quedo del todo bien, espero y les sea de utilidad.

Crear un Webservice REST con WCF y C#

Consumir el WebService JSON desde Android

Código fuente: https://github.com/isaacOjeda/AndroidAPIConsumer

Como comprimir archivos con GZip [C#]

Que tal, ahora estoy intentando escribir mas seguido en el blog, pero para lograr esto lo estaré haciendo con post’s un tanto cortos.

Ahora vamos a ver como comprimir archivos con C#, lo haré lo mas sencillo posible, sin utilizar alguna GUI ni nada, simplemente por consola.

Crear un proyecto de consola

image

Lo nombraré FileGZipCompressor pero pues igual, llamenlo como uds. deseen

Crearemos una clase que se llame GZipHelper (si siguen mis posts, veran que me gusta hacer muchos helpers… jaja)

Clase GZipHelper.cs

En esta clase agregaremos los siguientes namespaces

image

Esta clase tendrá los métodos que comprimen y descomprimen, así que agregaremos un método que comprima para empezar:

image

En la linea 16-17 estamos verificando que el archivo realmente exista, si no existe lanzamos una excepción con una simple información “El archivo no existe”.

En la linea 19 estamos abriendo un Stream del archivo que queremos comprimir, es decir, lo estamos abriendo. en la linea 20 estamos creando un nuevo Stream que se guardará en la misma ruta que el archivo que estamos abriendo en la linea anterior, pero agregandole un “.gz”, es decir, el archivo comprimido ahí se guardará.

Creamos un arreglo de bytes que contendrá el archivo normal (sin comprimir), y este será utilizado para comprimir el archivo y escribirlo en el Stream “destinationFile”

Leer más “Como comprimir archivos con GZip [C#]”

Encriptación Asimétrica RSA en C#

Saludos!, ya tenía mucho sin escribir algo en el blog y pues la verdad es que no había tenido mucho tiempo.

Ahora quiero tratar un post corto, pero algo interesante. Lo que vamos a hacer es encriptar cualquier cosa en C# utilizando llaves públicas y privadas, o sea encriptación asimétrica.

Empezaremos creando un nuevo proyecto/solución en Visual Studio utilizando WinForms:

image

Teniendo la solución inicial, vamos la siguiente interfaz de usuario :

image

image

Crear las llaves publicas y privadas

Leer más “Encriptación Asimétrica RSA en C#”