SlideShare uma empresa Scribd logo
1 de 58
ASP.NET MVC


Rodolfo Finochietti
MVP ASP.NET/IIS
Lagash Systems
Agenda
• ASP.NET MVC
  – Introducción
  – Modelos
  – Vistas
  – Razor
• Nuevas características de ASP.NET MVC 3
• AJAX y jQuery
• Aplicaciones Real Time con SignalR
ASP.NET MVC




3
Por que ASP.NET MVC
• ¿Por qué Microsoft lanza ASP.NET MVC?
• ¿Web Form y el modelo de programación por
  eventos no era la solución al desarrollo Web?
• ¿Necesito aprender otro View Engine?
• ¿Por qué necesitamos mas herramientas de
  desarrollo Web?
ASP.NET MVC
• Un framework para Web Development
• Más control sobre el HTML
  – Más Web-Frendly
• Más testeable
• No es una nueva versión de ASP.NET Web
  Forms
• Esta construido sobre en ASP.NET
Arquitectura de ASP.NET
ASP.NET APIs de Servicios para Aplicaciones


       Membership            Role Manager      Personalization



     Site Navigation       Database Caching   Health Monitoring
Arquitectura de ASP.NET



ASP.NET “Page Framework”

  Master Pages         Themes/Skins     Localization        Client Scripting



ASP.NET APIs de Servicios para Aplicaciones


       Membership              Role Manager             Personalization



     Site Navigation         Database Caching          Health Monitoring
Arquitectura de ASP.NET



ASP.NET MVC

  Model Binders        View Engines    Ajax Support        Mobile Render



ASP.NET APIs de Servicios para Aplicaciones


       Membership              Role Manager            Personalization



     Site Navigation         Database Caching         Health Monitoring
Modelo-Vista-Controlador

                                                     Model




                                   View                      Controller



Xerox PARC 1978
http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html
¿Que ofrece?
• SoC (Separation of Concerns)
   – TDD por default
   – Mantenibilidad
• Url y HTML mas limpio
   – SEO y REST friendly
     • /Usuarios/Buscar/Rodolfo
  – CSS Friendly
     • <html> <div> <label> <span>
• Modelo de programación mas performante
  – No hay ViewState
  – No hay modelo de eventos
¿Como trabaja?
                                                 Se determina la
      Navego a http://.../Productos/Listar
                                                      ruta




  Se ejecuta la              Un método Listar     El controller
   logica del                del controller es    Productos es
   controller                    invocado            creado




                              Se dibujan Urls
Se dibuja la vista
                              que apuntan a
  pasándole la
                             otras acciones de
   ViewData
                             otros controllers
Rutas

www.sitio.com/products/report/1/06/2008
URLs amigables
• Legibles
   – www.sitio.com/products.aspx?module=reports&productId
     =1&&month=6year=2008 
   – www.sitio.com/products/report/1/6/2008 


• Predecibles
   – http://es.wikipedia.org/wiki/Lagash
Controlador – Uso Básico
• Escenarios, Objetivos y Diseño
   – Las URLs indican “acciones” del Controlador, no páginas
   – Las acciones deben declarase en el Controlador.
   – El controlador ejecuta lógica y elige la vista.
 public ActionResult ShowPost(int id) {
      Post p = PostRepository.GetPostById(id);
      if (p != null) {
          View(p);
      } else {
          View("nosuchpost", id);
      }
 }
Vistas – Uso Básico
• Escenarios, Objetivos y Diseño:
  – Generan HTML u otro tipo de contenido.
     • Helpers pre-definidos.
  – Pueden ser .ASPX, .ASCX, .MASTER, etc.
  – Pueden reemplazarse con otras tecnologías:
     • Template engines (NVelocity, Spark, …).
     • Formatos de salida (images, RSS, JSON, …).
     • Pueden definirse vistas Mock para testing.
  – El controlador ofrece datos a la Vista
     • Datos Loosely typed o Strongly Typed .
Ejemplo 1

ASP.NET MVC
Razor




17
¿Un View… que?
• Encargado de Renderizar vistas
  – HTML
  – Javascript


• Alternativa a “<% %>”
Objetivos de Razor
•   Compacto
•   Sencillo
•   “Amigo del HTML”
•   ¡Ya conocemos el lenguaje!
Ejemplo 2

  Razor
Nuevas carácterísticas de ASP.NET 3




21
Global Filters
• Antes




• Ahora
Dynamic ViewModel
• Antes




• Ahora
Nuevos Action Result Types
Nuevos Action Result Types
Mas soporte para JSON
Mejoras en las validaciones
jQuery y AJAX




28
jQuery


Plugins     Selectors




    Animations
jQuery Selectors

 $(“#userName”)

 $(“input:text”)

 $(“.required”)

 $(“#grid tr:even”)
jQuery Animations
  $(…).show()       $(…).hide()


$(…).slideDown()   $(…).slideUp()


 $(…).fadeIn()     $(…).fadeOut()
jQuery Plugins
http://plugins.jquery.com/

  •Ajax (182)                    •Integration (88)          •Tables (64)

  •Animation and Effects (253)   •JavaScript (130)          •User Interface (571)

  •Browser Tweaks (67)           •jQuery Extensions (198)   •Utilities (291)

  •Data (122)                    •Layout (162)              •Widgets (211)

  •DOM (123)                     •Media (108)               •Windows and Overlays (89)

  •Drag-and-Drop (30)            •Menus (80)

  •Events (119)                  •Metaplugin (24)

  •Forms (317)                   •Navigation (131)
Ejemplo 3

jQuery, AJAX y Edicion de Entidades
Aplicaciones Web Real Time Con
                 SignalR




34
¡Los usuarios quieren la ultima
           informacion AHORA!
Twitter – live searches/updates
Stock streamers
Auctions
Live scores
Real-time notifications
Interactive games
Collaborative apps
Live user analytics
…
                                        6
HTTP no esta preparado…
Nunca se diseño para comunicaciones real-time
La web es request-response
La web es stateless



        Para solucionar esto se invento
              HTML5 WebSockets
Forever Frame
                                HTTP/1.1 200 OK
                                Content-Type: text/plain
                                Transfer-Encoding: chunked

                               <script>eval("... ")</script>0
                               <script>eval("... ")</script>0



– El server le dice al cliente que el response es chuncked
– El cliente mantiene la coneccion abierta hasta que el
  servidor la cierra
– El servidor envia los datos al cliente seguido de un 0
– Este proceso consume threads del servidor
Periodic polling




Polling interval
 – Cada cierto tiempo el cliente pregunta si hay nuevos datos
   al servidor utilizando Ajax
 – El tiempo de latencia minimo esta determiando por el
   “polling interval”
 – Desperdicia ancho de banda y latencia 
Long polling




– El cliente pregunta pero el servidor no responde hasta que
  tenga datos nuevos para enviar
– El cliente pregunta de nuevo cuando los datos son recibidos
  o despues de que hay una time out en al coneccion
– Consume threads y conexiones del servidor 
HTML5 Websockets
Extension de HTTP
Provee sockets sobre HTTP
Full-duplex
Funciona a travez de proxies

Todavia es un draft…
No todos los proxy servers lo soportan
No todos los webserver lo soportan
No todos los browsers lo soportan
¡Son sockets!
En definitiva:
            ¡Muchas opciones!
•   Forever Frame
•   Periodic polling
•   Long polling
•   HTML5 WebSockets
SignalR
¡3 en uno!
• Conexiones “persistentes” entre cliente y
  servidor sobre el mejor transporte
• Abstrae el modelo de poolling subyasente
• Provee un solo modelo de programacion
SignalR
• Creado por David Fowler y Damian Edwards
  (ASP.NET team)
• No es un proyecto oficial de Microsoft
• Proyecto OSS hosteado en Github, licencia MIT
  – http://github.com/signalr/signalr

• Instalacion muy simple
• Utiliza: C#, .NET 4+ y jQuery
¿Como lo instalo?
                 *


¡NuGet!
Ejemplo 4

Hello SignalR
¿Que paso?
• El servidor hizo broadcasting del mensaje cada
  pocos segundos
• El cliente recibio los mensajes
• ¡El codigo para todo esto es facil!
• No hay polling (por lo menos no en el codigo)
Connections y Hubs
Dos modelos de conexion
PersistentConnection Hubs
Comunica 1..N clientes             Comunica 1..N clientes
                                   Abstraccion sobre
Es un IHttpHandler                 PersistentConnection
Requiere que se defina una ruta    Las rutas se mapean
                                   automaticamente (/signalr/hubs)
Limitado a enviar mensajes         Se pueden enviar mensajes y llamar a
El usuario define el “protocolo”   metodos
                                   SignalR define el protocolo
Ejemplo 5

Knockout.js & SignalR
Ejemplo 6

  Hubs
Hubs
• Los metodos de un Hub se pueden llamar
  desde el cliente
• Los metodos de un cliente se pueden llamar
  desde el servidor
  – Se pueden llamar cliente individuales
  – Se pueden llamar todos clientes
  – Se pueden llamar grupos de clientes
Clients
Clientes
En el servidor
Se puede hostear en cualquier aplicacion ASP.NET
(SignalR.Server)

En el cliente
JavaScript (SignalR.JS)

Pero hay mas…
Clientes
En el servidor
“SelfHost” (https://github.com/SignalR/SignalR/tree/master/SignalR.SelfHost)
Windows Azure

On the client side
JavaScript (SignalR.JS)
Cualquier aplicacion .NET (SignalR.Client)
Cualquier dispositivo WP7 (SignalR.Client.WP7)
iOS
Android
Resumen
• ¡3 en uno!
  – Conexiones “persistentes” entre cliente y
    servidor sobre el mejor transporte
  – Abtrae el modelo de poolling subyasente
  – Provee un solo modelo de programacion
• Connections & Hubs
• Conect varios clientes
Ejemplo 7

Expense Application
Contacto
• Mail:
  – rodolfof@lagash.com
• Blogs:
  – http://shockbyte.net
• Twitter:
  – @rodolfof
¡Gracias!

Mais conteúdo relacionado

Mais procurados

Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010Desarrollos NEA
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NETwilliamsm
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7Luis Ruiz Pavón
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Eduard Tomàs
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web modernoSebastián Rocco
 
Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVCSebastián Rocco
 
Security in MVC Core by Hugo Biarge
Security in MVC Core by Hugo BiargeSecurity in MVC Core by Hugo Biarge
Security in MVC Core by Hugo BiargePlain Concepts
 
Introducción a Zend Framework
Introducción a Zend FrameworkIntroducción a Zend Framework
Introducción a Zend FrameworkIrontec
 
Web matrix session1
Web matrix session1Web matrix session1
Web matrix session1Gonzalo C.
 
Webinar: Introducción a VUE.js
Webinar: Introducción a VUE.jsWebinar: Introducción a VUE.js
Webinar: Introducción a VUE.jsArsys
 
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_unoWeb matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_unoGonzalo C.
 

Mais procurados (20)

Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
 
ASP.NET 5 & MVC 6 (RC1)
ASP.NET 5 & MVC 6 (RC1)ASP.NET 5 & MVC 6 (RC1)
ASP.NET 5 & MVC 6 (RC1)
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
Mvc4 Intro
Mvc4 IntroMvc4 Intro
Mvc4 Intro
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web moderno
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVC
 
Mvc
MvcMvc
Mvc
 
Asp.net
Asp.netAsp.net
Asp.net
 
Security in MVC Core by Hugo Biarge
Security in MVC Core by Hugo BiargeSecurity in MVC Core by Hugo Biarge
Security in MVC Core by Hugo Biarge
 
ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1
 
Azure API Management
Azure API ManagementAzure API Management
Azure API Management
 
Introducción a Zend Framework
Introducción a Zend FrameworkIntroducción a Zend Framework
Introducción a Zend Framework
 
Web matrix session1
Web matrix session1Web matrix session1
Web matrix session1
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
Webinar: Introducción a VUE.js
Webinar: Introducción a VUE.jsWebinar: Introducción a VUE.js
Webinar: Introducción a VUE.js
 
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_unoWeb matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 

Semelhante a ASP MVC SignalR

5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptxSibilinoAndante
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBJavier Condori Flores
 
Asp .net
Asp .netAsp .net
Asp .netmellcv
 
Azure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realAzure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realSoftware Guru
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbasPeter Concha
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbasAvanet
 
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.Agustín Sabater
 
Trabajo fin de master Dirección TI
Trabajo fin de master Dirección TITrabajo fin de master Dirección TI
Trabajo fin de master Dirección TIManolo Crespo
 
Programación web
Programación webProgramación web
Programación weberic291285
 
Aplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScriptAplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScriptLuis Guerrero
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos Luis Fernando Aguas Bucheli
 
Seminario html5
Seminario html5Seminario html5
Seminario html5UDECI
 
Commit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningCommit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningRafa Hidalgo
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelDomingo Suarez Torres
 

Semelhante a ASP MVC SignalR (20)

5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 
Aplicaciones Web
Aplicaciones WebAplicaciones Web
Aplicaciones Web
 
Backbeam
BackbeamBackbeam
Backbeam
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEB
 
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
 
5-Unidad 2: Diseños de Vista-2.2 Para Web
5-Unidad 2: Diseños de Vista-2.2 Para Web5-Unidad 2: Diseños de Vista-2.2 Para Web
5-Unidad 2: Diseños de Vista-2.2 Para Web
 
Asp .net
Asp .netAsp .net
Asp .net
 
Azure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realAzure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo real
 
Introducción a SignalR
Introducción a SignalRIntroducción a SignalR
Introducción a SignalR
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbas
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbas
 
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
 
Trabajo fin de master Dirección TI
Trabajo fin de master Dirección TITrabajo fin de master Dirección TI
Trabajo fin de master Dirección TI
 
Programación web
Programación webProgramación web
Programación web
 
Aplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScriptAplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScript
 
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScriptFull-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
 
Seminario html5
Seminario html5Seminario html5
Seminario html5
 
Commit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningCommit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine Learning
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
 

Mais de Rodolfo Finochietti

Introduction to Rust language programming
Introduction to Rust language programmingIntroduction to Rust language programming
Introduction to Rust language programmingRodolfo Finochietti
 
Despliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
Despliegue y Monitoreo de aplicaciones ASP.NET Core en LinuxDespliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
Despliegue y Monitoreo de aplicaciones ASP.NET Core en LinuxRodolfo Finochietti
 
Aplicaciones Real-Time con SignalR
Aplicaciones Real-Time con SignalRAplicaciones Real-Time con SignalR
Aplicaciones Real-Time con SignalRRodolfo Finochietti
 
Microsoft 2014 Dev Plataform - Roslyn -& ASP.NET vNext
Microsoft 2014 Dev Plataform -  Roslyn -& ASP.NET vNextMicrosoft 2014 Dev Plataform -  Roslyn -& ASP.NET vNext
Microsoft 2014 Dev Plataform - Roslyn -& ASP.NET vNextRodolfo Finochietti
 
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Rodolfo Finochietti
 
Proyectos de Base de Datos con Visual Studio 2013
Proyectos de Base de Datos con Visual Studio 2013Proyectos de Base de Datos con Visual Studio 2013
Proyectos de Base de Datos con Visual Studio 2013Rodolfo Finochietti
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013Rodolfo Finochietti
 
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladoresQue hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladoresRodolfo Finochietti
 

Mais de Rodolfo Finochietti (20)

Introduction to Rust language programming
Introduction to Rust language programmingIntroduction to Rust language programming
Introduction to Rust language programming
 
C#: Past, Present and Future
C#: Past, Present and FutureC#: Past, Present and Future
C#: Past, Present and Future
 
Go
GoGo
Go
 
Re-bot-lution
Re-bot-lutionRe-bot-lution
Re-bot-lution
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
Despliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
Despliegue y Monitoreo de aplicaciones ASP.NET Core en LinuxDespliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
Despliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
 
Azure IoT Hub
Azure IoT HubAzure IoT Hub
Azure IoT Hub
 
Introduccion a Node.js
Introduccion a Node.jsIntroduccion a Node.js
Introduccion a Node.js
 
IoT y Dispositivos
IoT y DispositivosIoT y Dispositivos
IoT y Dispositivos
 
.NET Multiplataforma
.NET Multiplataforma .NET Multiplataforma
.NET Multiplataforma
 
Windows 10 Developer Readiness
Windows 10 Developer ReadinessWindows 10 Developer Readiness
Windows 10 Developer Readiness
 
Aplicaciones Real-Time con SignalR
Aplicaciones Real-Time con SignalRAplicaciones Real-Time con SignalR
Aplicaciones Real-Time con SignalR
 
ASP.NET 5
ASP.NET 5ASP.NET 5
ASP.NET 5
 
Roslyn: el futuro de C#
Roslyn: el futuro de C#Roslyn: el futuro de C#
Roslyn: el futuro de C#
 
Microsoft 2014 Dev Plataform - Roslyn -& ASP.NET vNext
Microsoft 2014 Dev Plataform -  Roslyn -& ASP.NET vNextMicrosoft 2014 Dev Plataform -  Roslyn -& ASP.NET vNext
Microsoft 2014 Dev Plataform - Roslyn -& ASP.NET vNext
 
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
 
Proyectos de Base de Datos con Visual Studio 2013
Proyectos de Base de Datos con Visual Studio 2013Proyectos de Base de Datos con Visual Studio 2013
Proyectos de Base de Datos con Visual Studio 2013
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013
 
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladoresQue hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
 

Último

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 

Último (15)

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 

ASP MVC SignalR

  • 1. ASP.NET MVC Rodolfo Finochietti MVP ASP.NET/IIS Lagash Systems
  • 2. Agenda • ASP.NET MVC – Introducción – Modelos – Vistas – Razor • Nuevas características de ASP.NET MVC 3 • AJAX y jQuery • Aplicaciones Real Time con SignalR
  • 4. Por que ASP.NET MVC • ¿Por qué Microsoft lanza ASP.NET MVC? • ¿Web Form y el modelo de programación por eventos no era la solución al desarrollo Web? • ¿Necesito aprender otro View Engine? • ¿Por qué necesitamos mas herramientas de desarrollo Web?
  • 5. ASP.NET MVC • Un framework para Web Development • Más control sobre el HTML – Más Web-Frendly • Más testeable • No es una nueva versión de ASP.NET Web Forms • Esta construido sobre en ASP.NET
  • 6. Arquitectura de ASP.NET ASP.NET APIs de Servicios para Aplicaciones Membership Role Manager Personalization Site Navigation Database Caching Health Monitoring
  • 7. Arquitectura de ASP.NET ASP.NET “Page Framework” Master Pages Themes/Skins Localization Client Scripting ASP.NET APIs de Servicios para Aplicaciones Membership Role Manager Personalization Site Navigation Database Caching Health Monitoring
  • 8. Arquitectura de ASP.NET ASP.NET MVC Model Binders View Engines Ajax Support Mobile Render ASP.NET APIs de Servicios para Aplicaciones Membership Role Manager Personalization Site Navigation Database Caching Health Monitoring
  • 9. Modelo-Vista-Controlador Model View Controller Xerox PARC 1978 http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html
  • 10. ¿Que ofrece? • SoC (Separation of Concerns) – TDD por default – Mantenibilidad • Url y HTML mas limpio – SEO y REST friendly • /Usuarios/Buscar/Rodolfo – CSS Friendly • <html> <div> <label> <span> • Modelo de programación mas performante – No hay ViewState – No hay modelo de eventos
  • 11. ¿Como trabaja? Se determina la Navego a http://.../Productos/Listar ruta Se ejecuta la Un método Listar El controller logica del del controller es Productos es controller invocado creado Se dibujan Urls Se dibuja la vista que apuntan a pasándole la otras acciones de ViewData otros controllers
  • 13. URLs amigables • Legibles – www.sitio.com/products.aspx?module=reports&productId =1&&month=6year=2008  – www.sitio.com/products/report/1/6/2008  • Predecibles – http://es.wikipedia.org/wiki/Lagash
  • 14. Controlador – Uso Básico • Escenarios, Objetivos y Diseño – Las URLs indican “acciones” del Controlador, no páginas – Las acciones deben declarase en el Controlador. – El controlador ejecuta lógica y elige la vista. public ActionResult ShowPost(int id) { Post p = PostRepository.GetPostById(id); if (p != null) { View(p); } else { View("nosuchpost", id); } }
  • 15. Vistas – Uso Básico • Escenarios, Objetivos y Diseño: – Generan HTML u otro tipo de contenido. • Helpers pre-definidos. – Pueden ser .ASPX, .ASCX, .MASTER, etc. – Pueden reemplazarse con otras tecnologías: • Template engines (NVelocity, Spark, …). • Formatos de salida (images, RSS, JSON, …). • Pueden definirse vistas Mock para testing. – El controlador ofrece datos a la Vista • Datos Loosely typed o Strongly Typed .
  • 18. ¿Un View… que? • Encargado de Renderizar vistas – HTML – Javascript • Alternativa a “<% %>”
  • 19. Objetivos de Razor • Compacto • Sencillo • “Amigo del HTML” • ¡Ya conocemos el lenguaje!
  • 20. Ejemplo 2 Razor
  • 27. Mejoras en las validaciones
  • 29. jQuery Plugins Selectors Animations
  • 30. jQuery Selectors $(“#userName”) $(“input:text”) $(“.required”) $(“#grid tr:even”)
  • 31. jQuery Animations $(…).show() $(…).hide() $(…).slideDown() $(…).slideUp() $(…).fadeIn() $(…).fadeOut()
  • 32. jQuery Plugins http://plugins.jquery.com/ •Ajax (182) •Integration (88) •Tables (64) •Animation and Effects (253) •JavaScript (130) •User Interface (571) •Browser Tweaks (67) •jQuery Extensions (198) •Utilities (291) •Data (122) •Layout (162) •Widgets (211) •DOM (123) •Media (108) •Windows and Overlays (89) •Drag-and-Drop (30) •Menus (80) •Events (119) •Metaplugin (24) •Forms (317) •Navigation (131)
  • 33. Ejemplo 3 jQuery, AJAX y Edicion de Entidades
  • 34. Aplicaciones Web Real Time Con SignalR 34
  • 35. ¡Los usuarios quieren la ultima informacion AHORA! Twitter – live searches/updates Stock streamers Auctions Live scores Real-time notifications Interactive games Collaborative apps Live user analytics … 6
  • 36. HTTP no esta preparado… Nunca se diseño para comunicaciones real-time La web es request-response La web es stateless Para solucionar esto se invento HTML5 WebSockets
  • 37. Forever Frame HTTP/1.1 200 OK Content-Type: text/plain Transfer-Encoding: chunked <script>eval("... ")</script>0 <script>eval("... ")</script>0 – El server le dice al cliente que el response es chuncked – El cliente mantiene la coneccion abierta hasta que el servidor la cierra – El servidor envia los datos al cliente seguido de un 0 – Este proceso consume threads del servidor
  • 38. Periodic polling Polling interval – Cada cierto tiempo el cliente pregunta si hay nuevos datos al servidor utilizando Ajax – El tiempo de latencia minimo esta determiando por el “polling interval” – Desperdicia ancho de banda y latencia 
  • 39. Long polling – El cliente pregunta pero el servidor no responde hasta que tenga datos nuevos para enviar – El cliente pregunta de nuevo cuando los datos son recibidos o despues de que hay una time out en al coneccion – Consume threads y conexiones del servidor 
  • 40. HTML5 Websockets Extension de HTTP Provee sockets sobre HTTP Full-duplex Funciona a travez de proxies Todavia es un draft… No todos los proxy servers lo soportan No todos los webserver lo soportan No todos los browsers lo soportan ¡Son sockets!
  • 41. En definitiva: ¡Muchas opciones! • Forever Frame • Periodic polling • Long polling • HTML5 WebSockets
  • 42. SignalR ¡3 en uno! • Conexiones “persistentes” entre cliente y servidor sobre el mejor transporte • Abstrae el modelo de poolling subyasente • Provee un solo modelo de programacion
  • 43. SignalR • Creado por David Fowler y Damian Edwards (ASP.NET team) • No es un proyecto oficial de Microsoft • Proyecto OSS hosteado en Github, licencia MIT – http://github.com/signalr/signalr • Instalacion muy simple • Utiliza: C#, .NET 4+ y jQuery
  • 44. ¿Como lo instalo? * ¡NuGet!
  • 46. ¿Que paso? • El servidor hizo broadcasting del mensaje cada pocos segundos • El cliente recibio los mensajes • ¡El codigo para todo esto es facil! • No hay polling (por lo menos no en el codigo)
  • 48. Dos modelos de conexion PersistentConnection Hubs Comunica 1..N clientes Comunica 1..N clientes Abstraccion sobre Es un IHttpHandler PersistentConnection Requiere que se defina una ruta Las rutas se mapean automaticamente (/signalr/hubs) Limitado a enviar mensajes Se pueden enviar mensajes y llamar a El usuario define el “protocolo” metodos SignalR define el protocolo
  • 50. Ejemplo 6 Hubs
  • 51. Hubs • Los metodos de un Hub se pueden llamar desde el cliente • Los metodos de un cliente se pueden llamar desde el servidor – Se pueden llamar cliente individuales – Se pueden llamar todos clientes – Se pueden llamar grupos de clientes
  • 53. Clientes En el servidor Se puede hostear en cualquier aplicacion ASP.NET (SignalR.Server) En el cliente JavaScript (SignalR.JS) Pero hay mas…
  • 54. Clientes En el servidor “SelfHost” (https://github.com/SignalR/SignalR/tree/master/SignalR.SelfHost) Windows Azure On the client side JavaScript (SignalR.JS) Cualquier aplicacion .NET (SignalR.Client) Cualquier dispositivo WP7 (SignalR.Client.WP7) iOS Android
  • 55. Resumen • ¡3 en uno! – Conexiones “persistentes” entre cliente y servidor sobre el mejor transporte – Abtrae el modelo de poolling subyasente – Provee un solo modelo de programacion • Connections & Hubs • Conect varios clientes
  • 57. Contacto • Mail: – rodolfof@lagash.com • Blogs: – http://shockbyte.net • Twitter: – @rodolfof

Notas do Editor

  1. ViewEngine:- Componente de ASP.NET que se encarga de renderizar vistasActualmente, la gran mayoría de la gente utiliza el motor clasico de ASP.NET con “&lt;% %&gt;”Esta es una alternativa a ese motor
  2. Objetivo principal de Razor: ahorrar teclas. Que sea mas fácil y rápido armar sitios con ASP.NET MVCPara eso es:CompactoSencilloPoco intrusivo, “amigo del HTML”No hay que aprender un lenguaje nuevo! Se programa con C# o VB.NET
  3. How do youimplement these today?
  4. DEMO: Fiddler con hootsuit.com
  5. DEMO: Fiddler con facebook.com
  6. That’s a lot of options, a lot of things to account for and a lot of different programming models. Are you going to do this?Are you still writing separate getDocumentById and AttachEvent methods to work with the DOM? What about jQuery?
  7. Open the previously created sampleInstall-Package jQuery.UI.Combined Add a class: [HubName(&quot;worker&quot;)] public class WorkerHub : Hub { public void startProcessing(Event e) { Caller.notify(&quot;We&apos;ve started processing &quot; + e.EventName); Clients.setProgress(10); for (int i = 0; i &lt;= 100; i++) { SignalR.Hubs.Hub.GetClients&lt;WorkerHub&gt;().setProgress(i); Thread.Sleep(100); } } }Add some HTML:&lt;!DOCTYPE html&gt;&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;head&gt; &lt;title&gt;&lt;/title&gt; &lt;link rel=&quot;stylesheet&quot; href=&quot;Content/themes/base/jquery.ui.all.css&quot; /&gt; &lt;script src=&quot;Scripts/jquery-1.6.4.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; &lt;script src=&quot;Scripts/jquery-ui-1.8.16.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; &lt;script src=&quot;Scripts/jquery.signalR.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; &lt;script src=&quot;signalr/hubs&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;&gt; $(function () { var workerHub = $.connection.worker; $(&apos;#progressbar&apos;).progressbar({ value: 0 }); $(&apos;#startWorkTrigger&apos;).bind(&apos;click&apos;, function () { workerHub.startProcessing({ eventName: &apos;UAN12&apos; }) .fail(function (e) { alert(&quot;An error occured: &quot; + e); }); }); workerHub.notify = function (message) { $(&apos;#notifications&apos;).html(message); }; workerHub.setProgress = function (progress) { $(&apos;#progressbar&apos;).progressbar({ value: progress }); }; $.connection.hub.start(); }); &lt;/script&gt;&lt;/head&gt;&lt;body&gt; &lt;div id=&quot;progressbar&quot; style=&quot;width: 200px;&quot;&gt;&lt;/div&gt; &lt;div id=&quot;notifications&quot; style=&quot;width: 200px;&quot;&gt;&lt;/div&gt; &lt;button id=&quot;startWorkTrigger&quot;&gt;Start work&lt;/button&gt;&lt;/body&gt;&lt;/html&gt;