domingo, 11 de agosto de 2013

Creando un mini blog con Asp.net y MongoDB

En este artículo vamos a ver como crear un mini blog utilizando asp.net conectándonos a una base de datos no sql como lo es MongoDB, que es una base de datos documental que usa archivos en formato JSON para almacenar información. para mayor detalle acerca de esta base de datos remitirse al su sitio oficial http://www.mongodb.org/

Para una introducción a las bases de datos no sql, recomiendo observar mi presentación anterior:
http://eltavodev.blogspot.com/2013/07/introduccion-las-bases-de-datos-no-sql.html

Lo primero que debemos hacer para realizar nuestro ejemplo es descargar e instalar la base de datos MongoDB, para su instalación se deben seguir las siguientes instrucciones:
http://docs.mongodb.org/manual/installation/

Una vez instalada nuestra base de datos, debemos descargar las dll que ofrece MongoDB para trabajar en la plataforma .NET, estas dll las descargamos en la siguiente url:
http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-csharp-driver/#getting-started-with-csharp-driver

Ahora creamos un proyecto web asp.net en nuestro Visual Studio, y agregamos la referencia de la dll MongoDB.Driver.dll, y en nuestra página agregamos la instrucción:

using MongoDB.Driver;
using MongoDB.Driver.Builders;



Con estas referencias ya podemos interactuar con la base de datos.

Ahora vamos a iniciar a implementar nuestro ejemplo, en el cual podremos guardar un nuevo articulo en nuestro blog y buscarlo posteriormente. Visualmente es de la siguiente forma:


En primera instancia vamos a crear un método para abrir la conexión con nuestra base de datos y especificamos en que colección vamos a guardar o consultar:

private void ConectarDB()
{
      string connectionString = "mongodb://localhost";
      MongoClient client = new MongoClient(connectionString);
      MongoServer server = client.GetServer();
      MongoDatabase database = server.GetDatabase("MiBlog");
      this.collection = database.GetCollection<Articulo>("Articulos");
}

En el fragmento de código anterior especificamos una cadena de conexión básica, con los objetos MongoClient y MongoServer obtenemos acceso al servidor de base de datos, con el objeto MongoDataBase especificamos a que base de datos nos deseamos conectar y con el método GetCollection indicamos que queremos efectuar operaciones sobre la colección Articulos, el termino colección en Mongo se puede homologar como una tabla en una base de datos relacional.

Como en nuestro ejemplo vamos a usar nuestros objetos del dominio para almacenarlos en la base de datos, y no estructuras dinámicas vamos a crear una entidad Articulo para almacenarla en nuestra colección de artículos:

public class Articulo
{
      public ObjectId Id { getset; }
 
      public string Titulo { getset; }
 
      public string Contenido { getset; }
}

Ahora en el evento click de nuestro botón guardar vamos a copiar lo siguiente:

this.ConectarDB();
 
Articulo articulo = new Articulo { Titulo = this.txtTitulo.Text, Contenido = this.txtContenido.Text };
this.collection.Insert(articulo);

En el fragmento de código anterior, en primer lugar nos conectamos a nuestra base de datos, posteriormente creamos un nuevo objeto artículo con los datos digitados por el usuario y por ultimo lo insertamos en la base de datos.

Para finalizar nuestro ejemplo vamos a ver como recuperar un artículo de nuestra base de datos, donde el titulo contenga las palabras digitadas por el usuario en el cuadro de texto de búsqueda, para ello copiamos lo siguiente en el evento click del botón Buscar:

this.ConectarDB();
var query = Query<Articulo>.Matches(c => c.Titulo, this.txtBusqueda.Text);
Articulo articulo = collection.FindOne(query);
 
this.txtTitulo.Text = articulo.Titulo;
this.txtContenido.Text = articulo.Contenido;

Con el fragmento de código anterior, en primer lugar nos conectamos a nuestra base de datos, luego con una expresión lambda especificamos que se busquen los artículos cuyo titulo contenga las palabras digitadas en el cuadro de texto de búsqueda, y posteriormente decimos que nos traiga un solo artículo con la extensión FinOne, y por ultimo mostramos el artículo al usuario.

Con esto damos por terminado nuestro ejemplo de como crear un blog básico con Asp.net y MongoDB, espero los sea de gran utilidad, a continuación el link de descarga del código de ejemplo:

https://www.dropbox.com/s/le3xw5opf7ry8cp/Ejemplo%20MongoDB.rar

Saludos y buena suerte!!!