Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Construindo Apps Com SignalR

402 views

Published on

Palestra apresentada em parceria com André Paulovich na PUC-SP para o ASP.NET Conference 2014

  • Be the first to comment

Construindo Apps Com SignalR

  1. 1. ANDRÉ PAULOVICH IVAN PAULOVICH
  2. 2. João Pessoa... Paraíba – Oxente!
  3. 3. Belo Horizonte... Minas Gerais – Uai!
  4. 4. www.100loop.com
  5. 5. • • • •
  6. 6. • • • • • • • • • • • • • •
  7. 7. HTTP != “Tempo real”
  8. 8. Contras Atraso nas atualizações Sobrecarrega o server com requests desnecessários
  9. 9. Prós Sem atraso nas respostas Múltiplos requests Contras Baixa carga no servidor Existem técnicas mais rápidas Suportado por vários Browsers
  10. 10. Prós Suportado por vários Browsers Contras Contras Problemas com peculiaridades de cada Browser. Muito difícil de tratar os erros
  11. 11. Prós Conexão persistente. Não necessidta de um protocolo especial implementado no servidor. Contras Nâo é suportado pelo Internet Explorer. Trabalha apenas na direção: Server > Client.
  12. 12. Prós Conexão persistente nas duas direções. Melhor performance. Contras Requer protocolo WEB SOCKET IE 10 e demais browsers (versões atualizadas) Requer protocolo WEB SOCKET no Servidor (IIS8)
  13. 13. E agora... Para onde seguir?
  14. 14. David Fowler @davidfowl Damian Edwards @damianedwards Desenvolvida por funcionários da Microsoft da equipe ASP.NET Combinando uma biblioteca ASP .NET no lado do servidor e uma biblioteca JavaScript do lado cliente
  15. 15. Transportes Conexiones persistentes Long polling Server-sent events Forever frame WebSockets Hubs Protocolos internet Abstracción
  16. 16. Aplicação .NET (Server Side) HUB API API de Conexão Persistente Transportes HTML5 Comet Web Sockets Server Sent Events Forever Frame Ajax Long Polling Browser (Client Side) HUB API API de Conexão Persistente Transportes Browser (Client Side) HUB API API de Conexão Persistente Transportes Browser (Client Side) HUB API API de Conexão Persistente Transportes Servidor Clientes
  17. 17. 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() { ... } }
  18. 18. Servidor (Hub) Cliente (javascript) var chat = $.connection.chatHub; $.connection.hub.start(); chat.enviar(“hi, all!”); chat.recibir = function(text) { $(“#log”) .append(“<li>”+text+”</li>”); }; Proxy class ChatHub: Hub { public void enviar(string text) { Clients.recibir(text); } }
  19. 19. • JQuery WinRT Native .NET Android (via Mono) WP7 Silverlight CLIENTES iOS HOSTS
  20. 20. 1. 2. PM> Install-Package Microsoft.AspNet.SignalR
  21. 21. PUBLIC CLASS SHAPEHUB : HUB { // // RECEBE MENSAGENS DO CLIENTE // PUBLIC VOID MOVESHAPE(INT X, INT Y) { // // ENVIA MENSAGENS PARA O CLIENTE // THIS.CLIENTS.OTHERS.UPDATESHAPE(X, Y); } }  Simples definição do Hub  Implementação dos métodos  Uso intensivo de Anonymous Methods
  22. 22. <SCRIPT TYPE="TEXT/JAVASCRIPT"> $(FUNCTION () { VAR SHAPE = $("#SHAPE"); $.CONNECTION.HUB.START().DONE(FUNCTION () { SHAPE.DRAGGABLE({ DRAG: FUNCTION () { // ENVIA A NOVA POSIÇÃO PARA O SERVIDOR $.CONNECTION.SHAPEHUB.SERVER.MOVESHAPE( SHAPE.POSITION().LEFT, SHAPE.POSITION().TOP); } }); }); // RECEBE AS MENSAGENS DO SERVIDOR $.CONNECTION.SHAPEHUB.CLIENT.UPDATESHAPE = FUNCTION (X, Y) { SHAPE.ANIMATE({ LEFT: X, TOP: Y }, { QUEUE: FALSE }); } }); </SCRIPT>  Implementação dos métodos no cliente “.client”  Pode chamar métodos no servidor “.server”
  23. 23. • •
  24. 24.  Backplane  Azure Service Bus  Requisitos Websocket no Azure Websites  ASP.NET 4.5  Habilitar no painel
  25. 25. • HTTP://SHOOTR.SIGNALR.NET/ • HTTPS://JABBR.NET
  26. 26. • HTTPS://TWITTER.COM/DAMIANEDWARDS • HTTP://ASP.NET/SIGNALR • HTTP://GIFTHUB.COM/SIGNALR/SIGNALR • HTTP://100LOOP.COM • HTTP://GIFTHUB.COM/IVANPAULOVICH/ASPNETCONF
  27. 27. MANTENHA CONTATO NO WWW.100LOOP.COM ANDRÉ PAULOVICH PAULOVICH@100LOOP.COM IVAN PAULOVICH - IVAN@100LOOP.COM

×