Prezentare generală a arhitecturii RMI

În arhitectura de aplicații distribuite, este întotdeauna nevoie de comunicare între două aplicații diferite. În aplicațiile bazate pe Java, o aplicație comunică cu o altă aplicație de la distanță / diferită care rulează în altă parte prin utilizarea unui mecanism numit arhitectură RMI.

RMI reprezintă Invocarea la Metodă la Distanță. Este o API oferită de Java, care permite unui obiect care se află într-un JVM (Java Virtual Machine) să acceseze sau să invoce un obiect care rulează pe un alt JVM. Celălalt JVM ar putea fi pe aceeași mașină sau mașină la distanță. Aceasta este o caracteristică interesantă, deoarece aplicațiile în timp real devin foarte ușoare pentru aplicațiile Java să comunice direct între ele fără niciun mecanism de comunicare extern. De asemenea, este întotdeauna nevoie de o comunicare sigură între aplicații bazată pe arhitectura de aplicații distribuite.

Proiectare RMI

Înainte de a intra în arhitectură detaliată, vom înțelege designul de bază al arhitecturii RMI.

  • API-ul RMI este furnizat în pachetul java.rmi. Să prezentăm doi termeni pentru înțelegerea arhitecturii de proiectare RMI. În primul rând este clientul; JVM care va apela obiect la distanță și al doilea este server; JVM care conține obiectul de la distanță. Astfel, clientul va apela serverul, în acest caz la obiectul pentru invocarea metodei.
  • Serverul va returna referința obiectului către client. Captura de aici reprezintă atât obiectele, adică localul și la distanța vor apărea ca obiect local pe server. Nu va exista nicio diferențiere între cele două. Sintaxa metodelor ambelor obiecte este de asemenea aceeași. Prin urmare, serverul JVM acționează ca JVM normal, fără să știe de niciun obiect, indiferent dacă este local sau de la distanță.
  • Același obiect poate fi atât un server, cât și un client. Referința obiectelor la distanță este obținută și este folosită ca și cum ar fi un obiect local. Infrastructura RMI este responsabilă pentru găsirea obiectului la distanță, interceptarea apelului la metodă și procesarea la distanță a cererii la distanță. Clientul invocă metode pe obiect numai după obținerea unei referințe la un obiect de la distanță.

RMI Architecture

Mai jos este diagrama arhitecturii RMI într-un mod simplu. Pe internet, veți găsi diverse forme ale aceleiași arhitecturi, dar avem una simplă care vă va ajuta să explicați mai bine.

Să începem prin conectarea punctelor dintr-o perspectivă de proiectare cu o diagramă de arhitectură.

Aplicația client și aplicația server sunt JVM-urile respective ale mașinii client și ale mașinii server. În aplicația RMI scriem două programe respectiv; programul client care se află pe programul client și server care se află pe mașina serverului.

Strat de aplicație:

Acest nivel reprezintă sistemele reale, adică clientul și serverul care sunt implicați în comunicare. Programul java din partea clientului comunică cu programul java din partea serverului.

Ciot:

Din introducere de design, avem obiecte client; În arhitectura RMI este cunoscut sub numele de Stub. Este un obiect care se află pe mașina client și acționează ca un proxy pentru obiectul de la distanță. Este ca un gateway pentru programul client.

Ciotul are aceleași metode ca un obiect de la distanță. Când clientul apelează la obiectul stub, stub transmite această solicitare către un obiect de la distanță (Schelet) prin infrastructura RMI care este apoi executată pe server.

Stub Realizează următoarele evenimente: -

  1. Inițiază conexiunea cu JVM de la distanță,
  2. Scrie și transmite parametrii (Marshals) către JVM de la distanță,
  3. Așteaptă rezultatul,
  4. Citește (Unmarshalls) rezultatul returnat,
  5. Treceți rezultatul primit apelantului.

Schelet:

Obiectul server care se află într-o mașină server este cunoscut sub numele de Schelet. Stub comunică cu aplicația serverului cu ajutorul unui obiect Skeleton intermediar.

Responsabilitatea obiectului schelet este de a trimite parametri la implementarea metodei și de a trimite valorile de retur către client.

Schelet efectuează următoarele evenimente: -

  1. Citește parametrul trecut de client,
  2. Invocă metoda pe obiectul de la distanță efectiv,
  3. Transmite / trece rezultatul către apelant.

Strat / schelet:

  • Stratul Stub / Schelet este responsabil pentru interceptarea apelurilor efectuate de client și redirecționarea acestor apeluri către obiectul de la distanță. Acest strat mai este denumit și Proxy Layer. Stub și Skeleton sunt proxy pentru client și server. Obiectele Stub și Skeleton sunt ca o interfață între o aplicație și restul sistemului RMI.
  • Scopul acestui strat este de a transfera date către stratul de referință de la distanță prin serializarea obiectelor. Acest proces de conversie a datelor / obiectului în flux de byte este cunoscut sub denumirea de Marshalling și invers este cunoscut sub numele de Unmarshalling. Marshaling este efectuat atunci când se solicită obiectul de la server și Unmarshalling este efectuat atunci când date / referință obiect este primit de la server.

Strat de referință de la distanță:

  • Stratul proxy este conectat la mecanismul RMI prin stratul de referință de la distanță. Acest nivel este responsabil pentru comunicarea și transferul obiectelor între client și server. Semantica de invocare a conexiunii RMI este definită și acceptată de acest strat.
  • Stratul de referință de la distanță este responsabil pentru menținerea sesiunii în timpul apelului la metodă. adică gestionează referințele făcute de client la obiectul serverului de la distanță. Acest strat este, de asemenea, responsabil pentru manipularea obiectelor duplicate.

Strat de transport:

Stratul de transport este responsabil pentru configurarea comunicării între cele două mașini. Acest strat folosește protocolul TCP / IP standard pentru conectare. Transportul propriu-zis de date se realizează prin acest strat. Acest strat face parte din Stratul de referință de la distanță.

Concluzie

  • Invocarea metodei la distanță (RMI) este o API foarte utilă furnizată în JAVA, care ajută la comunicarea între două JVM-uri diferite. Permite unui obiect să invoce o metodă pe un obiect care se află într-un alt spațiu de adrese.
  • Oferă un mod sigur pentru ca aplicațiile să comunice între ele. Realizează această funcționalitate prin intermediul conceptelor Stub (obiect care apelează clientul) și Schelet (obiect de la distanță care se află pe server).
  • RMI este utilizat pentru a construi aplicații distribuite. Păstrează tipul de siguranță. Arhitectura RMI minimizează complexitatea aplicației într-o arhitectură distribuită.

Articole recomandate

Acesta a fost un ghid pentru Arhitectura RMI. Aici discutăm în detaliu designul RMI și arhitectura cu o diagramă bloc adecvată. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Arhitectura depozitului de date
  2. Ce este protocolul TCP?
  3. Ce este software-ul desktop?
  4. Întrebări la interviu CCNA