Remote Procedure Call

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
סיווג פרוטוקולים על פי מודל ה-OSI
שכבת יישום HTTP, SMTP, FTP, RTP, IRC, SNMP, SIP, DNS, DHCP
שכבת ייצוג MIME, ASCII, Unicode, SSL
שכבת שיחה ASP, PPTP, SSH, NFS, RPC, SOCKS
שכבת תעבורה TCP, UDP, SCTP, DCCP
שכבת רשת IP (IPv4, IPv6), ICMP, IPX , ניתוב
שכבת קו Ethernet, Token ring, FDDI
שכבה פיזית E1, 10Base-T, RS-232, DSL, SONET
פרוטוקולים במודל TCP/IP
שכבת יישום
HTTP, SMTP, FTP, DNS, DHCP, SSH, RTP, RTSP, IRC, SNMP, SIP, IMAP4, MIME, TELNET, RPC, SOAP, LDAP ...
שכבת תעבורה
TCP, UDP, SCTP, DCCP ...
שכבת רשת
IP, IPv4, IPv6, ICMP, ARP, IPX, IGMP ...
שכבת קשר
Ethernet, 10BASE-T, 802.11 WiFi, Token ring, FDDI ...
מבט כולל על RPC

הפעלת פרוצדורות מרוחקותאנגלית: Remote Procedure Call או RPC) היא טכנולוגיה לתקשורת בין יישומים המאפשרת לתוכנית מחשב להפעיל פרוצדורה במרחב כתובות אחר (בדרך כלל במחשב אחר) באופן שקוף, כלומר ללא צורך ביישום פרטני של פרוטוקול התקשורת. באמצעות RPC מפתח התוכנה יכול לכתוב את אותו הקוד בין אם הוא רץ מקומית על המחשב המריץ אותו או על מחשב מרוחק ברשת.

באמצעות RPC ניתן לממש תקשורת שרת לקוח, כך שהלקוח מפעיל על השרת את הפונקציה הרצויה תוך העברת הפרמטרים הנדרשים וממתין ממנו לקבלת התשובה, שבמרבית הפעמים עד לקבלתה הלקוח לא יכול להמשיך בפעולתו.

הבדל משמעותי בין הרצת הפונקציה מקומית לבין הרצתה באופן מרוחק הוא היכולת להבין את תוצאת פעולתה במידה של תקלה ברשת. אם הפונקציה נכשלה בהרצתה מרחוק, המחשב המקומי לא יכול לדעת האם היא בוצעה או לא. אם הפונקציה אידמפוטנטית (כלומר שהרצתה יותר מפעם אחת לא משנה דבר במערכת) אזי הבעיה פתורה שכן ניתן להריצה שוב ושוב עד להצלחה ודאית. אולם אם הפונקציה אינה כזו, יש להתייחס למשמעות הכישלון בהרצתה ולהגיב בהתאם, במיוחד אם מדובר במערכות עדינות.

היסטוריה ומקורות[עריכת קוד מקור | עריכה]

הרעיון שעומד בבסיס RPC הוזכר כבר בשנת 1976 ב-RFC מס' 707.‏[1]

בשנת 1981 חברת זירוקס פארק הייתה הראשונה שמימשה את הרעיון תחת השם "Courier". המימוש הנפוץ הראשון של הרעיון במסגרת מערכת ההפעלה Unix היה בשנת 1984 על ידי חברת סאן מיקרוסיסטמס תחת השם "ONC RPC", ושימש כתשתית ל-Network File System, ה-NFS, פרוטוקול המאפשר שיתוף קבצים ברשת. הפרוטוקול נמצא עד היום בשימוש נרחב במערכות הפעלה מבוססות Unix.

מימוש נוסף ל-RPC על גבי Unix היה של אפולו מחשבים, שמימשה באמצעותו את ה-"Network Computing System", ששימש בהמשך כיסוד למערכת RPC נוספת של ה-OSF שנקראה DCE/RPC. כעשור לאחר מכן, במהלך שנות ה-90, חברת מיקרוסופט הרחיבה את DCE/RPC ויצרה מימוש עצמאי נוסף למנגנון RPC, שנקרא MSRPC (קיצור של Microsoft RPC). מעל ה-MSRPC מומש DCOM שבמשך שנים היה ה-API שמערכת ההפעלה חלונות סיפקה לתקשורת בין תהליכים.

באותה התקופה הציגו גם חברת זירוקס פארק את ILU, ו-Object Management Group את CORBA - מימושים נוספים ל-RPC המאפשרים ירושה.

שימושים נוספים וסטנדרטיזציה[עריכת קוד מקור | עריכה]

הפרוטוקלים DCOM של חלונות, פרוטוקול RMI של JAVA ופרוטוקול SOAP באינטרנט-WWW הם דוגמאות לשימושים כאלו. כדי לאפשר לשרת אחד לשרת לקוחות המשתמשים בפרוטוקולים שונים, הוצעו מספר מערכות סטנדרטיות היודעות לבצע זאת, רובן משתמש בקובץ IDL (קיצור של interface description language) כדי לאפשר למערכות השונות לפנות ל-RPC בפורמט הנכון. קובץ ה-IDL משולב בקוד של הלקוח והשרת באמצעות כלים מיוחדים המבצעים זאת, הנפוץ מביניהם הוא RPCGEN.

ראו גם[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ RFC 707, IETF (באנגלית)