Visual Studio Summit 2013
Eduardo Pires – Arquiteto de Sistemas
MSP - MCSD - MCTS - PSD - ITIL V3
www.eduardopires.net.br
@EduardoPiresBR
Visual Studio Summit 2013
Comunicação em tempo real
Nossos usuários querem acesso a última informação AGORA!
• Atualizações de redes sociais
• Cotação da bolsa de valores
• Placares – Game Score
• Jogos interativos
• Notificações (E-
mail, Agenda, etc)
• Apps colaborativas
• Atualizações de e-Commerce
• Notícias ao vivo
• Leilões
• Jogos interativos
• Transações financeiras
• E claro... CHAT
Visual Studio Summit 2013
Técnicas de soluções atuais:
• Polling
• Long Polling
• Forever Frame
• Server Sent Events
• WebSockets
Visual Studio Summit 2013
Polling
• Utiliza requisições Ajax (XMLHttpRequest)
• Conexões periódicas com o server verificando se há alguma
atualização
Prós Contras
--- Atraso nas atualizações
Sobrecarrega o server com
milhares de requests
Visual Studio Summit 2013
Polling
Visual Studio Summit 2013
Long Polling
• Semelhante ao Polling, requisições Ajax (XMLHttpRequest)
• Mantem a conexão aberta até receber uma notificação do
server
Prós Contras
Sem atraso nas respostas Múltiplos requests
Baixa carga no servidor Existem técnicas mais rápidas
Suportado por vários Browsers
Visual Studio Summit 2013
Long Polling
Visual Studio Summit 2013
Forever Frame
• Utiliza de forma inteligente a tag HTML <iframe> de forma a
criar uma conexão permanentemente aberta
Prós Contras
Suportado por vários Browsers Problemas com peculiaridades
de cada Browser, tornando-se
muito difícil de implementar.
Muito difícil de tratar os erros
Visual Studio Summit 2013
Forever Frame
Visual Studio Summit 2013
Server-Sent Events
• HTML5 – Funciona através de HTTP
• EventSource JavaScript API
• Content-type: text/event-stream
Prós Contras
Conexão persistente Não é suportado no IE 
Não necessita um protocolo
especial implementado no
servidor
Trabalha em apenas uma
direção. Server >> Client
Visual Studio Summit 2013
Server-Sent Events
Visual Studio Summit 2013
WebSockets
• HTML5 – Funciona via TCP
• Será o fim do HTTP ?
Prós Contras
Conexão persistente nas duas
direções. Server >> Client e
Client >> Server
Requer o protocolo Web
Socket IE 10 e demais
browsers (versão atualizada)
É a técnica mais rápida
atualmente
Requer o protocolo Web
Socket no Server (IIS8)
Visual Studio Summit 2013
WebSockets
Visual Studio Summit 2013
E se eu quiser implementar TODAS as técnicas?
Terei muito trabalho?
Visual Studio Summit 2013
ASP.Net SignalR
• Solução completa de comunicação em
tempo real
• Comunicação de forma assíncrona
• Membro oficial do ASP.Net
• Open-Source (GitHub)
• Conexão persistente Server / Client
• Forma de programação unificada
• Dois níveis diferentes de abstração de uma conexão. Escolhe
automaticamente o melhor tipo de transporte conforme o cenário.
Visual Studio Summit 2013
Arquitetura
Visual Studio Summit 2013
Hubs
• Implementação de alto nível
construído sobre a API
PersistentConnection
• Modelo RPC (Remote
Procedure Call)
• Modelo mais indicado para
utilização do SignalR
Visual Studio Summit 2013
Persistent Connection
• A API de conexão (classe PersistentConnection) dá ao desenvolvedor
acesso direto a comunicação de baixo nível que o SignalR expõe,
similar a forma de trabalhar com Sockets.
• As mensagens não possuem formato, são baseadas em strings
simples que necessitam ser interpretadas em ambos os lados (client,
server).
• A escolha do transporte fica a cargo do desenvolvedor
Visual Studio Summit 2013
Indicações
• A maioria dos aplicativos deve usar o modelo Hubs.
• PersistentConnections podem ser utilizados nas seguintes
circunstâncias:
O formato da mensagem enviada necessita de ser controlado.
O desenvolvedor prefere trabalhar com um modelo de envio de
mensagens ao invés de um modelo de invocação remota.
Um aplicativo existente que usa um modelo de mensagem está sendo
portado para usar SignalR.
Visual Studio Summit 2013
ASP.Net SignalR Components
jQuery .Net WP7 iOS Silverlight WinRT
Android
Mono
ASP.Net
IIS8
Self /
Owin
Azure
Service
Bus
Clients
Hosts
Visual Studio Summit 2013
Como começar?
• Pré-requisitos, Visual Studio 2010 SP1 ou 2012
• O Visual Studio 2012 – Update 2 já possui suporte ao ASP.Net SignalR
• ASP.Net SignalR está disponível via NuGet
Visual Studio Summit 2013
Demo! Demo! Demo!
• Chat! (Clássico)
• Jogo da velha em tempo real.
Visual Studio Summit 2013
Muito Obrigado!
Dúvidas?
Eduardo Pires
@EduardoPiresBR
www.eduardopires.net.br

Comunicação em Tempo Real com ASP.Net SignalR

  • 1.
    Visual Studio Summit2013 Eduardo Pires – Arquiteto de Sistemas MSP - MCSD - MCTS - PSD - ITIL V3 www.eduardopires.net.br @EduardoPiresBR
  • 2.
    Visual Studio Summit2013 Comunicação em tempo real Nossos usuários querem acesso a última informação AGORA! • Atualizações de redes sociais • Cotação da bolsa de valores • Placares – Game Score • Jogos interativos • Notificações (E- mail, Agenda, etc) • Apps colaborativas • Atualizações de e-Commerce • Notícias ao vivo • Leilões • Jogos interativos • Transações financeiras • E claro... CHAT
  • 3.
    Visual Studio Summit2013 Técnicas de soluções atuais: • Polling • Long Polling • Forever Frame • Server Sent Events • WebSockets
  • 4.
    Visual Studio Summit2013 Polling • Utiliza requisições Ajax (XMLHttpRequest) • Conexões periódicas com o server verificando se há alguma atualização Prós Contras --- Atraso nas atualizações Sobrecarrega o server com milhares de requests
  • 5.
  • 6.
    Visual Studio Summit2013 Long Polling • Semelhante ao Polling, requisições Ajax (XMLHttpRequest) • Mantem a conexão aberta até receber uma notificação do server Prós Contras Sem atraso nas respostas Múltiplos requests Baixa carga no servidor Existem técnicas mais rápidas Suportado por vários Browsers
  • 7.
    Visual Studio Summit2013 Long Polling
  • 8.
    Visual Studio Summit2013 Forever Frame • Utiliza de forma inteligente a tag HTML <iframe> de forma a criar uma conexão permanentemente aberta Prós Contras Suportado por vários Browsers Problemas com peculiaridades de cada Browser, tornando-se muito difícil de implementar. Muito difícil de tratar os erros
  • 9.
    Visual Studio Summit2013 Forever Frame
  • 10.
    Visual Studio Summit2013 Server-Sent Events • HTML5 – Funciona através de HTTP • EventSource JavaScript API • Content-type: text/event-stream Prós Contras Conexão persistente Não é suportado no IE  Não necessita um protocolo especial implementado no servidor Trabalha em apenas uma direção. Server >> Client
  • 11.
    Visual Studio Summit2013 Server-Sent Events
  • 12.
    Visual Studio Summit2013 WebSockets • HTML5 – Funciona via TCP • Será o fim do HTTP ? Prós Contras Conexão persistente nas duas direções. Server >> Client e Client >> Server Requer o protocolo Web Socket IE 10 e demais browsers (versão atualizada) É a técnica mais rápida atualmente Requer o protocolo Web Socket no Server (IIS8)
  • 13.
    Visual Studio Summit2013 WebSockets
  • 14.
    Visual Studio Summit2013 E se eu quiser implementar TODAS as técnicas? Terei muito trabalho?
  • 15.
    Visual Studio Summit2013 ASP.Net SignalR • Solução completa de comunicação em tempo real • Comunicação de forma assíncrona • Membro oficial do ASP.Net • Open-Source (GitHub) • Conexão persistente Server / Client • Forma de programação unificada • Dois níveis diferentes de abstração de uma conexão. Escolhe automaticamente o melhor tipo de transporte conforme o cenário.
  • 16.
    Visual Studio Summit2013 Arquitetura
  • 17.
    Visual Studio Summit2013 Hubs • Implementação de alto nível construído sobre a API PersistentConnection • Modelo RPC (Remote Procedure Call) • Modelo mais indicado para utilização do SignalR
  • 18.
    Visual Studio Summit2013 Persistent Connection • A API de conexão (classe PersistentConnection) dá ao desenvolvedor acesso direto a comunicação de baixo nível que o SignalR expõe, similar a forma de trabalhar com Sockets. • As mensagens não possuem formato, são baseadas em strings simples que necessitam ser interpretadas em ambos os lados (client, server). • A escolha do transporte fica a cargo do desenvolvedor
  • 19.
    Visual Studio Summit2013 Indicações • A maioria dos aplicativos deve usar o modelo Hubs. • PersistentConnections podem ser utilizados nas seguintes circunstâncias: O formato da mensagem enviada necessita de ser controlado. O desenvolvedor prefere trabalhar com um modelo de envio de mensagens ao invés de um modelo de invocação remota. Um aplicativo existente que usa um modelo de mensagem está sendo portado para usar SignalR.
  • 20.
    Visual Studio Summit2013 ASP.Net SignalR Components jQuery .Net WP7 iOS Silverlight WinRT Android Mono ASP.Net IIS8 Self / Owin Azure Service Bus Clients Hosts
  • 21.
    Visual Studio Summit2013 Como começar? • Pré-requisitos, Visual Studio 2010 SP1 ou 2012 • O Visual Studio 2012 – Update 2 já possui suporte ao ASP.Net SignalR • ASP.Net SignalR está disponível via NuGet
  • 22.
    Visual Studio Summit2013 Demo! Demo! Demo! • Chat! (Clássico) • Jogo da velha em tempo real.
  • 23.
    Visual Studio Summit2013 Muito Obrigado! Dúvidas? Eduardo Pires @EduardoPiresBR www.eduardopires.net.br