Upload
gonzalo-c
View
6.447
Download
6
Embed Size (px)
Citation preview
Desarrollo Avanzado en ASP.NET: MVC4 y Web Forms con MongoDB
Gonzalo “chalalo” Pérez C.Microsoft MVP [email protected]@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://[email protected]@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://[email protected]@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://[email protected]@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://[email protected]@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://[email protected]@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://[email protected]@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://[email protected]@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://[email protected]@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.