SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Workshop
ASP.NET MVC
Día 3
Rodolfo Finochietti
MVP ASP.NET/IIS
Lagash Systems
rodolfof@lagash.com
@rodolfof
Agenda
• jQuery
• AJAX
• Bundling y Minification
• Script CDN
• Web API
• Soporte Asincrónico
• SignalR
jQuery
jQuery
Selectors
Animations
Plugins
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)
•Animation and Effects (253)
•Browser Tweaks (67)
•Data (122)
•DOM (123)
•Drag-and-Drop (30)
•Events (119)
•Forms (317)
•Integration (88)
•JavaScript (130)
•jQuery Extensions (198)
•Layout (162)
•Media (108)
•Menus (80)
•Metaplugin (24)
•Navigation (131)
•Tables (64)
•User Interface (571)
•Utilities (291)
•Widgets (211)
•Windows and Overlays (89)
AJAX
Que es AJAX
AJAX (Asynchronous JavaScript And XML) es una
técnica de desarrollo Web para crear
aplicaciones interactivas mediante la
combinación de tres tecnologías ya existentes.
Que es AJAX
• JavaScript - Para manejar el objeto XMLHttpRequest y DOM tratar para los
datos recibidos.
• HTML - Distribuye en la ventana del navegador los elementos de la
aplicación y la información recibida por el servidor
• CSS - Define el aspecto de cada elemento y dato de la aplicación
• XML - Es el formato de los datos transmitidos del servidor al cliente
(navegador) y que posteriormente serán mostrados.
• Lenguaje de servidor - Genera la información útil en XML y la envía al
navegador.
Funcionamiento
• El usuario accede a la aplicación que es enviada por el servidor en formato HTML,
JavaScript y CSS.
• Luego el código JavaScript de la aplicación pide al servidor los datos que quiere
mostrar y este, ejecuta un código de lado de servidor que envía al navegador los
datos en formato XML.
• Cada vez que el usuario realiza una acción que significa mostrar unos datos, la
capa javascript, repite la acción anterior de manera invisible al usuario y muestra
los datos deseados.
Funcionamiento
Bundling y Minification
Minificar los scripts
• Remover los elementos innecesarios como
espacios en blanco, nombres de
función, comentarios de código, e
instrucciones de trace y debug
• Para esto se puede usar la herramienta
Microsoft Ajax Minifier
– http://ajaxmin.codeplex.com/
14
Bundling y Minification
en ASP.NET
• Mejora los tiempo de carga de los archives de
JavaScript y CSS
– Reduce el numero y el tamaño de los request
HTTP
• Funciona por convención (no se requiere
configuración)
• Completamente extensible y configurable
Bundling y Minification
en ASP.NET
• Se declaran los bungles en el evento
Application_Start del Globlal.asax
• Y se usa en la pagina o vista
Script CDN
Content Delivery Network (CDN)
18
EdgeCast
Akamai
Limelight
Cachefly
Microsoft Ajax CDN
• Microsoft Ajax CDN es un host de las mas
populares librerías JavaScript
– El contenido esta cacheado en servidores
distribuidos geográficamente por todo el mundo
– Soporta SSL
– Están disponibles las versiones mimificadas y
debug
Microsoft Ajax CDN
• Librerías:
– jQuery (www.jquery.com)
– jQuery UI (www.jqueryui.com)
– jQuery Mobile (www.jquerymobile.com)
– jQuery Validation (www.jquery.com)
– jQuery Cycle (www.malsup.com/jquery/cycle)
– jQuery DataTables (http://datatables.net)
– Ajax Control Toolkit (www.outercurve.org)
– ASP.NET Ajax
– ASP.NET MVC JavaScript Files
– ASP.NET SignalR JavaScript Files
– Nuevas se agregan todo el tiempo
Microsoft Ajax CDN
• Simple de usar
– Solamente hay que referencia la librería que se
desea desde: http:///ajax.aspnetcdn.com
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-
1.9.0.js"></script>
– Soporta ScriptManager
<asp:ScriptManager ID="ScriptManager1“
EnableCdn="true“ Runat="Server" />
Microsoft Ajax CDN
• Fallback si el CDN no esta disponible
<script>
// Fallback to loading jQuery from a local path if the CDN is unavailable
(window.jQuery || document.write('<script src="/scripts/jquery-
1.9.0.min.js"></script>'));
</script>
Demo
jQuery
Ajax
Bundling y Minification
Script CDN
Work Time
Web API
Social Software Development
Web API Growth
Source: www.programmableweb.com – current APIs: 4535
+ 100% + 50% + 3400% + 235% + 71% + 86% + 46% + 63%
Embrace HTTP
¿Por que no WS-*?
Métodos HTTP
Para implementar Web API . . .
• Derivar ApiController
• Implementar las acciones
– Las acciones mapean a métodos HTTP
– Prefijar los nombres de los métodos como el verbo HTTP deseado –
PostComment
– Usar [Get/Post/Put/Delete] si se prefiere un nombre diferente
Ruta default en Web API
• routes.MapHttpRoute(
– name: "DefaultApi",
– routeTemplate: "api/{controller}/{id}",
– defaults: new { id = RouteParameter.Optional }
– );
Demo
Web API
Haciendo llamadas asincrónicas fácilmente
Task<string> Op123Async(string s) {
var tcs = new TaskCompletionSource<string>();
var state = 0;
Action resume = delegate {
switch (state) {
case 0: Task<string> t1 = Op1Async(s);
state = 1; t1.ContinueWith(resume);
break;
case 1: Task<string> t2 = Op2Async(t1.Result);
...}
async Task<string> Op123Async(string s) {
string s1 = await Op1Async(s);
string s2 = await Op2Async(s1);
string s3 = await Op3Async(s2);
return s3;
}
Asynchronous Support
• Porque async en el server?
– Porque nos permite usar de manera mas eficiente los recurso del
Server
• Y como funciona?
– Al momento de invocar a un resource remoto, el controller le cede el
control permitiendole reutilizar el thread mientras espera la
respuesta.
– Cuando la llamada remota se completa, el controller es re-
scheduleado para completar su ejecución.
– Menor # de threads corriendo -> aumenta la escalabilidad
• El uso de async en el servicio no se expone a browsers/clientes
– http://myserver.com/products -> la misma URL puede ser
implementada en ASP.NET usando un controller sincrónico o
asincronico.
Async tradicional en MVC
public class Products : AsyncController {
public void IndexAsync() {
WebClient wc1 = new WebClient();
AsyncManager.OutstandingOperations.Increment();
wc1.DownloadStringCompleted += (sender, e) => {
AsyncManager.Parameters[“result"] = e.Result;
AsyncManager.OutstandingOperations.Decrement();
};
wc1.DownloadStringAsync(new Uri("http://www.bing.com/"));
}
public ActionResult IndexCompleted(string result) {
return View();
}
}
Async en MVC con .NET 4.5
public class Products : Controller {
public async Task<ActionResult> IndexAsync() {
WebClient web = new WebClient();
string result = await web.DownloadStringTaskAsync("www.bing.com/");
return View();
}
}
Demo
Soporte Asincrónico
Work Time
SignalR
¿Por que necesitamos aplicaciones
real-time?
¡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
¿Que tecnologias tenemos hoy?
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
HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
Forever Frame
– 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
<script>eval("... ")</script>0
<script>eval("... ")</script>0
Periodic polling
– 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 
Polling interval
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
ExtensiondeHTTP
ProveesocketssobreHTTP
Full-duplex
Funcionaatravezdeproxies
Todaviaesundraft…
Notodoslosproxyserverslosoportan
Notodosloswebserverlosoportan
Notodoslosbrowserslosoportan
¡Sonsockets!
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
DEMO
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)
Dos modelos de conexion
PersistentConnection
Comunica 1..N clientes
Es un IHttpHandler
Requiere que se defina una ruta
Limitado a enviar mensajes
El usuario define el “protocolo”
Hubs
Comunica 1..N clientes
Abstraccion sobre
PersistentConnection
Las rutas se mapean
automaticamente (/signalr/hubs)
Se pueden enviar mensajes y llamar a
metodos
SignalR define el protocolo
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 a clientes individuales
– Se pueden llamar todos clientes
– Se pueden llamar a grupos de clientes
Demo
Hubs
Clients
Clientes
En el servidor
Se puede hostear en cualquier aplicacion ASP.NET
En el cliente
JavaScript
Pero hay mas…
Clientes
En el servidor
“SelfHost”
Windows Azure
En el cliente
JavaScript
Cualquier aplicacion .NET
Cualquier dispositivo Windows Phone
iOS
Android
Contacto
• Mail:
– rodolfof@lagash.com
• Blogs:
– http://shockbyte.net
• Twitter:
– @rodolfof
¡Gracias!

Weitere ähnliche Inhalte

Was ist angesagt?

Azure Bootcamp 2017 - Azure functions
Azure Bootcamp 2017 - Azure functionsAzure Bootcamp 2017 - Azure functions
Azure Bootcamp 2017 - Azure functionsDiego Bersano
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveEduard Tomàs
 
NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017Diego Bersano
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Rodolfo Finochietti
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Oscar Gensollen
 
NodeJS
NodeJSNodeJS
NodeJSIBM
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSAlberto Gimeno
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasRoberto Luis Bisbé
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talkCarlos Landeras Martínez
 
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk   AWS Roadshow Bogota MexicoIntroduccion a Elastic Beanstalk   AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk AWS Roadshow Bogota MexicoHermann Pais
 

Was ist angesagt? (20)

Azure Bootcamp 2017 - Azure functions
Azure Bootcamp 2017 - Azure functionsAzure Bootcamp 2017 - Azure functions
Azure Bootcamp 2017 - Azure functions
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep Dive
 
ASP.NET 5 & MVC 6 (RC1)
ASP.NET 5 & MVC 6 (RC1)ASP.NET 5 & MVC 6 (RC1)
ASP.NET 5 & MVC 6 (RC1)
 
NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
 
IoT y Dispositivos
IoT y DispositivosIoT y Dispositivos
IoT y Dispositivos
 
HTML5
HTML5HTML5
HTML5
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5
 
NodeJS
NodeJSNodeJS
NodeJS
 
APIs REST
APIs RESTAPIs REST
APIs REST
 
Presentacion node
Presentacion nodePresentacion node
Presentacion node
 
ASP.NET 5
ASP.NET 5ASP.NET 5
ASP.NET 5
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Azure IoT Hub
Azure IoT HubAzure IoT Hub
Azure IoT Hub
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincheras
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
 
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk   AWS Roadshow Bogota MexicoIntroduccion a Elastic Beanstalk   AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
 
2018.sps madrid.spfx workshop
2018.sps madrid.spfx workshop2018.sps madrid.spfx workshop
2018.sps madrid.spfx workshop
 

Andere mochten auch

14. Seguridad En Aplicaciones Web Asp.Net
14.  Seguridad En Aplicaciones Web Asp.Net14.  Seguridad En Aplicaciones Web Asp.Net
14. Seguridad En Aplicaciones Web Asp.Netguest3cf6ff
 
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicasASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicasVíctor Acosta Santivañez
 
Curso Básico de Pl Sql Oracle
Curso Básico de Pl Sql OracleCurso Básico de Pl Sql Oracle
Curso Básico de Pl Sql Oracleluisguil
 
Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012Andreiitah Puliido
 
Novedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladoresNovedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladoresEnrique Catala Bañuls
 
Administrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBAAdministrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBASpanishPASSVC
 

Andere mochten auch (9)

Asp.net 4
Asp.net 4Asp.net 4
Asp.net 4
 
14. Seguridad En Aplicaciones Web Asp.Net
14.  Seguridad En Aplicaciones Web Asp.Net14.  Seguridad En Aplicaciones Web Asp.Net
14. Seguridad En Aplicaciones Web Asp.Net
 
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicasASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
 
Asp.net
Asp.netAsp.net
Asp.net
 
Curso Básico de Pl Sql Oracle
Curso Básico de Pl Sql OracleCurso Básico de Pl Sql Oracle
Curso Básico de Pl Sql Oracle
 
Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012
 
PL/SQL
PL/SQLPL/SQL
PL/SQL
 
Novedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladoresNovedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladores
 
Administrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBAAdministrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBA
 

Ähnlich wie ASP.NET MVC Workshop Día 3

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
 
Asp .net
Asp .netAsp .net
Asp .netmellcv
 
Asp .Net Ajax: Patrones
Asp .Net Ajax: PatronesAsp .Net Ajax: Patrones
Asp .Net Ajax: Patronesjuliocasal
 
Introduccion a elastic beanstalk aws roadshow bogota mexico
Introduccion a elastic beanstalk   aws roadshow bogota mexicoIntroduccion a elastic beanstalk   aws roadshow bogota mexico
Introduccion a elastic beanstalk aws roadshow bogota mexicoAmazon Web Services LATAM
 
12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del Proyecto12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del ProyectoLuis Fernando Aguas Bucheli
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guest976d083
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NETwilliamsm
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guestd24c393
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkitpabloesp
 
INTRODUCCION javascript.ppt
INTRODUCCION javascript.pptINTRODUCCION javascript.ppt
INTRODUCCION javascript.pptSandraAlfonso18
 
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
 
Proyecto Avatar - JavaScript sobre la JVM del servidor
Proyecto Avatar - JavaScript sobre la JVM del servidorProyecto Avatar - JavaScript sobre la JVM del servidor
Proyecto Avatar - JavaScript sobre la JVM del servidorCarlos Martín Martínez
 
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
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Ignacio Muñoz Vicente
 

Ähnlich wie ASP.NET MVC Workshop Día 3 (20)

Aplicaciones Web
Aplicaciones WebAplicaciones Web
Aplicaciones Web
 
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
 
[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...
 
Asp .net
Asp .netAsp .net
Asp .net
 
Asp .Net Ajax: Patrones
Asp .Net Ajax: PatronesAsp .Net Ajax: Patrones
Asp .Net Ajax: Patrones
 
myprofly
myproflymyprofly
myprofly
 
Introduccion a elastic beanstalk aws roadshow bogota mexico
Introduccion a elastic beanstalk   aws roadshow bogota mexicoIntroduccion a elastic beanstalk   aws roadshow bogota mexico
Introduccion a elastic beanstalk aws roadshow bogota mexico
 
12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del Proyecto12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del Proyecto
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
HTML5 + Asp.NET
HTML5 + Asp.NETHTML5 + Asp.NET
HTML5 + Asp.NET
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
 
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
 
Serverless Wars
Serverless WarsServerless Wars
Serverless Wars
 
INTRODUCCION javascript.ppt
INTRODUCCION javascript.pptINTRODUCCION javascript.ppt
INTRODUCCION javascript.ppt
 
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
 
Proyecto Avatar - JavaScript sobre la JVM del servidor
Proyecto Avatar - JavaScript sobre la JVM del servidorProyecto Avatar - JavaScript sobre la JVM del servidor
Proyecto Avatar - JavaScript sobre la JVM del servidor
 
Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVC
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2
 

Mehr von 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
 
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
 
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
 
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012Rodolfo Finochietti
 
Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Rodolfo Finochietti
 

Mehr von Rodolfo Finochietti (19)

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
 
Windows 10 Developer Readiness
Windows 10 Developer ReadinessWindows 10 Developer Readiness
Windows 10 Developer Readiness
 
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
 
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
 
Introducción a ASP.NET Web API
Introducción a ASP.NET Web APIIntroducción a ASP.NET Web API
Introducción a ASP.NET Web API
 
HTML5 Media Queries
HTML5 Media QueriesHTML5 Media Queries
HTML5 Media Queries
 
HTML5 Offline
HTML5 OfflineHTML5 Offline
HTML5 Offline
 
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012
 
Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8
 
Introducción a WPF
Introducción a WPFIntroducción a WPF
Introducción a WPF
 
HTML5 Geolocalizacion
HTML5 GeolocalizacionHTML5 Geolocalizacion
HTML5 Geolocalizacion
 

Kürzlich hochgeladen

GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 

Kürzlich hochgeladen (20)

GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 

ASP.NET MVC Workshop Día 3

  • 1. Workshop ASP.NET MVC Día 3 Rodolfo Finochietti MVP ASP.NET/IIS Lagash Systems rodolfof@lagash.com @rodolfof
  • 2. Agenda • jQuery • AJAX • Bundling y Minification • Script CDN • Web API • Soporte Asincrónico • SignalR
  • 6. jQuery Animations $(…).show() $(…).hide() $(…).slideDown() $(…).slideUp() $(…).fadeIn() $(…).fadeOut()
  • 7. jQuery Plugins http://plugins.jquery.com/ •Ajax (182) •Animation and Effects (253) •Browser Tweaks (67) •Data (122) •DOM (123) •Drag-and-Drop (30) •Events (119) •Forms (317) •Integration (88) •JavaScript (130) •jQuery Extensions (198) •Layout (162) •Media (108) •Menus (80) •Metaplugin (24) •Navigation (131) •Tables (64) •User Interface (571) •Utilities (291) •Widgets (211) •Windows and Overlays (89)
  • 9. Que es AJAX AJAX (Asynchronous JavaScript And XML) es una técnica de desarrollo Web para crear aplicaciones interactivas mediante la combinación de tres tecnologías ya existentes.
  • 10. Que es AJAX • JavaScript - Para manejar el objeto XMLHttpRequest y DOM tratar para los datos recibidos. • HTML - Distribuye en la ventana del navegador los elementos de la aplicación y la información recibida por el servidor • CSS - Define el aspecto de cada elemento y dato de la aplicación • XML - Es el formato de los datos transmitidos del servidor al cliente (navegador) y que posteriormente serán mostrados. • Lenguaje de servidor - Genera la información útil en XML y la envía al navegador.
  • 11. Funcionamiento • El usuario accede a la aplicación que es enviada por el servidor en formato HTML, JavaScript y CSS. • Luego el código JavaScript de la aplicación pide al servidor los datos que quiere mostrar y este, ejecuta un código de lado de servidor que envía al navegador los datos en formato XML. • Cada vez que el usuario realiza una acción que significa mostrar unos datos, la capa javascript, repite la acción anterior de manera invisible al usuario y muestra los datos deseados.
  • 14. Minificar los scripts • Remover los elementos innecesarios como espacios en blanco, nombres de función, comentarios de código, e instrucciones de trace y debug • Para esto se puede usar la herramienta Microsoft Ajax Minifier – http://ajaxmin.codeplex.com/ 14
  • 15. Bundling y Minification en ASP.NET • Mejora los tiempo de carga de los archives de JavaScript y CSS – Reduce el numero y el tamaño de los request HTTP • Funciona por convención (no se requiere configuración) • Completamente extensible y configurable
  • 16. Bundling y Minification en ASP.NET • Se declaran los bungles en el evento Application_Start del Globlal.asax • Y se usa en la pagina o vista
  • 18. Content Delivery Network (CDN) 18 EdgeCast Akamai Limelight Cachefly
  • 19. Microsoft Ajax CDN • Microsoft Ajax CDN es un host de las mas populares librerías JavaScript – El contenido esta cacheado en servidores distribuidos geográficamente por todo el mundo – Soporta SSL – Están disponibles las versiones mimificadas y debug
  • 20. Microsoft Ajax CDN • Librerías: – jQuery (www.jquery.com) – jQuery UI (www.jqueryui.com) – jQuery Mobile (www.jquerymobile.com) – jQuery Validation (www.jquery.com) – jQuery Cycle (www.malsup.com/jquery/cycle) – jQuery DataTables (http://datatables.net) – Ajax Control Toolkit (www.outercurve.org) – ASP.NET Ajax – ASP.NET MVC JavaScript Files – ASP.NET SignalR JavaScript Files – Nuevas se agregan todo el tiempo
  • 21. Microsoft Ajax CDN • Simple de usar – Solamente hay que referencia la librería que se desea desde: http:///ajax.aspnetcdn.com <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery- 1.9.0.js"></script> – Soporta ScriptManager <asp:ScriptManager ID="ScriptManager1“ EnableCdn="true“ Runat="Server" />
  • 22. Microsoft Ajax CDN • Fallback si el CDN no esta disponible <script> // Fallback to loading jQuery from a local path if the CDN is unavailable (window.jQuery || document.write('<script src="/scripts/jquery- 1.9.0.min.js"></script>')); </script>
  • 27. Web API Growth Source: www.programmableweb.com – current APIs: 4535 + 100% + 50% + 3400% + 235% + 71% + 86% + 46% + 63%
  • 30. Para implementar Web API . . . • Derivar ApiController • Implementar las acciones – Las acciones mapean a métodos HTTP – Prefijar los nombres de los métodos como el verbo HTTP deseado – PostComment – Usar [Get/Post/Put/Delete] si se prefiere un nombre diferente
  • 31. Ruta default en Web API • routes.MapHttpRoute( – name: "DefaultApi", – routeTemplate: "api/{controller}/{id}", – defaults: new { id = RouteParameter.Optional } – );
  • 33.
  • 34. Haciendo llamadas asincrónicas fácilmente Task<string> Op123Async(string s) { var tcs = new TaskCompletionSource<string>(); var state = 0; Action resume = delegate { switch (state) { case 0: Task<string> t1 = Op1Async(s); state = 1; t1.ContinueWith(resume); break; case 1: Task<string> t2 = Op2Async(t1.Result); ...} async Task<string> Op123Async(string s) { string s1 = await Op1Async(s); string s2 = await Op2Async(s1); string s3 = await Op3Async(s2); return s3; }
  • 35. Asynchronous Support • Porque async en el server? – Porque nos permite usar de manera mas eficiente los recurso del Server • Y como funciona? – Al momento de invocar a un resource remoto, el controller le cede el control permitiendole reutilizar el thread mientras espera la respuesta. – Cuando la llamada remota se completa, el controller es re- scheduleado para completar su ejecución. – Menor # de threads corriendo -> aumenta la escalabilidad • El uso de async en el servicio no se expone a browsers/clientes – http://myserver.com/products -> la misma URL puede ser implementada en ASP.NET usando un controller sincrónico o asincronico.
  • 36. Async tradicional en MVC public class Products : AsyncController { public void IndexAsync() { WebClient wc1 = new WebClient(); AsyncManager.OutstandingOperations.Increment(); wc1.DownloadStringCompleted += (sender, e) => { AsyncManager.Parameters[“result"] = e.Result; AsyncManager.OutstandingOperations.Decrement(); }; wc1.DownloadStringAsync(new Uri("http://www.bing.com/")); } public ActionResult IndexCompleted(string result) { return View(); } }
  • 37. Async en MVC con .NET 4.5 public class Products : Controller { public async Task<ActionResult> IndexAsync() { WebClient web = new WebClient(); string result = await web.DownloadStringTaskAsync("www.bing.com/"); return View(); } }
  • 41. ¿Por que necesitamos aplicaciones real-time?
  • 42.
  • 43.
  • 44. ¡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
  • 46. 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
  • 47. HTTP/1.1 200 OK Content-Type: text/plain Transfer-Encoding: chunked Forever Frame – 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 <script>eval("... ")</script>0 <script>eval("... ")</script>0
  • 48. Periodic polling – 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  Polling interval
  • 49. 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 
  • 51. En definitiva: ¡Muchas opciones! • Forever Frame • Periodic polling • Long polling • HTML5 WebSockets
  • 52. 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
  • 54. ¿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)
  • 55. Dos modelos de conexion PersistentConnection Comunica 1..N clientes Es un IHttpHandler Requiere que se defina una ruta Limitado a enviar mensajes El usuario define el “protocolo” Hubs Comunica 1..N clientes Abstraccion sobre PersistentConnection Las rutas se mapean automaticamente (/signalr/hubs) Se pueden enviar mensajes y llamar a metodos SignalR define el protocolo
  • 56. 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 a clientes individuales – Se pueden llamar todos clientes – Se pueden llamar a grupos de clientes
  • 59. Clientes En el servidor Se puede hostear en cualquier aplicacion ASP.NET En el cliente JavaScript Pero hay mas…
  • 60. Clientes En el servidor “SelfHost” Windows Azure En el cliente JavaScript Cualquier aplicacion .NET Cualquier dispositivo Windows Phone iOS Android
  • 61. Contacto • Mail: – rodolfof@lagash.com • Blogs: – http://shockbyte.net • Twitter: – @rodolfof

Hinweis der Redaktion

  1. Use HTTP as an Application Protocol – not a Transport Protocol
  2. How do youimplement these today?
  3. DEMO: Fiddler con hootsuit.com
  4. DEMO: Fiddler con facebook.com
  5. 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?
  6. 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;