Transcript
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!


Top Related