RPC לעומת RMI
ההבדל הבסיסי בין RPC ל-RMI הוא ש-RPC הוא מנגנון המאפשר קריאה לפרוצדורה במחשב מרוחק בעוד RMI הוא יישום של RPC ב-java. RPC הוא ניטרלי בשפה אך תומך רק בסוגי נתונים פרימיטיביים שיעברו. מצד שני, RMI מוגבל לג'אווה אך מאפשר העברת אובייקטים. RPC עוקב אחר בניית שפות פרוצדורליות מסורתיות בעוד RMI תומך בעיצוב מונחה עצמים.
מה זה RPC?
RPC, ראשי תיבות של Remote Procedure Call, הוא סוג של תקשורת בין תהליכים. זה מאפשר קריאה לפונקציה בתהליך אחר הפועל במחשב המקומי או במחשב מרוחק.הרעיון הזה הופיע לפני זמן רב ב-1980, אבל היישום המפורסם הראשון נראה ב-Unix.
RPC כולל מספר שלבים. הלקוח מבצע קריאת פרוצדורה במחשב המקומי כרגיל. המודול שנקרא client stub אוסף את הארגומנטים ויוצר הודעה ומעביר למערכת ההפעלה, מערכת ההפעלה עושה קריאת מערכת ושולחת את ההודעה הזו למחשב המרוחק. מערכת ההפעלה בשרת אוספת את ההודעה ועוברת למודול בשרת שנקרא server stub. ואז שרת stub קורא להליך בשרת. לבסוף, התוצאות נשלחות בחזרה ללקוח.
היתרון בשימוש ב-RPC הוא שהוא בלתי תלוי בפרטי הרשת. המתכנת רק צריך לציין בצורה מופשטת בזמן שמערכת ההפעלה תדאג לפרטי הרשת הפנימיים. אז זה מקל על התכנות ומאפשר ל-RPC לעבוד בכל רשת למרות ההבדלים הפיזיים והפרוטוקולים. הטמעות RPC קיימות בכל מערכות ההפעלה המיינסטרים כגון Unix, Linux, Windows ו-OS X. RPC הוא בדרך כלל ניטרלי בשפה ולכן הוא מגביל את סוגי הנתונים לפרימיטיביים ביותר מכיוון שהם חייבים להיות משותפים לכל השפות. הגישה ב-RPC אינה מכוונת עצמים, אלא היא מנגנון פרוצדורלי מסורתי כמו ב-C.
מה זה RMI?
RMI, ראשי תיבות של Remote Method Invocation, הוא API (ממשק תכנות יישומים) שמיישם RPC ב-Java כדי לתמוך בטבע מונחה עצמים. זה מאפשר קריאה לשיטות Java במחשב אחר של Java Virtual ששוכן באותו מחשב או במחשב מרוחק. המגבלה של RMI היא שניתן להפעיל רק שיטות Java, אך זה מגיע עם היתרון שניתן להעביר אובייקטים כארגומנטים וערכי החזרה.כאשר הביצועים נחשבים RMI איטי יותר מ-RPC עקב מעורבות של bytecode במחשב Java Virtual, אבל RMI הוא מאוד ידידותי למתכנת, והוא מאוד קל לשימוש.
RMI משתמש במנגנוני אבטחה מובנים ב-Java וגם נותן מפעל שקעים המאפשר שימוש בפרוטוקולי שכבת תעבורה מותאמים אישית שאינם TCP. יתרה מכך, RMI מספקת שיטות לעקוף חומות אש. השלבים המתרחשים ב-RMI דומים ל-RPC. הטמעת RMI דואגת לפרטי הרשת הפנימית במקום שהמתכנת לא צריך לדאוג להם.
מה ההבדל בין RPC ל-RMI?
• RPC הוא ניטרלי בשפה ואילו RMI מוגבל ל-Java.
• RPC הוא פרוצדורלי כמו ב-C, אבל RMI הוא מונחה עצמים.
• RPC תומך רק בסוגי נתונים פרימיטיביים בעוד RMI מאפשר להעביר אובייקטים כארגומנטים וערכי החזרה. בעת שימוש ב-RPC, על המתכנת לפצל כל אובייקט מורכב לסוגי נתונים פרימיטיביים.
• RMI קל לתכנת את ה-RPC הזה.
• RMI איטי יותר מ-RPC מכיוון ש-RMI כולל ביצוע של קוד בייט של java.
• RMI מאפשר שימוש בדפוסי עיצוב בשל אופי מונחה עצמים בעוד ל-RPC אין יכולת זו.
סיכום:
RPC לעומת RMI
RPC הוא מנגנון ניטרלי בשפה המאפשר קריאה של הליך במחשב מרוחק. עם זאת, תכונת השפה הנייטרלית מגבילה את סוגי הנתונים המועברים כארגומנטים ומחזירה ערכים לסוגים פרימיטיביים. RMI הוא יישום של RPC ב-Java והוא תומך גם בהעברת אובייקטים, מה שמקל על חיי המתכנת. היתרון של RMI הוא התמיכה בעיצוב מונחה עצמים, אך הגבלה ל-Java היא חיסרון.