Overzicht van RMI-architectuur

In gedistribueerde applicatie-architectuur is er altijd behoefte aan communicatie tussen twee verschillende applicaties. In op Java gebaseerde applicaties communiceert de ene applicatie met een andere externe / andere applicatie die ergens anders draait met behulp van een mechanisme dat RMI-architectuur wordt genoemd.

RMI staat voor Remote Method Invocation. Het is een API die wordt aangeboden door Java en waarmee een object dat zich in een JVM (Java Virtual Machine) bevindt, toegang heeft tot een object of dat op een andere JVM wordt uitgevoerd. De andere JVM kan zich op dezelfde machine of op een andere machine bevinden. Dit is een interessante functie omdat het in realtime-applicaties heel gemakkelijk wordt voor Java-applicaties om rechtstreeks met elkaar te communiceren zonder externe communicatiemechanismen. Ook is er altijd behoefte aan veilige communicatie tussen applicaties op basis van gedistribueerde applicatie-architectuur.

RMI-ontwerp

Voordat we ingaan op gedetailleerde architectuur, zullen we het basisontwerp van RMI-architectuur begrijpen.

  • RMI API wordt geleverd in het pakket java.rmi. Laten we twee termen introduceren voor het begrijpen van RMI-ontwerparchitectuur. Ten eerste is de klant; de JVM die extern object en tweede aanroept, is server; de JVM die het externe object bevat. Dus zal de client de server aanroepen, in dit geval op het object voor methode-aanroep.
  • De server retourneert vervolgens de referentie van het object naar de client. De vangst hier is zowel de objecten dat wil zeggen lokaal en extern verschijnen als een lokaal object op de server. Er zal geen onderscheid worden gemaakt tussen de twee. De syntaxis van de methoden van beide objecten is ook hetzelfde. Daarom gedraagt ​​de server JVM zich als normale JVM zonder enig object te weten of het lokaal of extern is.
  • Hetzelfde object kan zowel een server als een client zijn. De externe objectenreferentie wordt verkregen en wordt gebruikt alsof het een lokaal object was. De RMI-infrastructuur is verantwoordelijk voor het vinden van het externe object, het onderscheppen van de methodeaanroep en het op afstand verwerken van het externe verzoek. De client roept alleen methoden op voor het object nadat een verwijzing naar een extern object is verkregen.

RMI-architectuur

Hieronder vindt u het diagram van RMI-architectuur op een eenvoudige manier. Op internet vindt u verschillende vormen van dezelfde architectuur, maar we hebben een eenvoudige die u helpt het beter uit te leggen.

Laten we beginnen met het verbinden van punten vanuit een ontwerpperspectief met een architectuurdiagram.

De client-applicatie en server-applicatie zijn de respectieve JVM's van de client-machine en server-machine. In de RMI-applicatie schrijven we respectievelijk twee programma's; het clientprogramma dat zich op de client bevindt en het serverprogramma dat zich op de servermachine bevindt.

Toepassingslaag:

Deze laag zijn de feitelijke systemen, dwz client en server die bij communicatie betrokken zijn. Het Java-programma aan de clientzijde communiceert met het Java-programma aan de serverzijde.

Stomp:

Van ontwerpintro hebben we klantobjecten; In RMI-architectuur staat het bekend als Stub. Het is een object dat zich op de clientcomputer bevindt en het fungeert als een proxy voor het externe object. Het is als een gateway voor het clientprogramma.

De stub heeft dezelfde methoden als een extern object. Wanneer de client het stub-object aanroept, stuurt de stub dit verzoek door naar een extern object (skelet) via RMI-infrastructuur die vervolgens op de server wordt uitgevoerd.

Stub Voert de volgende evenementen uit: -

  1. Brengt verbinding tot stand met externe JVM,
  2. Schrijft en verzendt (Marshals) parameters naar externe JVM,
  3. Wacht op het resultaat,
  4. Leest (Unmarshalls) het geretourneerde resultaat,
  5. Geef het ontvangen resultaat door aan de beller.

Skelet:

Het serverobject dat zich op een server bevindt, wordt Skeleton genoemd. Stub communiceert met een servertoepassing met behulp van een tussenliggend Skeleton-object.

De verantwoordelijkheid van het skeletobject is om parameters te verzenden naar de implementatie van de methode en de retourwaarden terug te sturen naar de client.

Skeleton Voert de volgende evenementen uit: -

  1. Leest de parameter doorgegeven door de client,
  2. Roept de methode aan op het werkelijke externe object,
  3. Verzend / geef het resultaat door aan de beller.

Stomp / skeletlaag:

  • De laag Stub / Skeleton is verantwoordelijk voor het onderscheppen van oproepen door de client en het doorsturen van deze oproepen naar het externe object. Deze laag wordt ook wel proxylaag genoemd. Stub en Skeleton zijn de proxy's voor client en server. De objecten Stub en Skeleton zijn als een interface tussen een applicatie en de rest van het RMI-systeem.
  • Het doel van deze laag is om gegevens over te dragen naar de externe referentielaag via objectserialisatie. Dit proces van het converteren van gegevens / objecten in bytestream staat bekend als Marshalling en het omgekeerde staat bekend als Unmarshalling. Het rangschikken wordt uitgevoerd wanneer het object bij de server wordt opgevraagd en het verwijderen van gegevens wordt uitgevoerd wanneer gegevens / objectreferentie van de server wordt ontvangen.

Externe referentielaag:

  • De proxylaag is verbonden met het RMI-mechanisme via Remote Reference Layer. Deze laag is verantwoordelijk voor communicatie en overdracht van objecten tussen client en server. De invocatiesemantiek van de RMI-verbinding wordt gedefinieerd en ondersteund door deze laag.
  • Remote Reference Layer is verantwoordelijk voor het onderhoud van de sessie tijdens de methodeaanroep. dat wil zeggen, het beheert de verwijzingen van de client naar het externe serverobject. Deze laag is ook verantwoordelijk voor het verwerken van dubbele objecten.

Transport laag:

De transportlaag is verantwoordelijk voor het opzetten van communicatie tussen de twee machines. Deze laag gebruikt standaard TCP / IP-protocol voor verbinding. Het feitelijke transport van gegevens wordt via deze laag uitgevoerd. Deze laag is onderdeel van Remote Reference Layer.

Conclusie

  • De Remote Method Invocation (RMI) is een zeer nuttige API in JAVA die helpt bij de communicatie tussen twee verschillende JVM's. Hiermee kan een object een methode aanroepen voor een object dat zich in een andere adresruimte bevindt.
  • Het biedt een veilige manier voor applicaties om met elkaar te communiceren. Het bereikt deze functionaliteit door middel van concepten Stub (Client calling object) en Skeleton (Remote object dat zich op de server bevindt).
  • RMI wordt gebruikt om gedistribueerde applicaties te bouwen. Het behoudt het soort veiligheid. RMI-architectuur minimaliseert de complexiteit van de applicatie in een gedistribueerde architectuur.

Aanbevolen artikelen

Dit is een gids voor RMI Architecture geweest. Hier bespreken we het RMI-ontwerp en de architectuur in detail met een geschikt blokdiagram. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Data Warehouse-architectuur
  2. Wat is het TCP-protocol?
  3. Wat is Desktop Software?
  4. Vragen tijdens solliciteren bij CCNA