Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ RPC και RMI

RPC και RMI είναι οι μηχανισμοί που επιτρέπουν σε έναν πελάτη να επικαλείται τη διαδικασία ή τη μέθοδο από το διακομιστή μέσω της καθιέρωσης επικοινωνίας μεταξύ πελάτη και διακομιστή. Η κοινή διαφορά μεταξύ RPC και RMI είναι ότι το RPC υποστηρίζει μόνο τον προγραμματισμό, ενώ το RMI υποστηρίζει αντικειμενοστραφή προγραμματισμό .

Μια άλλη σημαντική διαφορά μεταξύ των δύο είναι ότι οι παράμετροι που διαβιβάζονται σε απομακρυσμένες κλήσεις διαδικασιών αποτελούνται από συνήθεις δομές δεδομένων . Από την άλλη πλευρά, οι παράμετροι που διαβιβάζονται σε απομακρυσμένη μέθοδο αποτελούνται από αντικείμενα .

Συγκριτικό διάγραμμα

Βάση σύγκρισηςRPCRMI
ΥποστηρίζειΔιαδικαστικός προγραμματισμός
Αντικειμενοστραφής προγραμματισμός
ΠαράμετροιΟι συνήθεις δομές δεδομένων διαβιβάζονται σε απομακρυσμένες διαδικασίες.Τα αντικείμενα μεταβιβάζονται σε απομακρυσμένες μεθόδους.
ΑποδοτικότηταΚάτω από το RMIΠερισσότερο από το RPC και υποστηρίζεται από τη σύγχρονη προσέγγιση προγραμματισμού (δηλαδή αντικειμενοστρεφή παραδείγματα)
Γενικά έξοδαΠερισσότερο
Λιγότερο συγκριτικά
Οι παράμετροι "out-out" είναι υποχρεωτικές.ΝαίΟχι απαραίτητα
Παροχή ευκολίας προγραμματισμού
Υψηλός
χαμηλός

Ορισμός RPC

Η κλήση απομακρυσμένης διαδικασίας (RPC) είναι μια λειτουργία γλώσσας προγραμματισμού που σχεδιάστηκε για τον κατανεμημένο υπολογισμό και βασίζεται στη σημασιολογία των κλήσεων τοπικής διαδικασίας . Πρόκειται για τις πιο κοινές μορφές απομακρυσμένης υπηρεσίας και σχεδιάστηκε ως ένας τρόπος αφηρημένης χρήσης του μηχανισμού κλήσης διαδικασίας για χρήση μεταξύ συστημάτων που είναι συνδεδεμένα μέσω δικτύου. Είναι παρόμοιο με τον μηχανισμό IPC, όπου το λειτουργικό σύστημα επιτρέπει στις διαδικασίες να διαχειρίζονται τα κοινά δεδομένα και να ασχολούνται με ένα περιβάλλον όπου οι διαφορετικές διαδικασίες εκτελούνται σε ξεχωριστά συστήματα και απαραιτήτως απαιτούν επικοινωνία βασισμένη σε μηνύματα.

Ας καταλάβουμε πώς εφαρμόζεται το RPC μέσω των συγκεκριμένων βημάτων:

  • Η διαδικασία πελάτη καλεί τον παραλήπτη πελάτη με παραμέτρους και η εκτέλεση του αναστέλλεται μέχρι να ολοκληρωθεί η κλήση.
  • Οι παράμετροι στη συνέχεια μεταφράζονται σε ανεξάρτητη από μηχανή μορφή με την ταξινόμηση μέσω του stub πελάτη. Στη συνέχεια προετοιμάζεται το μήνυμα το οποίο περιέχει την παράσταση των παραμέτρων.
  • Για να βρείτε την ταυτότητα του ιστότοπου, ο πελάτης stub συνδέεται με το διακομιστή ονομάτων στο οποίο υπάρχει απομακρυσμένη διαδικασία.
  • Χρησιμοποιώντας το πρωτόκολλο αποκλεισμού, ο παραλήπτης πελάτη στέλνει το μήνυμα στον ιστότοπο όπου υπάρχει κλήση απομακρυσμένης διαδικασίας. Αυτό το βήμα σταματάει το στέλεχος του πελάτη μέχρι να λάβει απάντηση.
  • Ο ιστότοπος του διακομιστή λαμβάνει το μήνυμα που αποστέλλεται από την πλευρά του πελάτη και το μετατρέπει σε μορφή συγκεκριμένης μηχανής.
  • Τώρα, το stub server εκτελεί μια κλήση στη διαδικασία του διακομιστή μαζί με τις παραμέτρους και το στέλεχος του διακομιστή διακόπτεται μέχρι να ολοκληρωθεί η διαδικασία.
  • Η διαδικασία του διακομιστή επιστρέφει τα παραγόμενα αποτελέσματα στο στέλεχος του διακομιστή και τα αποτελέσματα μετατρέπονται σε μορφή ανεξάρτητη από το μηχάνημα στο στέλεχος του διακομιστή και δημιουργούν ένα μήνυμα που περιέχει τα αποτελέσματα.
  • Το αποτέλεσμα του μηνύματος αποστέλλεται στο στέλεχος του πελάτη, το οποίο μετατρέπεται εκ νέου σε συγκεκριμένη μορφή μηχανής κατάλληλη για το στέλεχος πελάτη.
  • Ο τελευταίος πελάτης, stub επιστρέφει τα αποτελέσματα στη διαδικασία του πελάτη.

Ορισμός του RMI

Η απομακρυσμένη μέθοδος κλήσης (RMI) είναι παρόμοια με RPC, αλλά είναι γλώσσα συγκεκριμένη και ένα χαρακτηριστικό της java. Ένα νήμα επιτρέπεται να καλέσει τη μέθοδο σε ένα απομακρυσμένο αντικείμενο. Για να διατηρήσει τη διαφάνεια στην πλευρά του πελάτη και του διακομιστή, υλοποιεί το απομακρυσμένο αντικείμενο χρησιμοποιώντας στρογγυλά και σκελετούς. Το στέλεχος βρίσκεται με τον πελάτη και για το απομακρυσμένο αντικείμενο συμπεριφέρεται ως διακομιστής μεσολάβησης.

Όταν ένας πελάτης καλεί μια απομακρυσμένη μέθοδο, καλείται το stub για την απομακρυσμένη μέθοδο. Το στέλεχος πελάτη είναι υπεύθυνο για τη δημιουργία και την αποστολή του δέματος που περιέχει το όνομα μιας μεθόδου και τις παρατιθέμενες παραμέτρους και ο σκελετός είναι υπεύθυνος για την παραλαβή του δέματος.

Ο σκελετός καταργεί τις παραμέτρους και επικαλείται την επιθυμητή μέθοδο στο διακομιστή. Ο σκελετός τοποθετεί τη δεδομένη τιμή (ή εξαιρέσεις) με το δέμα και το στέλνει στον πελάτη. Το στέλεχος επανασυνδέει το δέμα επιστροφής και το στέλνει στον πελάτη.

Στην Java, οι παράμετροι μεταβιβάζονται σε μεθόδους και επιστρέφονται με τη μορφή αναφοράς. Αυτό θα μπορούσε να είναι ενοχλητικό για την υπηρεσία RMI αφού δεν είναι όλα αντικείμενα πιθανώς απομακρυσμένες μέθοδοι. Πρέπει λοιπόν να καθορίσει ποιο θα μπορούσε να μεταφερθεί ως αναφορά και το οποίο δεν θα μπορούσε.

Η Java χρησιμοποιεί μια διαδικασία που ονομάζεται σειριοποίηση, όπου τα αντικείμενα μεταβιβάζονται ως τιμή. Το απομακρυσμένο αντικείμενο εντοπίζεται με βάση την τιμή. Μπορεί επίσης να μεταβιβάσει ένα αντικείμενο με παραπομπή μέσω της μετάδοσης μιας απομακρυσμένης αναφοράς στο αντικείμενο μαζί με τη διεύθυνση URL της κλάσης stub. Το Pass by reference περιορίζει ένα στέλεχος για το απομακρυσμένο αντικείμενο.

Βασικές διαφορές μεταξύ RPC και RMI

  1. Το RPC υποστηρίζει παραδείγματα διαδικαστικού προγραμματισμού, επομένως βασίζεται στο C, ενώ το RMI υποστηρίζει παραδειγματικά προγραμματισμένα αντικείμενα και βασίζεται σε java.
  2. Οι παράμετροι που διαβιβάζονται σε απομακρυσμένες διαδικασίες στο RPC είναι οι συνήθεις δομές δεδομένων. Αντίθετα, το RMI μετακινεί αντικείμενα ως παράμετρος στην απομακρυσμένη μέθοδο.
  3. Το RPC μπορεί να θεωρηθεί ως η παλαιότερη έκδοση του RMI και χρησιμοποιείται στις γλώσσες προγραμματισμού που υποστηρίζουν τον διαδικαστικό προγραμματισμό και μπορεί να χρησιμοποιήσει μόνο μέθοδο pass by value. Αντιθέτως, η διευκόλυνση της RMI σχεδιάζεται με βάση τη σύγχρονη προσέγγιση προγραμματισμού, η οποία θα μπορούσε να χρησιμοποιήσει τη μετάβαση από την αξία ή την αναφορά. Ένα άλλο πλεονέκτημα του RMI είναι ότι οι παράμετροι που πέρασαν με αναφορά μπορούν να αλλάξουν.
  4. Το πρωτόκολλο RPC παράγει περισσότερα γενικά έξοδα από το RMI.
  5. Οι παράμετροι που διαβιβάζονται στο RPC πρέπει να είναι " in-out ", πράγμα που σημαίνει ότι η τιμή που μεταφέρεται στη διαδικασία και η τιμή εξόδου πρέπει να έχουν τους ίδιους τύπους δεδομένων. Αντίθετα, δεν υπάρχει κανένας καταναγκασμός να περάσει παράμετροι " in-out " στο RMI.
  6. Στην RPC, οι αναφορές δεν θα μπορούσαν να είναι πιθανές επειδή οι δύο διεργασίες έχουν τον ξεχωριστό χώρο διευθύνσεων, αλλά είναι δυνατόν σε περίπτωση RMI.

συμπέρασμα

Τόσο το RPC όσο και το RMI εξυπηρετούν τον ίδιο σκοπό, αλλά χρησιμοποιούνται σε γλώσσες που υποστηρίζουν διαφορετικά παραδείγματα προγραμματισμού, επομένως έχουν ξεχωριστά χαρακτηριστικά.

Top