RPC εναντίον RMI
Η βασική διαφορά μεταξύ RPC και RMI είναι ότι το RPC είναι ένας μηχανισμός που επιτρέπει την κλήση μιας διαδικασίας σε έναν απομακρυσμένο υπολογιστή ενώ το RMI είναι η υλοποίηση του RPC στη java. Το RPC είναι ουδέτερο στη γλώσσα, αλλά υποστηρίζει μόνο πρωτόγονους τύπους δεδομένων που πρέπει να διαβιβαστούν. Από την άλλη πλευρά, το RMI περιορίζεται στην Java αλλά επιτρέπει τη διέλευση αντικειμένων. Το RPC ακολουθεί παραδοσιακές δομές διαδικαστικής γλώσσας ενώ το RMI υποστηρίζει αντικειμενοστραφή σχεδιασμό.
Τι είναι το RPC;
Το RPC, που σημαίνει Κλήση απομακρυσμένης διαδικασίας, είναι ένας τύπος επικοινωνίας μεταξύ διεργασιών. Αυτό επιτρέπει την κλήση μιας συνάρτησης σε μια άλλη διαδικασία που εκτελείται στον τοπικό υπολογιστή ή σε έναν απομακρυσμένο υπολογιστή. Αυτή η ιδέα εμφανίστηκε πριν από πολύ καιρό το 1980, αλλά η πρώτη διάσημη εφαρμογή εμφανίστηκε στο Unix.
Το RPC περιλαμβάνει πολλά βήματα. Ο πελάτης πραγματοποιεί μια κλήση διαδικασίας στον τοπικό υπολογιστή ως συνήθως. Η μονάδα που ονομάζεται στέλεχος πελάτη συλλέγει τα επιχειρήματα και δημιουργεί ένα μήνυμα και περνά στο λειτουργικό σύστημα, το λειτουργικό σύστημα κάνει μια κλήση συστήματος και στέλνει αυτό το μήνυμα στον απομακρυσμένο υπολογιστή. Το λειτουργικό σύστημα στον διακομιστή συλλέγει το μήνυμα και περνά στη μονάδα του διακομιστή που ονομάζεται στέλεχος διακομιστή. Στη συνέχεια, το στέλεχος διακομιστή καλεί τη διαδικασία στον διακομιστή. Τέλος, τα αποτελέσματα αποστέλλονται πίσω στον πελάτη.
Το πλεονέκτημα της χρήσης RPC είναι ότι είναι ανεξάρτητο στις λεπτομέρειες του δικτύου. Ο προγραμματιστής πρέπει απλώς να καθορίσει με αφηρημένο τρόπο, ενώ το λειτουργικό σύστημα θα φροντίσει τις λεπτομέρειες του εσωτερικού δικτύου. Έτσι, αυτό διευκολύνει τον προγραμματισμό και επιτρέπει στο RPC να λειτουργεί σε οποιοδήποτε δίκτυο παρά τις διαφορές φυσικού και πρωτοκόλλου. Οι υλοποιήσεις RPC υπάρχουν σε όλα τα κύρια λειτουργικά συστήματα όπως το Unix, το Linux, τα Windows και το OS X. Το RPC είναι γενικά ουδέτερο ως προς τη γλώσσα, επομένως περιορίζει τους τύπους δεδομένων στους πιο πρωτόγονους, αφού πρέπει να είναι κοινοί σε όλες τις γλώσσες. Η προσέγγιση στο RPC δεν είναι αντικειμενοστραφή, αλλά είναι ένας παραδοσιακός διαδικαστικός μηχανισμός όπως στο C.
Τι είναι το RMI;
Το RMI, που σημαίνει Remote Method Invocation, είναι ένα API (Application Programming Interface) που υλοποιεί το RPC σε java για να υποστηρίζει αντικειμενοστραφή φύση. Αυτό επιτρέπει την κλήση μεθόδων Java σε άλλη εικονική μηχανή Java που βρίσκεται στον ίδιο υπολογιστή ή σε απομακρυσμένο υπολογιστή. Ο περιορισμός του RMI είναι ότι μπορούν να κληθούν μόνο μέθοδοι Java, αλλά αυτό έχει το πλεονέκτημα ότι τα αντικείμενα μπορούν να περάσουν ως ορίσματα και να επιστρέψουν τιμές. Όταν θεωρείται η απόδοση, το RMI είναι πιο αργό από το RPC λόγω της συμμετοχής bytecode στην εικονική μηχανή Java, αλλά το RMI είναι πολύ φιλικό προς τον προγραμματιστή και είναι πολύ εύκολο στη χρήση.
Το RMI χρησιμοποιεί ενσωματωμένους μηχανισμούς ασφαλείας σε Java και παρέχει επίσης ένα εργοστάσιο υποδοχής που επιτρέπει τη χρήση πρωτοκόλλων προσαρμοσμένων επιπέδων μεταφοράς εκτός TCP. Επιπλέον, το RMI παρέχει μεθόδους παράκαμψης τείχη προστασίας. Τα βήματα που εμφανίζονται στο RMI είναι παρόμοια με το RPC. Η υλοποίηση του RMI φροντίζει για τις λεπτομέρειες του εσωτερικού δικτύου όπου ο προγραμματιστής δεν χρειάζεται να ανησυχεί για αυτές.
Ποια είναι η διαφορά μεταξύ RPC και RMI;
• Το RPC είναι ουδέτερο στη γλώσσα ενώ το RMI περιορίζεται σε Java.
• Το RPC είναι διαδικαστικό όπως στο C, αλλά το RMI είναι αντικειμενοστρεφές.
• Το RPC υποστηρίζει μόνο πρωτόγονους τύπους δεδομένων, ενώ το RMI επιτρέπει τη μετάδοση αντικειμένων ως ορίσματα και τιμές επιστροφής. Όταν χρησιμοποιεί RPC, ο προγραμματιστής πρέπει να διαχωρίσει τυχόν σύνθετα αντικείμενα σε πρωτόγονους τύπους δεδομένων.
• Το RMI είναι εύκολο να προγραμματιστεί αυτό το RPC.
• Το RMI είναι πιο αργό από το RPC, καθώς το RMI περιλαμβάνει την εκτέλεση bytecode java.
• Το RMI επιτρέπει τη χρήση μοτίβων σχεδίασης λόγω της αντικειμενοστρεφούς φύσης, ενώ το RPC δεν έχει αυτή τη δυνατότητα.
Σύνοψη:
RPC εναντίον RMI
Το RPC είναι ένας ουδέτερος μηχανισμός γλώσσας που επιτρέπει την κλήση μιας διαδικασίας σε έναν απομακρυσμένο υπολογιστή. Ωστόσο, η δυνατότητα ουδέτερης γλώσσας περιορίζει τους τύπους δεδομένων που μεταβιβάζονται ως ορίσματα και επιστρέφει τιμές σε πρωτόγονους τύπους. Το RMI είναι η υλοποίηση του RPC σε Java και υποστηρίζει επίσης τη μετάδοση αντικειμένων, διευκολύνοντας τη ζωή του προγραμματιστή. Το πλεονέκτημα του RMI είναι η αντικειμενοστρεφής υποστήριξη σχεδίασης, αλλά ο περιορισμός στην Java είναι ένα μειονέκτημα.