Panoramica dell'architettura RMI

Nell'architettura delle applicazioni distribuite, è sempre necessario comunicare tra due diverse applicazioni. Nelle applicazioni basate su Java, un'applicazione comunica con un'altra applicazione remota / diversa in esecuzione altrove utilizzando un meccanismo chiamato architettura RMI.

RMI è l'acronimo di Remote Method Invocation. È un'API fornita da Java che consente a un oggetto residente in una JVM (Java Virtual Machine) di accedere o invocare un oggetto in esecuzione su un'altra JVM. L'altra JVM potrebbe trovarsi sulla stessa macchina o macchina remota. Questa è una caratteristica interessante perché nelle applicazioni in tempo reale diventa molto facile per le applicazioni Java comunicare direttamente tra loro senza alcun meccanismo di comunicazione esterno. Inoltre, è sempre necessaria una comunicazione sicura tra applicazioni basate su un'architettura di applicazione distribuita.

Design RMI

Prima di entrare nell'architettura dettagliata, capiremo il design di base dell'architettura RMI.

  • L'API RMI è fornita nel pacchetto java.rmi. Introduciamo due termini per la comprensione dell'architettura di progettazione RMI. Il primo è il cliente; la JVM che chiamerà l'oggetto remoto e la seconda è il server; la JVM che contiene l'oggetto remoto. Pertanto, il client chiamerà il server, in questo caso sull'oggetto per il richiamo del metodo.
  • Il server restituirà quindi il riferimento dell'oggetto al client. Il problema qui è che entrambi gli oggetti, cioè locale e remoto, appariranno come oggetti locali sul server. Non ci sarà differenziazione tra i due. Anche la sintassi dei metodi di entrambi gli oggetti è la stessa. Pertanto, il server JVM si comporta come il normale JVM senza conoscere alcun oggetto, sia esso locale o remoto.
  • Lo stesso oggetto può essere sia un server che un client. Si ottiene il riferimento agli oggetti remoti e viene utilizzato come se fosse un oggetto locale. L'infrastruttura RMI è responsabile della ricerca dell'oggetto remoto, dell'intercettazione della chiamata del metodo e dell'elaborazione della richiesta remota da remoto. Il client richiama i metodi sull'oggetto solo dopo aver ottenuto un riferimento a un oggetto remoto.

Architettura RMI

Di seguito è riportato il diagramma dell'architettura RMI in modo semplice. Su Internet troverai varie forme della stessa architettura, ma ne abbiamo una semplice che ti aiuterà a spiegarla meglio.

Cominciamo collegando i punti da una prospettiva di progettazione con un diagramma di architettura.

L'applicazione client e l'applicazione server sono le rispettive JVM della macchina client e della macchina server. Nell'applicazione RMI scriviamo rispettivamente due programmi; il programma client che risiede sul programma client e server che risiede sul computer server.

Livello applicazione:

Questo livello è rappresentato dai sistemi attuali, vale a dire client e server, coinvolti nella comunicazione. Il programma java sul lato client comunica con il programma java sul lato server.

stub:

Dall'introduzione al design, abbiamo oggetti client; Nell'architettura RMI è noto come Stub. È un oggetto che risiede sul computer client e funge da proxy per l'oggetto remoto. È come un gateway per il programma client.

Lo stub ha gli stessi metodi di un oggetto remoto. Quando il client chiama l'oggetto stub, lo stub inoltra questa richiesta a un oggetto remoto (Skeleton) tramite l'infrastruttura RMI che viene quindi eseguita sul server.

Stub Esegue i seguenti eventi: -

  1. Avvia connessione con JVM remota,
  2. Scrive e trasmette parametri (Marshals) alla JVM remota,
  3. Attende il risultato,
  4. Legge (Unmarshalls) il risultato restituito,
  5. Passa il risultato ricevuto al chiamante.

Scheletro:

L'oggetto server che risiede in una macchina server è noto come Skeleton. Stub comunica con l'applicazione server con l'aiuto di un oggetto Skeleton intermedio.

La responsabilità dell'oggetto scheletro è di inviare i parametri all'implementazione del metodo e inviare i valori di ritorno al client.

Scheletro Esegue i seguenti eventi: -

  1. Legge il parametro passato dal client,
  2. Richiama il metodo sull'oggetto remoto effettivo,
  3. Trasmette / passa il risultato al chiamante.

Stub / Skeleton layer:

  • Il livello Stub / Skeleton è responsabile dell'intercettazione delle chiamate effettuate dal client e del reindirizzamento di queste chiamate all'oggetto remoto. Questo livello è anche chiamato Proxy Layer. Stub e Skeleton sono i proxy per client e server. Gli oggetti Stub e Skeleton sono come un'interfaccia tra un'applicazione e il resto del sistema RMI.
  • Lo scopo di questo livello è trasferire i dati al livello di riferimento remoto tramite serializzazione degli oggetti. Questo processo di conversione di dati / oggetto nel flusso di byte è noto come Marshalling e il contrario è noto come Unmarshalling. Il marshalling viene eseguito quando si richiede l'oggetto dal server e Unmarshalling viene eseguito quando si riceve il riferimento dati / oggetto dal server.

Livello di riferimento remoto:

  • Il livello proxy è collegato al meccanismo RMI tramite il livello di riferimento remoto. Questo livello è responsabile della comunicazione e del trasferimento di oggetti tra client e server. La semantica di invocazione della connessione RMI è definita e supportata da questo livello.
  • Il livello di riferimento remoto è responsabile del mantenimento della sessione durante la chiamata del metodo. cioè Gestisce i riferimenti fatti dal client all'oggetto server remoto. Questo livello è anche responsabile della gestione di oggetti duplicati.

Strato di trasporto:

Il livello di trasporto è responsabile dell'impostazione della comunicazione tra le due macchine. Questo livello utilizza il protocollo TCP / IP standard per la connessione. Il trasporto effettivo di dati viene eseguito attraverso questo livello. Questo livello fa parte del livello di riferimento remoto.

Conclusione

  • Il Remote Method Invocation (RMI) è un'API molto utile fornita in JAVA che aiuta nella comunicazione tra due diverse JVM. Consente a un oggetto di invocare un metodo su un oggetto che risiede in un altro spazio di indirizzi.
  • Fornisce un modo sicuro per le applicazioni di comunicare tra loro. Raggiunge questa funzionalità mediante i concetti Stub (oggetto chiamante client) e Skeleton (oggetto remoto residente sul server).
  • RMI viene utilizzato per creare applicazioni distribuite. Preserva il tipo di sicurezza. L'architettura RMI riduce al minimo la complessità dell'applicazione in un'architettura distribuita.

Articoli consigliati

Questa è stata una guida all'architettura RMI. Qui discutiamo in dettaglio il design RMI e l'architettura con uno schema a blocchi appropriato. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. Architettura del data warehouse
  2. Cos'è il protocollo TCP?
  3. Che cos'è il software desktop?
  4. Domande di intervista CCNA

Categoria: