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: -
- Avvia connessione con JVM remota,
- Scrive e trasmette parametri (Marshals) alla JVM remota,
- Attende il risultato,
- Legge (Unmarshalls) il risultato restituito,
- 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: -
- Legge il parametro passato dal client,
- Richiama il metodo sull'oggetto remoto effettivo,
- 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ù -
- Architettura del data warehouse
- Cos'è il protocollo TCP?
- Che cos'è il software desktop?
- Domande di intervista CCNA