Remote Method Invocation: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m r2.6.4) (Bot: Modifico: pl:Remote Method Invocation
m smistamento lavoro sporco e fix vari
 
(24 versioni intermedie di 22 utenti non mostrate)
Riga 1:
{{C|Non viene detto nulla sull'architettura del contesto|informatica|giugno 2007|[[Utente:Otrebor79|Otrebor79]] 11:20, 7 giu 2007 (CEST)}}
{{F|programmazione|marzo 2021}}
 
In [[informatica]], e in particolare nel contesto del [[linguaggio di programmazione]] ''[[programmazione orientata agli oggetti|''object-oriented]]'']] [[Java (linguaggio di programmazione)|Java]], '''Remote Method Invocation''' (''invocazione remota di metodi'') o '''RMI''' è una tecnologia che consente a processi Java [[calcolo distribuito|distribuiti]] di comunicare attraverso una [[rete di computer|rete]]. Questa tecnologia include una [[Application programming interface|API]] (''application programming interface'') il cui scopo esplicito è quello di rendere [[trasparenza (informatica)|trasparenti]] al [[programmatore]] quasi tutti i dettagli della comunicazione su rete. Essa consente infatti di invocare un [[metodo]] di un oggetto remoto (cioè appartenente a un diverso [[processo (informatica)|processo]], potenzialmente su una diversa macchina) ''quasi come se'' tale oggetto fosse "locale" (ovvero appartenente allo stesso processo in cui viene eseguita l'invocazione). In questo senso, la tecnologia RMI può essere ricondotta, da un punto di vista concettuale, all'idea di [[chiamata di procedura remota]] riformulata per il [[paradigma di programmazione|paradigma]] ''object-oriented'' (in cui, appunto, le ''procedure'' sono sostituite da ''metodi'').
 
== Descrizione ==
L'utilizzo di un meccanismo di invocazione remota di metodi in un sistema ''object-oriented'' comporta notevoli vantaggi di omogeneità e simmetria nel progetto, poiché consente di modellare le interazioni fra processi distribuiti usando lo stesso strumento concettuale che si utilizza per rappresentare le interazioni fra i diversi oggetti di una applicazione, ovvero la chiamata di [[metodo]]. Per contro, [[meccanismi di comunicazione fra processi]] remoti più primitivi (come lo scambio messaggi) rappresentano una forma di interazione "estranea" al [[programmazione orientata agli oggetti|paradigma object-oriented]].
 
Questa tecnologia include una [[Application Programming Interface|API]] (''application programming interface'') il cui scopo esplicito è quello di rendere [[trasparenza (informatica)|trasparenti]] al [[programmatore]] quasi tutti i dettagli della comunicazione su rete. Essa consente infatti di invocare un [[metodo (informatica)|metodo]] di un oggetto remoto (cioè appartenente a un diverso [[processo (informatica)|processo]], potenzialmente su una diversa macchina) ''quasi come se'' tale oggetto fosse "locale" (ovvero appartenente allo stesso processo in cui viene eseguita l'invocazione). In questo senso, la tecnologia Remote Method Invocation può essere ricondotta, da un punto di vista concettuale, all'idea di [[chiamata di procedura remota]] (RPC) riformulata per il [[paradigma di programmazione|paradigma]] ''object-oriented'' (in cui, appunto, le ''[[funzione (informatica)|procedure]]'' sono sostituite da ''metodi'').
Il termine RMI identifica ufficialmente sia la API messa a disposizione del programmatore sia il [[protocollo di rete]] usato "dietro le quinte" per il dialogo fra le [[macchina virtuale Java|macchine virtuali Java]] coinvolte nella comunicazione. Dell'API e del protocollo esistono due implementazioni di uso comune. La prima (meno recente) ha nome '''JRMP''' (Java Remote Method Protocol) ed è implementata sul protocollo [[Transmission Control Protocol|TCP]]; la seconda, nota come '''RMI-IIOP''', è invece basata sul protocollo [[IIOP]] della piattaforma [[middleware]] [[CORBA]].
 
L'utilizzo di un meccanismo di invocazione remota di metodi in un sistema ''object-oriented'' comporta notevoli vantaggi di omogeneità e simmetria nel progetto, poiché consente di modellare le interazioni fra processi distribuiti usando lo stesso strumento concettuale che si utilizza per rappresentare le interazioni fra i diversi oggetti di una applicazione, ovvero la chiamata di [[Metodo (programmazione)|metodo]]. Per contro, [[meccanismi di comunicazione fra processi]] remoti più primitivi (come lo scambio messaggi) rappresentano una forma di interazione "estranea" al [[programmazione orientata agli oggetti|paradigma object-oriented]].
 
Il termine RMIRemote Method Invocation identifica ufficialmente sia la APIApplication Programming Interface messa a disposizione del programmatore sia il [[protocollo di rete]] usato "dietro le quinte" per il dialogo fra le [[macchina virtuale Java|macchine virtuali Java]] coinvolte nella comunicazione. Dell'APIApplication programming interface e del protocollo esistono due implementazioni di uso comune. La prima (meno recente) ha nome '''JRMP''' (''Java Remote Method Protocol'') ed è implementata sul protocollo [[Transmission Control Protocol|TCP]]; la seconda, nota come '''RMI-IIOP''', è invece basata sul protocollo [[IIOP]] della piattaforma [[middleware]] [[CORBA]].
 
Componente fondamentale è il registro Remote Method Invocation, che si occupa di registrare i server remoti e fornire le referenze remote ai richiedenti che effettuano una lookup su questo.
 
== Voci correlate ==
* [[Enterprise JavaBeans]], la più diffusa piattaforma per effettuare Remote Method Invocation.
 
== Collegamenti esterni ==
* [https://cajoweb.devarchive.org/web/20170206060021/https://java.net/projects/cajo/pages/Home cajo] Un ambiente semplice, potente e ''free'' per l'interazione fra macchine virtuali Java
* [{{cita web|http://trmi.sourceforge.net/ |RMI trasparente]}}
 
{{portale|informatica}}
* [http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/package-summary.html Sun: Java API Reference per RMI]
* [https://cajo.dev.java.net/ cajo] Un ambiente semplice, potente e ''free'' per l'interazione fra macchine virtuali Java
* [http://trmi.sourceforge.net/ RMI trasparente]
* [http://davis.jini.org/ Il progetto JERI]
 
[[Categoria:Piattaforma Java]]
[[Categoria:Linguaggio Java]]
 
[[ar:تقنية استدعاء الطرائق البعادي]]
[[cs:Java remote method invocation]]
[[de:Remote Method Invocation]]
[[en:Java remote method invocation]]
[[es:Java Remote Method Invocation]]
[[fr:Remote method invocation (Java)]]
[[ja:Java RMI]]
[[ko:자바 원격 함수 호출]]
[[lt:RMI]]
[[nl:Remote method invocation]]
[[pl:Remote Method Invocation]]
[[pt:RMI]]
[[ru:RMI]]
[[sv:Remote Method Invocation]]
[[uk:RMI]]
[[zh:Java RMI]]