Remote Method Invocation: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
m smistamento lavoro sporco e fix vari
 
(38 versioni intermedie di 32 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 [[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]], 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]].
==Collegamenti esterni==
 
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]].
* [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]
 
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.
[[Categoria:Java]]
 
== Voci correlate ==
[[ar:تقنية استدعاء الطرائق عن بعد]]
* [[de:Enterprise JavaBeans]], la più diffusa piattaforma per effettuare Remote Method Invocation]].
 
[[en:Java remote method invocation]]
== Collegamenti esterni ==
[[es:RMI]]
* [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
[[fr:Remote method invocation (Java)]]
* [{{cita web|http://trmi.sourceforge.net/ |RMI trasparente]}}
[[ja:Java RMI]]
 
[[ko:RMI]]
{{portale|informatica}}
[[lt:RMI]]
 
[[nl:Remote Method Invocation]]
[[Categoria:Piattaforma Java]]
[[pl:RMI]]
[[pt:RMI]]
[[ru:RMI]]
[[sv:RMI]]
[[zh:Java RMI]]