# SYD - TP 1 (QBO / LDU / CTH) [Sujet](https://github.com/INSA-TC/rpc/tree/master/sujet) ###### tags : `SYD` `TP` ## RPC (Remote Procedure Call) - 4h Le but du td et du tp associé est de fabriquer un système rpc minimaliste. A la fin des deux séances (et de quelques heures de travail personnel) vous devez comprendre à quoi servent les systèmes rpc. Quelles sont les difficultés de mise en oeuvre, et les éléments commun à tous ces systèmes. **Un système rpc est un système capable d'invoquer des fonctions entre deux machines autonomes** Que signifie cette dernière phrase ? **La question posée est la suivante :** Comment faire pour qu'un code initialement développé de manière monolithique puisse être exécuté sur deux machines, sans avoir à réécrire du code spécifique ? Exemple monolithique : ```java package rpc; public class Client { public static void main(String [] arg) { Voiture v = new Voiture(); Trajet t = v.roule("Paris", "Marseille"); System.out.println(t); } } package rpc; public class Voiture { public Trajet roule(String from, String to) { return new Trajet(); } } package rpc; public class Trajet { } ``` Vous pouvez compiler et tester ce code pour constater qu'il fonctionne. ```bash $ javac -d . *.java $ java rpc.Client rpc.Trajet@3764951d ``` ### Problématique Comment transformer ce code pour qu'il puisse s'exécuter sur deux machines distinctes ? Outre le fait que le résultat de l'exécution doit être le même, la question est de modifier le moins possible le code initial. ---