36
Desarrollo Avanzado en ASP.NET: MVC4 y Web Forms con MongoDB Gonzalo “chalalo” Pérez C. Microsoft MVP ASP.NET [email protected] @chalalo msdn Chile msdn Chile

Aspnetwebapi mongo

Embed Size (px)

Citation preview

Page 1: Aspnetwebapi mongo

Desarrollo Avanzado en ASP.NET: MVC4 y Web Forms con MongoDB

Gonzalo “chalalo” Pérez C.Microsoft MVP [email protected]@chalalo

msdnChile msdn Chile

Page 2: Aspnetwebapi mongo

Agenda

Novedades ASP.NET MVC 4 -ASP.NET Web API¿Que es MongoDB?

Instalando MongoDB sobre WindowsOrientación a DocumentosDocumentos y Colecciones

ASP.NET y MongoDBUso con ASP.NET MVCUso con ASP.NET Web APITrabajando con ASP.NET WebForms

Creación de índices

Page 3: Aspnetwebapi mongo

¿Que es una Web API?

Un servicio HTTP

Diseñado para un amplio espectro de clientes

Usa HTTP como protocolo de aplicación, no es un protocolo de transporte

Page 4: Aspnetwebapi mongo

¿Porqué construir Web APIs?

Page 5: Aspnetwebapi mongo

Cada vez más clientes que pueden consumir recursos…

¿Por que desarrollar Web APIs?

Page 6: Aspnetwebapi mongo

Escalar hacia la nube…

¿Por que desarrollar Web APIs?

Page 7: Aspnetwebapi mongo

Requerimientos de Web API framework

Necesita un modelo de programación basado y enfocado en HTTP.

Facilidad para mapear recursos a Uris e implementar una interfaz uniforme

Soporte para formatos enriquecidos y negociación de contenido sobre HTTP.

Liviano, testeable y escalable

Page 8: Aspnetwebapi mongo

Si queremos constuir una Web API

+ASP.NET MVC

WCF Web HTTPWCF REST Starter KitWCF Web API

Page 9: Aspnetwebapi mongo

Si queremos constuir una Web API

ASP.NET Web API

Page 10: Aspnetwebapi mongo

demo

Plantilla en ASP Web API en Visual Studio 2012Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://[email protected]@chalalo

Page 11: Aspnetwebapi mongo

Características ASP.NET Web API

De ASP.NET MVC

ASP.NET RoutingModel bindingValidationFiltersLink generationTestabilityIoC integration (Inversión de Control)Plantillas de VSScaffolding

De WCF Web API

Moderno modelo de programación HTTPHttpClientSoporte para tareas asincronasFormato y negociación de contenidoServer-side query compositionCreate custom help pagesSelf-hostTracing

Page 12: Aspnetwebapi mongo

http://www.asp.net/web-api

Page 13: Aspnetwebapi mongo

Y ahora OpenSource!!http://aspnetwebstack.codeplex.com

Page 14: Aspnetwebapi mongo

Para implementar una Web API…Derivar desde ApiController … a diferencia que con MVC

Implementar nuestras acciones.Mapear las acciones hacia los metodos HTTP.

Crear nombre de método con prefijo del metodo HTTP deseado - PostComentario

Utilizar verbos [HttpGet/Post/Put/Delete]

Page 15: Aspnetwebapi mongo

demo

Comenzando con ASP.NET Web APIGonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://[email protected]@chalalo

Page 16: Aspnetwebapi mongo

Routing

Mapear una URI hacia nuestros ApiControllersEj. api/{controller}/{id}

{controller} + “Controller” = ApiController

Se pueden adaptar al uso de valores por defecto y restricciones de rutas.

Page 17: Aspnetwebapi mongo

Validaciones

La validación se ejecutará en los datos por cada solicitudLos errores de validación se acumulan en el ModelStateChequear ModelState.IsValueUtilizar DataAnnotations o una lógica de validación personalizada.

Page 18: Aspnetwebapi mongo

Default Web API route

routes.MapHttpRoute(

name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional });

Page 19: Aspnetwebapi mongo

¿Qué es MongoDB?El nombre viene del término inglés “humongous” (colosal)MongoDB base de datos NoSQL escalable, high-performance, OpenSource escrito en C++Soporte para plataformas de 32/64 Bit Windows, Linux, Mac OS-X,FreeBSB, SolarisDestaca su velocidad y su enriquecido, pero sencillo sistemas de consultas

Page 20: Aspnetwebapi mongo

Instalando MongoDB en WindowsDescarga los binarios desde mongodb.orgExtraer en Program Files (o en cualquier lado)Crear la carpeta c:\data\dbEjecutar mongod.exe desde la línea de comandos( Revisar en el website opciones de inicio)Ejecutar mongo.exe para verificar si el servicio está corriendo.Cuidado con en el reinicio automático del servicio!

Page 21: Aspnetwebapi mongo

demo MongoDB sobre Windows 8

Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://[email protected]@chalalo

Page 22: Aspnetwebapi mongo

Base de datos Orientada a DocumentosRegistros corresponden a Documentos JSON

(Actualmente BSON)Almacenados en coleccionesNo hay esquema predefinido

Documentos en la misma colección no necesitan la misma cantidad de campos

Operadores para tareas CRUD y búsqueda.Permite registrar índices por campos

Page 23: Aspnetwebapi mongo

Muy sencilloSchemaless

No hay que configurar comunas ni tiposSimplemente ponga sus datos ahí

NoSQLNo proporcionan garantías ACIDLenguaje de consulta & respuesta de Mongo es básicamente JSONDriver Mongo nos permite su utilización con C# o VB.NET sin escribir consultas SQLPosibilidad de manipulación mediante un Shell con Javascript.

Page 24: Aspnetwebapi mongo

Documentos y ColeccionesLos documentos corresponden a Registros

Al igual que objetos en la POO, o filas en RDBMSLas colecciones son grupos de documentos

Usualmente representan un clase top-level en nuestras aplicaciónPueden ser un conjunto heterogéneo de documentos

No hay claves foráneas, entonces como hacemos referencia a otros objetos?

Solo insertamos como objetos hijos (embebidas)O bien manualmente utilizar una clave de referencia

Page 25: Aspnetwebapi mongo

Mongo Documentusuario= {

nombre: “chalalo”, trabajo: “Domador de arañas pollito”, Pais: “Chile”,

direccion: { calle: “Riquelme 246”, ciudad: “Concepcion” } }

Page 26: Aspnetwebapi mongo

ConsultasLas consultas retornan DocumentosExpresiones de consulta sobre objetos indican el patrón a buscar:

db.coleccion.find({apellido:’Perez’})

Podemos obtener colecciones con consultas avanzadas:db.coleccion.find({edad:{$gte:33}})db.coleccion.find({edad:{$in:[23,33]}})

Consultas a Objetos Embebidosdb.collecion.find( {direccion: {calle: ‘helm street', ciudad: ‘Inferno'}} )db.collecion.find( {direccion.calle: ‘helm street'} )

Revisar www.mongodb.org

Page 27: Aspnetwebapi mongo

demo Consultas sobre MongoDB

Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://[email protected]@chalalo

Page 28: Aspnetwebapi mongo

Mongo y ASP.NETMongoDB.Bson que contiene las clases que representan todos los tipos Bson básicos, las clases derivadas contienen las clases y métodos para la manipulación de los documentos.

Disponibilidad de Driver https://github.com/mongodb/mongo-csharp-driver

Documentación de la API http://api.mongodb.org/csharp/current/

Page 29: Aspnetwebapi mongo

demo ASP.NET MVC + MongoDBDemo Blog.

Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://[email protected]@chalalo

Page 30: Aspnetwebapi mongo

Volviendo a ASP.NET Web API…

Provee un escenario ideal para escenarios de alta performance junto a MongoDBFácil manipulación de datos.

MongoDB Expone JSONASP.NET Web API puede negociar contenido con el cliente para exponer JSONSumamos jQuery a la ecuación

Page 31: Aspnetwebapi mongo

demo

ASP.NET Web API + MongoDB + jQueryImplementando CRUDGonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://[email protected]@chalalo

Page 32: Aspnetwebapi mongo

MongoDB Índices - BúsquedasMongo soporta índices de mejorar enormemente el rendimiento de consultasNo hay necesidad de crear de antemanoCrear índices fácilmente en su aplicación con "ensure_index“Se recomienda el uso de keywords para la búsqueda de palabras claves

Page 33: Aspnetwebapi mongo

demo

ASP.NET WebForms + MongoDBBúsquedas de Diagnósticos..Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://[email protected]@chalalo

Page 34: Aspnetwebapi mongo

Resumen

ASP.NET Web API en MVC 4 hace muy fácil la construcción de servicios HTTP que pueden ser consumidos por multiples clientes

ASP.NET & MongoDB, escenarios para alta disponibilidad

ASP.NET Web Forms No DEAD!!

Totalmente OpenSource , sigue el proyecto en CodePlex!

Page 35: Aspnetwebapi mongo

¿Preguntas?

Gracias!!!

Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://[email protected]@chalalo

Page 36: Aspnetwebapi mongo

© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be

a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS

PRESENTATION.