Aspnetwebapi mongo

Post on 24-May-2015

6.448 views 6 download

Transcript of Aspnetwebapi mongo

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

Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NETchalalo@Hotmail.com@chalalo

msdnChile msdn Chile

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

¿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

¿Porqué construir Web APIs?

Cada vez más clientes que pueden consumir recursos…

¿Por que desarrollar Web APIs?

Escalar hacia la nube…

¿Por que desarrollar Web APIs?

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

Si queremos constuir una Web API

+ASP.NET MVC

WCF Web HTTPWCF REST Starter KitWCF Web API

Si queremos constuir una Web API

ASP.NET Web API

demo

Plantilla en ASP Web API en Visual Studio 2012Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://www.chalalo.clchalalo@hotmail.com@chalalo

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

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

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

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]

demo

Comenzando con ASP.NET Web APIGonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://www.chalalo.clchalalo@hotmail.com@chalalo

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.

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.

Default Web API route

routes.MapHttpRoute(

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

¿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

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!

demo MongoDB sobre Windows 8

Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://www.chalalo.clchalalo@hotmail.com@chalalo

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

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.

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

Mongo Documentusuario= {

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

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

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

demo Consultas sobre MongoDB

Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://www.chalalo.clchalalo@hotmail.com@chalalo

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/

demo ASP.NET MVC + MongoDBDemo Blog.

Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://www.chalalo.clchalalo@hotmail.com@chalalo

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

demo

ASP.NET Web API + MongoDB + jQueryImplementando CRUDGonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://www.chalalo.clchalalo@hotmail.com@chalalo

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

demo

ASP.NET WebForms + MongoDBBúsquedas de Diagnósticos..Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://www.chalalo.clchalalo@hotmail.com@chalalo

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!

¿Preguntas?

Gracias!!!

Gonzalo “chalalo” Pérez C.Microsoft MVP ASP.NEThttp://www.chalalo.clchalalo@hotmail.com@chalalo

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