37
SignalR y Apps móviles CartujaDotNet Introducción al desarrollo de apps móviles real time haciendo uso de signalR Javier Suárez @JSuarezRuiz

SignalR y dispositivos móviles

Embed Size (px)

DESCRIPTION

La evolución en el mundo de las Aplicaciones es constante y rápido y los usuarios cada vez requieren funcionalidades más exigentes. Muchas de las Applicaciones destacadas en la tienda hacen un correcto uso de respuesta inmediata, famosos chats, famosos juegos donde ambos oponentes dibujan en tiempo real, etc. ¿Quieres aprender a realizar este tipo de Aplicaciones?. Si quieres aprender como realizar en Windows Phone 8 y Windows 8 Aplicaciones que funcionen en tiempo real utilizando SignalR, no te pierdas esta sesión!

Citation preview

Page 1: SignalR y dispositivos móviles

SignalR y Apps móviles

CartujaDotNet

Introducción al desarrollo de apps móviles real time haciendo uso de

signalR

Javier Suárez @JSuarezRuiz

Page 2: SignalR y dispositivos móviles

®

El problemaEl usuario exige información• Rápido & instantánea

• Actualizada

• En cualquier dispositivo, bajo cualquier conexión

Ejemplos• Mensajería instantánea, chats

• Herramientas colaborativas

• Sistemas de monitorización/notificación

• Juegos online multiusuario

• Información en tiempo real: bolsa, noticias, deportes, apuestas, estadísticas

Feedback en tiempo real, notificaciones en

tiempo real

Page 3: SignalR y dispositivos móviles

®

El problema

Page 4: SignalR y dispositivos móviles

®

¿HTTP al rescate?Comunicación Web – HTTP!

Basicamente consiste en peticiones-

respuesta

Servicios Push HTTP• Periodic Polling • Long Polling• Forever Frame • Server-Sent Events (SSE) • Web Sockets

¡HTTP no está orientado al tiempo real!

Page 5: SignalR y dispositivos móviles

®

ClienteServidor

Web

Hay Datos?

Hay Datos?

Hay Datos?

Hay Datos?

Si, ahi los llevas!

Hay Datos?

Hay Datos?

Hay Datos?

Hay Datos?

Polling: ¿la solución?

• Aprovecha las ventajas de HTTP

• Intervalos de actualización cortos Muchos recursos

• Intervalos de actualización largos Peor interacción

Page 6: SignalR y dispositivos móviles

®

Web SocketsPositivo:• Fácil

• Conexión persistente

iniciada por el cliente

• Canal full duplex

Negativo• Solo funciona bajo Windows 8/Server 2012

• Requiere cambios en servidores, proxies e intermediarios

• No es versión definitiva

Page 7: SignalR y dispositivos móviles

®

Push hoyMúltiples técnicas:

Long polling

Forever frame

XHR Streaming

Page 8: SignalR y dispositivos móviles

®

Pero no es todo…Aun hay más!

Otros requisitos de aplicaciones multiusuario, asíncronas, interactivas,

y en tiempo real:

• Gestionar usuarios conectados• Gestionar "suscripciones"• Realizar seguimiento de envíos• …

Page 9: SignalR y dispositivos móviles

Demasiado, ¿verdad?

Page 10: SignalR y dispositivos móviles

Real-time SignalR

Page 11: SignalR y dispositivos móviles

®

¿Qué es SignalR?Librerías open-source que añaden una capa

de abstracción alrededor de las conexiones

persistentes HTTPSignalR permite crear Apps en tiempo real de una manera sumamente fácil

[Y en castellano, por favor]

Page 12: SignalR y dispositivos móviles

®

SignalRCreado por dos miembros del equipo de

ASP.NET…• David Fowler• Damian Edwards

Open source: Licencia MIT Código en GitHub:

http://github.com/signalr

Page 13: SignalR y dispositivos móviles

®

¿Que nos aporta?Envío de mensajes en tiempo real cliente <-> servidor

sobre una "conexión persistente"

Usando la mejor opción disponible

Bus de mensajería

Bibliotecas cliente

Page 14: SignalR y dispositivos móviles

®

ClienteServidor

Web

En tiempo real?

Por supuesto!

SignalR

Adelante!

Page 15: SignalR y dispositivos móviles

®

ClienteServidor

Web

Basicamente…

SignalR!!!

Page 16: SignalR y dispositivos móviles

Nos centramos en la parte servidor y cliente

Jquery

Page 17: SignalR y dispositivos móviles

Microsoft /web

®

Requisitos para el servidor• Windows Server 2012 (WebSockets)• Windows Server 2008 r2.• Windows 8 (WebSockets)• Windows 7

• .NET 4• .NET 4.5 (WebSockets)

• IIS 7* / 8

Page 18: SignalR y dispositivos móviles

®

Comenzamos. Instalación.Instalando y configurando SignalR • Instalaremos SignalR usando NuGet

• Microsoft.AspNet.SignalR

• Microsoft.AspNet.SignalR.Core

• Microsoft.AspNet.SignalR.Owin

• Microsoft.AspNet.SignalR.Js

• Microsoft.AspNet.SignalR.Client

• Microsoft.AspNet.SignalR.Utils

• Iremos al Global.asax y registraremos SignalR mediante una simple llamada:

RouteTabRouteTable.Routes.MapHubs() en el método Application_Start ANTES de

cualquier otra sentencia.

Page 19: SignalR y dispositivos móviles

®

Comenzamos. Configuración.Instalando y configurando SignalR

Listo!. Ya estamos preparados para trabajar con SignalR. Ahora en cada página que lo

necesitemos usar añadiremos las siguientes líneas:

jQuery, jQuery.signalR & lo generado dinámicamente en /signalr/hubs

protected void Application_Start(){

RouteTable.Routes.MapHubs();//More code

}

<script src=http://code.jquery.com/jquery-1.8.2.min.js type="text/javascript"></script> <script src="Scripts/jquery.signalR-2.0.0.0.min.js" type="text/javascript"></script> <script src="/signalr/hubs" type="text/javascript"></script>

Page 20: SignalR y dispositivos móviles

®

Comenzamos. Connection y Hub.La API• SignalR facilita dos clases principals para establecer las comunicaciones –

PersistentConnection y Hub

Cada cliente conectado a SignalR recibirá un

Id único de conexión.

Page 21: SignalR y dispositivos móviles

Microsoft /web

®

Conexiones vs Hubs• Conexiones persistentes

• Bajo nivel• Experiencia similar a sockets• Conexión• Desconexión• Envío

• Mensajes de bajo nivel ("raw") Nosotros interpretamos los mensajes

• Hubs• Mucha mayor abstracción• Diferencias:• Heredan de "Hub"• No hace falta routing• Mensajes de alto nivel

Llamadas a métodos entre cliente y servidor Ilusión de continuidad

Transportes

Conexiones persistentes

Long polling Server-sentevents

Forever frame WebSockets

Hubs

Protocolos internet

Abst

racc

ión

Page 22: SignalR y dispositivos móviles

Microsoft /web

®

Conexiones

Servidor (Conexión persistente)Cliente (javascript)

var conn = $.connection(“MyConn”);conn.start();

conn.send(“hi, all!”);

conn.receive(function(text) { $(“#log”) .append(“<li>”+text+”</li>”);});

class MyConn: PersistentConnection{ override Task OnConnectedAsync() { … }

override Task OnReceivedAsync(string data) { return Connection.Broadcast(data); } override Task OnDisconnectAsync() { ... }}

Page 23: SignalR y dispositivos móviles

Microsoft /web

®

Hubs

Servidor (Hub)

Cliente (javascript)

var chat = $.connection.chatHub;$.connection.hub.start();

chat.enviar(“hi, all!”);

chat.recibir = function(text) { $(“#log”) .append(“<li>”+text+”</li>”);};

Proxyclass ChatHub: Hub{ public void enviar(string text) { Clients.recibir(text); }}

Page 24: SignalR y dispositivos móviles

®

Comenzamos. Hub.Configurando hubs• Crearemos una clase que herede de Microsoft.AspNet.Signalr.Hub• Cada método no estático escrito se podrá llamar desde el clientet• Enviar mensajes a los clients es muy fácil – usamos la propiedad Clients del Hub

y llamamos al método que queremos del cliente

Page 25: SignalR y dispositivos móviles

®

Comenzamos. Cliente.Clients es la propiedad que nos permite comunicarnos con los

clientes.

Contiene métodos y propiedades dinámicas. public void SendMessage(string message){

var msg = string.Format("{0}: {1}", Context.ConnectionId, message);Clients.All.newMessage(msg);

}

Page 26: SignalR y dispositivos móviles

®

Comenzamos. Cliente Jquery.Código automático del proxy disponible en /signalr/hubs

Script generado basado en la declaración del Hub

Hubs son propiedades de $.connection Ejemplo: $.connection.chatHub

El nombre del Hub camel cased

$.connection.hub.start() – Inicia la conexión

$.connection.hub.start({ transport: 'longPolling'});

var chat = $.connection.chat;chat.server.joinRoom('private');

Page 27: SignalR y dispositivos móviles

®

Comenzamos. Cliente Jquery.Define los métodos desde el lado del cliente:

• Eventos para controlar el estado de conexión

• Detecta conexiones lentas

• Soporte para múltiples dominios

var chat = $.connection.chat; chat.client.newMessage = onNewMessage;

function addMessage(message) { $('#messages').append(message); }

Page 28: SignalR y dispositivos móviles

DemoCrear un Chat con SignalR.

Cliente Jquery.

Page 29: SignalR y dispositivos móviles

SignalR no está limitado a clientes web

Otros Clientes

Page 30: SignalR y dispositivos móviles

®

Se puede usar enNavegadores• Desktop IE 7+, Chrome, Safari, Firefox• Mobile/Tablets: Android, iOS, Windows

Plataformas• .NET (winForm, WPF, Silverlight, Mono)• C++• Windows Phone• Windows Store Apps• iOS Native Apps – (3rd party)• Android Native Apps – (3rd party)• Javascript

Page 31: SignalR y dispositivos móviles

®

SignalR

ASP.NET OWIN

JQuery WinRTNative .

NETAndroid(via Mono)

WP7Silverlig

ht

CLIENTES

iOS

HOSTS

Page 32: SignalR y dispositivos móviles

DemoClientes Windows Phone 8 y

Windows 8 de nuestro Chat

Page 33: SignalR y dispositivos móviles

33

Preguntas y respuestas¿Dudas?

P&R

Page 34: SignalR y dispositivos móviles

•@SignalR• Twitter feed

• Signalr.net•Website

• ASP.NET/SignalR•Microsoft’s content/tutorials

• http://t.co/oHWaZb2a47• E-Book de Jose María Aguilar

Más Información

Page 35: SignalR y dispositivos móviles

10% de descuento En todos nuestros cursos y libros

Sólo durante los próximos 15 díasIntroduce el cupón ESRM5NUB al realizar

tu compra en nuestra tienda online.www.campusmvp.es

CURSO ONLINE: Aplicaciones móviles con HTML5, Backbone y PhoneGapCURSO ONLINE : Single Page ApplicationsCURSO ONLINE : Desarrollo Web con ASP.NET MVC4 …. Y muchos más

Page 36: SignalR y dispositivos móviles

•Web•www.javiersuarezruiz.wordpress.com• http://geeks.ms/blogs/jsuarez/

• Email• [email protected]

• Twitter•@jsuarezruiz

Contacto

Page 37: SignalR y dispositivos móviles

SignalR y Apps móviles

Gracias por vuestro

tiempo!