SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Sistemas Distribuídos
                                             UFRJ - 2011/1




XMPP:   Extensible Messaging and Presence Protocol

          Caio Guimarães Souza
        Rodolfo Henrique Carvalho
XMPP    (Extensible Messaging and Presence Protocol)




● "É uma tecnologia aberta para comunicação em tempo real
  utilizando XML como formato básico para troca de
  informações. Em essência, XMPP fornece uma maneira de
  mandar pequenos pedaços de XML de uma entidade para
  outra." (XMPP: The Definitive Guide, 2009)
Web em tempo real


● HTTP?

   ○ Não escala bem para atualizações frequentes

   ○ Não escala bem para polling frequente

   ○ Unidirecional

   ○ Faz a pergunta errada: "O que aconteceu no passado?"

● Possibilidade: usar WebSockets, ou XMPP
Protocolos fechados de comunicação instantânea


● ICQ (1996), AOL IM (1997), Yahoo! Messenger (1998),
  MSN (1999)


● Desvantagens

   ○ Só se conversa com usuários do mesmo sistema

   ○ Servidor centralizado de responsabilidade do provedor do
     serviço

   ○ Não se pode escolher o software cliente (a não ser que seja
     feita engenharia reversa)
O surgimento do XMPP


● Jeremie Miller (1999)




   ○ "A couple of friends were playing around with a little Perl script
     that would send messages back and forth between ICQ and
     AIM - two clients could connect to it and it would rewrite
     messages. So I thought, 'Well heck, it isn't that hard to write an
     instant messaging system'"
História do XMPP

● 1999: Liberação do primeiro servidor por Jeremie

● 2000: Desenvolvimento dos primeiros clientes open source e
  bibliotecas pela recém-formada comunidade Jabber

● 2000: 1º serviço IM baseado em XMPP (Jabber.org)

● 2001: Criação da Jabber Software Foundation

● 2004: Formalização do XMPP pelo IETF

● 2005: É lançado o sistema de IM e VoIP Google Talk, baseado no
  XMPP

● 2008: Lançado o Facebook Chat
Serviços

● Channel encryption

● Autenticação

● Presença

● Listas de contato

● Messaging um-para-um e muitos-para-muitos

● Sessões de interação em tempo real peer-to-peer

● ...
Aplicações

● Mensagens instantâneas (Jabber, GoogleTalk, Facebook chat, etc)

● Bate-papo coletivo

● Administração remota

● Controle robótico

● Jogos

● Geolocalização

● Middleware e cloud computing
Aplicações


● Data syndication   (como é feito com RSS e Atom feeds)

● VoIP

● Serviços de identificação    (por exemplo com OpenID, ou OAuth)

                            (...)

● [Use a sua imaginação!]
Arquitetura
Arquitetura
Arquitetura
Primitivas de comunicação


● Message

● Presence

● IQ
<message/>


● Método push básico para transferir informação,
  transporte "fire-and-forget"


  <message from="madhatter@wonderland.lit/teaparty"
  to="alice@wonderland.lit" type="chat">
  <body>Who are you?</body>
  <subject>Query</subject>
  </message>
<presence/>


● Anuncia a disponibilidade de entidades na rede

      <presence from="alice@wonderland.lit/pda">
      <show>xa</show> <status>down the rabbit
      hole!</status> </presence>
<iq/>


● Usado no lugar de <message/> quando se quer
  garantir a entrega de informação ou obter uma
  resposta
<iq/>




Cliente         Servidor
          <iq from="alice@wonderland.lit/pda" id="rr82a1z7"
          to="alice@wonderland.lit" type="get"> <query
          xmlns="jabber:iq:roster"/> </iq>
<iq/>



Servidor       Cliente
       <iq from="alice@wonderland.lit" id="rr82a1z7"
       to="alice@wonderland.lit/pda" type="result">
       <query xmlns="jabber:iq:roster">
       <item jid="whiterabbit@wonderland.lit"/>
       <item jid="lory@wonderland.lit"/>
       <item jid="mouse@wonderland.lit"/>
       <item jid="sister@realworld.lit"/>
       </query>
       </iq>
Implementação de um echo bot
Pontos fortes
● Descentralizado: qualquer um pode rodar um servidor
  XMPP

● Padrão aberto

● Histórico: usado desde 1998, já tem muitas
  implementações de clientes, servidores, componentes,
  bibliotecas e suporte de empresas como Sun e Google

● Segurança: pode rodar em redes privadas; suporte para
  SASL e TLS na especificação; pode usar certificados
  digitais

● Flexibilidade e extensibilidade: permite adicionar
  funcionalidade através de XEPs
Pontos fracos


● Pode não funcionar adequadamente quando o
  tamanho das mensagens é muito grande

● Transmissão de dados binários. Solução:
  transmissão fora de banda, usando mensagens para
  coordenação
Referências


● Use XMPP to Create Your Own Google Talk Client.
  Sarath Lakshman. Revista Linux For You, Maio 2010.

● XMPP: The Definitive Guide. Peter Saint-Andre,
  Kevin Smith, Remko Tronçon. O’Reilly, 2009.

● Wikipedia: Extensible Messaging and Presence
  Protocol
O fim

Weitere ähnliche Inhalte

Was ist angesagt?

Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Bytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte BuddyBytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte BuddyKoichi Sakata
 
An introduction to Google test framework
An introduction to Google test frameworkAn introduction to Google test framework
An introduction to Google test frameworkAbner Chih Yi Huang
 
Javascript Roadmap - The Basics
Javascript Roadmap - The BasicsJavascript Roadmap - The Basics
Javascript Roadmap - The BasicsAswin Barath
 
clean code book summary - uncle bob - English version
clean code book summary - uncle bob - English versionclean code book summary - uncle bob - English version
clean code book summary - uncle bob - English versionsaber tabatabaee
 
Clean Code: Chapter 3 Function
Clean Code: Chapter 3 FunctionClean Code: Chapter 3 Function
Clean Code: Chapter 3 FunctionKent Huang
 
JavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesJavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesCharles Nutter
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Rodrigo Kono
 
Refactoring and code smells
Refactoring and code smellsRefactoring and code smells
Refactoring and code smellsPaul Nguyen
 
JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosEduardo Mendes
 
Java Foundations: Basic Syntax, Conditions, Loops
Java Foundations: Basic Syntax, Conditions, LoopsJava Foundations: Basic Syntax, Conditions, Loops
Java Foundations: Basic Syntax, Conditions, LoopsSvetlin Nakov
 

Was ist angesagt? (20)

Clean code
Clean codeClean code
Clean code
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Testes de Integração
Testes de IntegraçãoTestes de Integração
Testes de Integração
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
 
Bytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte BuddyBytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte Buddy
 
An introduction to Google test framework
An introduction to Google test frameworkAn introduction to Google test framework
An introduction to Google test framework
 
Javascript Roadmap - The Basics
Javascript Roadmap - The BasicsJavascript Roadmap - The Basics
Javascript Roadmap - The Basics
 
JSON Schema Design
JSON Schema DesignJSON Schema Design
JSON Schema Design
 
clean code book summary - uncle bob - English version
clean code book summary - uncle bob - English versionclean code book summary - uncle bob - English version
clean code book summary - uncle bob - English version
 
Clean Code: Chapter 3 Function
Clean Code: Chapter 3 FunctionClean Code: Chapter 3 Function
Clean Code: Chapter 3 Function
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
JavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesJavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for Dummies
 
Clean code
Clean code Clean code
Clean code
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
Refactoring and code smells
Refactoring and code smellsRefactoring and code smells
Refactoring and code smells
 
Clean coding-practices
Clean coding-practicesClean coding-practices
Clean coding-practices
 
JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a Objetos
 
Solid principles
Solid principlesSolid principles
Solid principles
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Java Foundations: Basic Syntax, Conditions, Loops
Java Foundations: Basic Syntax, Conditions, LoopsJava Foundations: Basic Syntax, Conditions, Loops
Java Foundations: Basic Syntax, Conditions, Loops
 

Andere mochten auch

Building and Deploying containerized Python Apps in the Cloud
Building and Deploying containerized Python Apps in the CloudBuilding and Deploying containerized Python Apps in the Cloud
Building and Deploying containerized Python Apps in the CloudRodolfo Carvalho
 
Python deployments on OpenShift 3
Python deployments on OpenShift 3Python deployments on OpenShift 3
Python deployments on OpenShift 3Rodolfo Carvalho
 
The Go features I can't live without, 2nd round
The Go features I can't live without, 2nd roundThe Go features I can't live without, 2nd round
The Go features I can't live without, 2nd roundRodolfo Carvalho
 
The Go features I can't live without
The Go features I can't live withoutThe Go features I can't live without
The Go features I can't live withoutRodolfo Carvalho
 
Composing WSGI apps and spellchecking it all
Composing WSGI apps and spellchecking it allComposing WSGI apps and spellchecking it all
Composing WSGI apps and spellchecking it allRodolfo Carvalho
 
SECUENCIA DIDÁCTICA Nº 3
SECUENCIA DIDÁCTICA Nº 3SECUENCIA DIDÁCTICA Nº 3
SECUENCIA DIDÁCTICA Nº 3Marta Quintero
 
Actividad 1. cuestionario parte teorica
Actividad 1. cuestionario parte teoricaActividad 1. cuestionario parte teorica
Actividad 1. cuestionario parte teoricapriscila espinosa
 
Cp gp day03 session 11 - implementation of cp solutions - copy
Cp gp day03 session 11 - implementation of cp solutions - copyCp gp day03 session 11 - implementation of cp solutions - copy
Cp gp day03 session 11 - implementation of cp solutions - copyzubeditufail
 

Andere mochten auch (20)

Building and Deploying containerized Python Apps in the Cloud
Building and Deploying containerized Python Apps in the CloudBuilding and Deploying containerized Python Apps in the Cloud
Building and Deploying containerized Python Apps in the Cloud
 
Redes livres de escala
Redes livres de escalaRedes livres de escala
Redes livres de escala
 
Python deployments on OpenShift 3
Python deployments on OpenShift 3Python deployments on OpenShift 3
Python deployments on OpenShift 3
 
The Go features I can't live without, 2nd round
The Go features I can't live without, 2nd roundThe Go features I can't live without, 2nd round
The Go features I can't live without, 2nd round
 
A Tour of Go - Workshop
A Tour of Go - WorkshopA Tour of Go - Workshop
A Tour of Go - Workshop
 
The Go features I can't live without
The Go features I can't live withoutThe Go features I can't live without
The Go features I can't live without
 
Pykonik Coding Dojo
Pykonik Coding DojoPykonik Coding Dojo
Pykonik Coding Dojo
 
Composing WSGI apps and spellchecking it all
Composing WSGI apps and spellchecking it allComposing WSGI apps and spellchecking it all
Composing WSGI apps and spellchecking it all
 
Redes livres de escala
Redes livres de escalaRedes livres de escala
Redes livres de escala
 
Concurrency in Python4k
Concurrency in Python4kConcurrency in Python4k
Concurrency in Python4k
 
Najmi maya
Najmi mayaNajmi maya
Najmi maya
 
Agenda nº 2
Agenda nº 2Agenda nº 2
Agenda nº 2
 
Sementes apresentação
Sementes apresentaçãoSementes apresentação
Sementes apresentação
 
ICD-10 Cert
ICD-10 CertICD-10 Cert
ICD-10 Cert
 
SECUENCIA DIDÁCTICA Nº 3
SECUENCIA DIDÁCTICA Nº 3SECUENCIA DIDÁCTICA Nº 3
SECUENCIA DIDÁCTICA Nº 3
 
La leyenda corregido
La leyenda corregidoLa leyenda corregido
La leyenda corregido
 
Actividad 1. cuestionario parte teorica
Actividad 1. cuestionario parte teoricaActividad 1. cuestionario parte teorica
Actividad 1. cuestionario parte teorica
 
Ligas.
Ligas.Ligas.
Ligas.
 
Cp gp day03 session 11 - implementation of cp solutions - copy
Cp gp day03 session 11 - implementation of cp solutions - copyCp gp day03 session 11 - implementation of cp solutions - copy
Cp gp day03 session 11 - implementation of cp solutions - copy
 
ICD-10 SWAT
ICD-10 SWATICD-10 SWAT
ICD-10 SWAT
 

Ähnlich wie XMPP

XMPP - Extensible messaging and presence protocol
XMPP - Extensible messaging and presence protocolXMPP - Extensible messaging and presence protocol
XMPP - Extensible messaging and presence protocolricardolbr
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010Marcelo Fleury
 
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Maurício Linhares
 
Redes de Computadores - Camada de Aplicação
Redes de Computadores - Camada de AplicaçãoRedes de Computadores - Camada de Aplicação
Redes de Computadores - Camada de AplicaçãoLuís Felipe de Andrade
 
Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Roberto Soares
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2Maurício Linhares
 
Selecionando application procotocols para IoT
Selecionando application procotocols para IoTSelecionando application procotocols para IoT
Selecionando application procotocols para IoTcesar231084
 
Aula podium redes e internet 2016
Aula podium redes e internet 2016Aula podium redes e internet 2016
Aula podium redes e internet 2016Aucionio Miranda
 
Ampliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonAmpliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonIP10
 
Ferramentas de Planejamento e Acompanhamento
Ferramentas de Planejamento e AcompanhamentoFerramentas de Planejamento e Acompanhamento
Ferramentas de Planejamento e AcompanhamentoRodrigo Azevedo
 
IOT e Micro Services - Tchelinux Caxias do Sul 2018 - Joelmir Ribacki
IOT e Micro Services - Tchelinux Caxias do Sul 2018 - Joelmir RibackiIOT e Micro Services - Tchelinux Caxias do Sul 2018 - Joelmir Ribacki
IOT e Micro Services - Tchelinux Caxias do Sul 2018 - Joelmir RibackiTchelinux
 
Aula06 camada de transporte
Aula06 camada de transporteAula06 camada de transporte
Aula06 camada de transporteTiago Tda
 
TDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUpsTDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUpsGiscard Faria
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04Ale Uehara
 

Ähnlich wie XMPP (20)

XMPP - Extensible messaging and presence protocol
XMPP - Extensible messaging and presence protocolXMPP - Extensible messaging and presence protocol
XMPP - Extensible messaging and presence protocol
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010
 
Cirrus
CirrusCirrus
Cirrus
 
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010
 
Redes de Computadores - Camada de Aplicação
Redes de Computadores - Camada de AplicaçãoRedes de Computadores - Camada de Aplicação
Redes de Computadores - Camada de Aplicação
 
Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2
 
HTML5 & suas APIs
HTML5 & suas APIsHTML5 & suas APIs
HTML5 & suas APIs
 
Selecionando application procotocols para IoT
Selecionando application procotocols para IoTSelecionando application procotocols para IoT
Selecionando application procotocols para IoT
 
Aula podium redes e internet 2016
Aula podium redes e internet 2016Aula podium redes e internet 2016
Aula podium redes e internet 2016
 
Tdc 2017
Tdc 2017Tdc 2017
Tdc 2017
 
Ampliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonAmpliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do Python
 
Ferramentas de Planejamento e Acompanhamento
Ferramentas de Planejamento e AcompanhamentoFerramentas de Planejamento e Acompanhamento
Ferramentas de Planejamento e Acompanhamento
 
IOT e Micro Services - Tchelinux Caxias do Sul 2018 - Joelmir Ribacki
IOT e Micro Services - Tchelinux Caxias do Sul 2018 - Joelmir RibackiIOT e Micro Services - Tchelinux Caxias do Sul 2018 - Joelmir Ribacki
IOT e Micro Services - Tchelinux Caxias do Sul 2018 - Joelmir Ribacki
 
P2 p voip_cparty
P2 p voip_cpartyP2 p voip_cparty
P2 p voip_cparty
 
Aula06 camada de transporte
Aula06 camada de transporteAula06 camada de transporte
Aula06 camada de transporte
 
TDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUpsTDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUps
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04
 

Mehr von Rodolfo Carvalho

Go 1.10 Release Party - PDX Go
Go 1.10 Release Party - PDX GoGo 1.10 Release Party - PDX Go
Go 1.10 Release Party - PDX GoRodolfo Carvalho
 
OpenShift Overview - Red Hat Open School 2017
OpenShift Overview - Red Hat Open School 2017OpenShift Overview - Red Hat Open School 2017
OpenShift Overview - Red Hat Open School 2017Rodolfo Carvalho
 
OpenShift Overview - Red Hat Open House 2017
OpenShift Overview - Red Hat Open House 2017OpenShift Overview - Red Hat Open House 2017
OpenShift Overview - Red Hat Open House 2017Rodolfo Carvalho
 
Automation with Ansible and Containers
Automation with Ansible and ContainersAutomation with Ansible and Containers
Automation with Ansible and ContainersRodolfo Carvalho
 
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...Rodolfo Carvalho
 
Intro Dojo Rio Python Campus
Intro Dojo Rio Python CampusIntro Dojo Rio Python Campus
Intro Dojo Rio Python CampusRodolfo Carvalho
 
Desenvolvimento Web com TurboGears e DOSVOX
Desenvolvimento Web com TurboGears e DOSVOXDesenvolvimento Web com TurboGears e DOSVOX
Desenvolvimento Web com TurboGears e DOSVOXRodolfo Carvalho
 

Mehr von Rodolfo Carvalho (16)

Go 1.10 Release Party - PDX Go
Go 1.10 Release Party - PDX GoGo 1.10 Release Party - PDX Go
Go 1.10 Release Party - PDX Go
 
OpenShift Overview - Red Hat Open School 2017
OpenShift Overview - Red Hat Open School 2017OpenShift Overview - Red Hat Open School 2017
OpenShift Overview - Red Hat Open School 2017
 
OpenShift Overview - Red Hat Open House 2017
OpenShift Overview - Red Hat Open House 2017OpenShift Overview - Red Hat Open House 2017
OpenShift Overview - Red Hat Open House 2017
 
Automation with Ansible and Containers
Automation with Ansible and ContainersAutomation with Ansible and Containers
Automation with Ansible and Containers
 
Go 1.8 Release Party
Go 1.8 Release PartyGo 1.8 Release Party
Go 1.8 Release Party
 
Coding Kwoon
Coding KwoonCoding Kwoon
Coding Kwoon
 
Python in 15 minutes
Python in 15 minutesPython in 15 minutes
Python in 15 minutes
 
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...
 
Content Delivery Networks
Content Delivery NetworksContent Delivery Networks
Content Delivery Networks
 
TDD do seu jeito
TDD do seu jeitoTDD do seu jeito
TDD do seu jeito
 
Intro Dojo Rio Python Campus
Intro Dojo Rio Python CampusIntro Dojo Rio Python Campus
Intro Dojo Rio Python Campus
 
Intro Dojo Rio
Intro Dojo RioIntro Dojo Rio
Intro Dojo Rio
 
Pyndorama
PyndoramaPyndorama
Pyndorama
 
Pyndorama
PyndoramaPyndorama
Pyndorama
 
Comunicação
ComunicaçãoComunicação
Comunicação
 
Desenvolvimento Web com TurboGears e DOSVOX
Desenvolvimento Web com TurboGears e DOSVOXDesenvolvimento Web com TurboGears e DOSVOX
Desenvolvimento Web com TurboGears e DOSVOX
 

Kürzlich hochgeladen

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

XMPP

  • 1. Sistemas Distribuídos UFRJ - 2011/1 XMPP: Extensible Messaging and Presence Protocol Caio Guimarães Souza Rodolfo Henrique Carvalho
  • 2. XMPP (Extensible Messaging and Presence Protocol) ● "É uma tecnologia aberta para comunicação em tempo real utilizando XML como formato básico para troca de informações. Em essência, XMPP fornece uma maneira de mandar pequenos pedaços de XML de uma entidade para outra." (XMPP: The Definitive Guide, 2009)
  • 3. Web em tempo real ● HTTP? ○ Não escala bem para atualizações frequentes ○ Não escala bem para polling frequente ○ Unidirecional ○ Faz a pergunta errada: "O que aconteceu no passado?" ● Possibilidade: usar WebSockets, ou XMPP
  • 4. Protocolos fechados de comunicação instantânea ● ICQ (1996), AOL IM (1997), Yahoo! Messenger (1998), MSN (1999) ● Desvantagens ○ Só se conversa com usuários do mesmo sistema ○ Servidor centralizado de responsabilidade do provedor do serviço ○ Não se pode escolher o software cliente (a não ser que seja feita engenharia reversa)
  • 5. O surgimento do XMPP ● Jeremie Miller (1999) ○ "A couple of friends were playing around with a little Perl script that would send messages back and forth between ICQ and AIM - two clients could connect to it and it would rewrite messages. So I thought, 'Well heck, it isn't that hard to write an instant messaging system'"
  • 6. História do XMPP ● 1999: Liberação do primeiro servidor por Jeremie ● 2000: Desenvolvimento dos primeiros clientes open source e bibliotecas pela recém-formada comunidade Jabber ● 2000: 1º serviço IM baseado em XMPP (Jabber.org) ● 2001: Criação da Jabber Software Foundation ● 2004: Formalização do XMPP pelo IETF ● 2005: É lançado o sistema de IM e VoIP Google Talk, baseado no XMPP ● 2008: Lançado o Facebook Chat
  • 7. Serviços ● Channel encryption ● Autenticação ● Presença ● Listas de contato ● Messaging um-para-um e muitos-para-muitos ● Sessões de interação em tempo real peer-to-peer ● ...
  • 8. Aplicações ● Mensagens instantâneas (Jabber, GoogleTalk, Facebook chat, etc) ● Bate-papo coletivo ● Administração remota ● Controle robótico ● Jogos ● Geolocalização ● Middleware e cloud computing
  • 9. Aplicações ● Data syndication (como é feito com RSS e Atom feeds) ● VoIP ● Serviços de identificação (por exemplo com OpenID, ou OAuth) (...) ● [Use a sua imaginação!]
  • 13. Primitivas de comunicação ● Message ● Presence ● IQ
  • 14. <message/> ● Método push básico para transferir informação, transporte "fire-and-forget" <message from="madhatter@wonderland.lit/teaparty" to="alice@wonderland.lit" type="chat"> <body>Who are you?</body> <subject>Query</subject> </message>
  • 15. <presence/> ● Anuncia a disponibilidade de entidades na rede <presence from="alice@wonderland.lit/pda"> <show>xa</show> <status>down the rabbit hole!</status> </presence>
  • 16. <iq/> ● Usado no lugar de <message/> quando se quer garantir a entrega de informação ou obter uma resposta
  • 17. <iq/> Cliente Servidor <iq from="alice@wonderland.lit/pda" id="rr82a1z7" to="alice@wonderland.lit" type="get"> <query xmlns="jabber:iq:roster"/> </iq>
  • 18. <iq/> Servidor Cliente <iq from="alice@wonderland.lit" id="rr82a1z7" to="alice@wonderland.lit/pda" type="result"> <query xmlns="jabber:iq:roster"> <item jid="whiterabbit@wonderland.lit"/> <item jid="lory@wonderland.lit"/> <item jid="mouse@wonderland.lit"/> <item jid="sister@realworld.lit"/> </query> </iq>
  • 20. Pontos fortes ● Descentralizado: qualquer um pode rodar um servidor XMPP ● Padrão aberto ● Histórico: usado desde 1998, já tem muitas implementações de clientes, servidores, componentes, bibliotecas e suporte de empresas como Sun e Google ● Segurança: pode rodar em redes privadas; suporte para SASL e TLS na especificação; pode usar certificados digitais ● Flexibilidade e extensibilidade: permite adicionar funcionalidade através de XEPs
  • 21. Pontos fracos ● Pode não funcionar adequadamente quando o tamanho das mensagens é muito grande ● Transmissão de dados binários. Solução: transmissão fora de banda, usando mensagens para coordenação
  • 22. Referências ● Use XMPP to Create Your Own Google Talk Client. Sarath Lakshman. Revista Linux For You, Maio 2010. ● XMPP: The Definitive Guide. Peter Saint-Andre, Kevin Smith, Remko Tronçon. O’Reilly, 2009. ● Wikipedia: Extensible Messaging and Presence Protocol
  • 23. O fim