Bonjour,
Ceci est une question d'ordre général.
J'aimerais savoir réellement quelle est la différence entre
les socket et le rmi.
Lequel utiliser suivant quel besoin?
Bonjour,
Ceci est une question d'ordre général.
J'aimerais savoir réellement quelle est la différence entre
les socket et le rmi.
Lequel utiliser suivant quel besoin?
Si je me rappelle bien, RMI sert à exécuter des méthodes qui se trouvent sur une machine distante. Cela peut être utilisé par exemple pour soulager les machines clients de calculs lourds en consommation.
Les sockets ça te sert à transférer des données ( primitives ou objets ) entre deux machines.
Quelqun d'autre pour compléter ( notament sur RMI et ses intérêts ) ?
RMI permet à un client d'exécuter des objets instanciés sur des machines distantes, un peu comme Corba (il parait). Par exemple, pour exécuter des calculs lourds, mais aussi par exemple, pour mettre en place des solutions de peer2peer assez facilement (partage de donnée à accès protégé sur un réseau entre plusieurs client).
Les sockets c'est les fondements du réseau, on y fait passer des données quelconque que se soit du RMI, du http, du ftp ou autre.
En gros RMI est plus évolué conceptuellement parlant sur les sockets pour effectué des communication réseau.
Il ne faut pas tout confondre !
Le mécanisme des sockets, ou plus exactement l'API socket, permet d'établir une communication entre deux process (2 thread si on préfère).
Une socket est comme une prise électrique dont la localisation de fait par une numéro IP (associé adresse mac) et un numéro de port. C'est un peut comme de repérer une boite au lettre. Lorsque c'est repéré on peut y mettre les messages que l'on veut. Peut importe le protocole (langage).
C'est dissocié du RMI (également nommé RPC ou APD : appel de proc distante).
Bon lorsque la socket est établi, donc la boite au lettre on peut recevoir les messages qu'on veut.
Avec RMI le but est d'établir un protocol de communication tel qu'on peut invoquer une procédure distance (sur un autre processus). Pour cette invocation il faut bien sur la socket pour communiquer. Cependant RMI masque tout un tas de prb de protocoles de communication et assure la cohérence entre les programmes.
Si tu utilise pas RMI, tu peux produire ton propre protocole de communication et de coordination, mais dans tous les cas il te faudra ouvir un socket pour la communication.
Voilà tout
Exactement.
Le protocol RMI est très proche du corba. On crée des objets sur le serveur pui on génère des "stubs" coté clients. Il s'agit d'un objet ayant les même méthodes que l'objet serveur et dont l'implementation fait les requetes serveurs pour appeler la méthode correspondante.
Les paramètres d'entrée / sortie sont marshallés (ou sérializé).
Et tous ces envois de données se font grâce à une socket qui ouvre un "tub" tcp ou udp entre la machine cliente et le seveur.
Les web services c'est le meme topo. Ou lieu d'avoir des objets remote, on a des services. Au lieu d'avoir une socket statefull on a une stocket stateless qui envoie des données http SOAP.
En espérant que ca vous éclaire.
Partager