Faceți cunoștință cu protocolul extensibil de mesagerie și prezență (xmpp)

XMPP nu este singurul protocol de transport general pentru mesagerie. Alte protocoale populare, cum ar fi XML-RPC și SOAP, pot oferi aceste capabilități cu semantică, similare cu funcțiile de apelare. Metodele mai noi, cum ar fi Transferul de stat reprezentațional (ReST), oferă acces gestionat la fișiere utilizând adrese URL pentru a specifica locația, obiectul și metoda.







XMPP Architecture

XMPP este similar cu alte protocoale de nivel de aplicație, de exemplu, SMTP. În astfel de arhitecturi, un client cu un nume unic este asociat cu un alt client cu un nume unic prin intermediul unui server asociat. Fiecare client implementează formularul client al protocolului, iar serverul oferă posibilitatea de rutare. Figura 1 prezintă o arhitectură simplă. În acest caz, ambii clienți fac parte din același domeniu (discovery.nasa.guv).


Figura 1. O arhitectură simplă XMPP care include un server și doi clienți.

De asemenea, serverele comunică în scopuri de rutare între domenii (de exemplu, între discovery.nasa.guv și europa.nasa.guv). Mai mult, pot exista gateway-uri pentru difuzarea altor domenii și protocoale de mesagerie instantanee. Exemplul din Figura 2 prezintă o rețea XMPP cu gateway-uri în domeniile SMS și SMTP. În acest context, gateway-urile sunt cel mai adesea folosite pentru traducerea între protocoalele IM (de exemplu, XMPP în Internet Relay Chat [IRC]). Fiind extensibil, XMPP este protocolul de bază ideal pentru comunicarea universală între diferitele protocoale terminale. Gateway-ul XMPP permite protocolului țintă de sfârșit de sfârșit să încheie această sesiune client-server și să înceapă o nouă sesiune (împreună cu o traducere corectă a protocolului).

Faceți cunoștință cu protocolul extensibil de mesagerie și prezență (xmpp)

Figura 2. O arhitectură mai complexă XMPP care include gateway-uri XMPP.

Protocolul XMPP

XMPP este un protocol relativ simplu care rulează prin socketuri TCP folosind mesaje XML. Comunicările asincrone sunt realizate în fluxuri XML și stanzas XML (stanzas). Un flux XML este un plic care încapsulează schimbul de informații XML între două entități. Fluxurile XML conțin stanzuri XML, care sunt unități discrete ale acestor informații. De exemplu, stanzile XML sunt folosite în XMPP pentru a schimba mesajele (text între utilizatorii pagerului Internet) și pentru a informa despre prezența utilizatorului. Pentru a ilustra aceste concepte, să examinăm un exemplu simplu al unei conexiuni IM între doi clienți care utilizează XMPP.

Figura 3 prezintă conversații simple între două entități. Rețineți că cel puțin un server participă la negocieri (în acest caz, deoarece ambii clienți se află în același domeniu, acesta este exact un server). În Figura 3, clientul stâng este entitatea inițiatoare (inițiază un schimb XMPP între două entități). Acest flux XML utilizează atributul pentru a identifica domeniul de primire (și, de asemenea, pentru a defini spațiul de nume XML). Clientul primitor din partea dreaptă primește un flux XML și răspunde, de asemenea, cu un flux XML (folosind atributul din). În acest stadiu, sunt posibile mai multe negocieri diferite, în special despre autentificare și criptare. Aici treceți peste acest pas (precum și mesajele între servere atunci când clienții se află în domenii diferite).

Faceți cunoștință cu protocolul extensibil de mesagerie și prezență (xmpp)







Figura 3. Un exemplu (simplificat) de schimb de mesaje XMPP.

Orice parte poate returna un mesaj de eroare similar celui de mai jos. În acest caz, nodul a trimis un flux XML nevalid sau un șir:

Deși acest exemplu arată un simplu schimb de mesaje IM, este ușor să vedem cum pot fi transformate mesajele de mesaje în mesaje RPC. În locul utilizatorilor domeniului, puteți înregistra funcțiile ca noduri pentru crearea unui cadru dinamic al serviciilor Web. Acum, să vedem cum să construim o aplicație simplă care să funcționeze prin XMPP.

XMPP exemplu în Ruby

Unul dintre aspectele interesante ale XMPP este numărul mare de biblioteci în multe limbi. Acest exemplu este scris în Ruby folosind biblioteca XMPP4R. Legături către diferite biblioteci existente pot fi găsite în secțiunea Resurse.

Pentru a demonstra lucrul cu XMPP folosind biblioteci, luați în considerare dezvoltarea unui simplu agent IM folosit ca dicționar tehnic. În cazul nostru, într-un pager standard pe Internet veți scrie cuvântul, iar agentul IM va reveni definiției sale

În acest exemplu, este implementat un agent IM care se conectează prin intermediul XMPP unui alt agent IM și, după ce a fost conectat, primește definiția cuvintelor:

Listarea 1. Un agent XMPP simplu.

Listarea 1 începe cu un simplu dicționar. Pentru a face acest lucru, utilizați hash-ul din clasa Ruby, care vă permite să creați perechi de chei-valoare și apoi să le referiți cu ușurință la ele. Apoi, pentru a vă conecta la server, utilizați biblioteca XMPP4R. Mai întâi, creați o conexiune JID și o nouă conexiune client folosind clasa Client. Pentru a vă conecta într-adevăr la serverul de chat, utilizați metoda de conectare. După conectare, se numește metoda auth cu parola. Acum, conexiunea este gata pentru schimbul de mesaje.

Figura 4 prezintă un exemplu de aplicație care rulează. Acest exemplu folosește clientul popular universal de chat Pidgin. Clientul Pidgin acceptă toate protocoalele importante de chat și poate fi utilizat în diferite rețele de chat existente (chiar simultan). Figura 4 prezintă fereastra de mesagerie creată atunci când clientul de chat conectat la server și a început să comunice cu un alt utilizator.

Faceți cunoștință cu protocolul extensibil de mesagerie și prezență (xmpp)

Figura 4. Exemplu de sesiune de chat.

Utilizarea XMPP

XMPP oferă un cadru comun pentru mesageria prin rețea. Nu este surprinzător faptul că are multe utilizări în afară de IM tradițional și difuzarea informațiilor despre prezența sa.

Jocurile online pot folosi, de asemenea, XMPP. XMPP oferă inițial un set de caracteristici pentru jocuri online, inclusiv autentificare, informații despre prezență, camere de chat și un schimb de informații extensibil, aproape în timp real, despre starea jocului.

În cele din urmă, XMPP este protocolul perfect pentru o nouă eră de cloud computing. Computerele de cloud și depozitele de date utilizează diferite nivele și forme de comunicare, incluzând nu numai transmiterea de mesaje între sisteme pentru transferul de stat, dar și mutarea obiectelor mari cum ar fi dispozitivele de stocare sau mașinile virtuale. Datorită autentificării și protecției datelor în timpul transferului, XMPP poate fi aplicat la diferite niveluri și este ideal ca protocol intermediar.

Rețineți că majoritatea aplicațiilor nu au nimic de-a face cu conexiunea dintre oameni, ci vizează interacțiunea dintre mașini. Este interesant faptul că protocolul, inițial destinat mesageriei instant, se găsește în aplicații complet diferite.

XMPP multilingv

XMPP este implementat ca un set de biblioteci care oferă capabilități XMPP aplicațiilor. Pentru a spune că XMPP, ca protocol, este foarte util, este foarte simplu deja bazat pe numărul de limbi pe care le suportă astăzi. Puteți găsi biblioteci XMPP pentru limbile tradiționale C și C ++, precum și pentru limbi populare de scripting, precum Ruby, Java, Python, Perl și Tcl. Există, de asemenea, biblioteci XMPP pentru limbi precum Erlang, C # și Lisp. Deci, indiferent de mediul pe care îl folosiți, veți găsi cel mai probabil o bibliotecă XMPP pentru aceasta. Pentru o listă completă a limbilor acceptate, consultați Resurse.

Dă-i drumul

Deși ReST este mai degrabă un model arhitectural decât o implementare, se dezvoltă rapid în direcții diferite. Modelul său simplu de gestionare a resurselor la distanță și-a găsit locul în cloud computing, în care ReST este folosit ca model pentru accesarea și gestionarea depozitelor.

Multe tehnologii utile sunt adesea aplicate în același mod în care inventatorii lor nu se așteptau. De exemplu, HTTP de facto este protocolul standard pentru afișarea paginilor Web, dar este de asemenea utilizat ca transport la nivel de aplicație prin protocoale precum SOAP și XML-RPC (inclusiv modele de protocol cum ar fi ReST). XMPP este o altă tehnologie utilă care găsește multe utilizări în afară de IM obișnuit. Cum aplicați XMPP soluțiilor dvs.?







Trimiteți-le prietenilor: