Remote Procedure Call – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
הכללת הקיצור בפתיח
אין תקציר עריכה
שורה 1:
'''הפעלת פרוצדורות מרוחקות''' (ב[[אנגלית]]: ''Remote Procedure Call'' או '''RPC''') היא טכנולוגיה לתקשורת בין [[יישום מחשב|יישומים]] המאפשרת ל[[תוכנית מחשב]] להפעיל [[פונקציה (תכנות)|פרוצדורה]] ב[[מרחב כתובות]] אחר (בדרך כלל במחשבב[[מחשב]] אחר) באופן שקוף, כלומר ללא צורך ביישום פרטני של פרוטוקול התקשורת. באמצעות '''RPC''' [[מפתח (מקצוע)|מפתח]] ה[[תוכנה]] יכול לכתוב את אותו הקוד בין אם הוא רץ מקומית על המחשב המריץ אותו או על מחשב מרוחק ב[[רשת מחשבים|רשת]].
 
באמצעות RPC ניתן לממש תקשורת [[שרת לקוח]], כך שהלקוח מפעיל על השרת את הפונקציה הרצויה תוך העברת הפרמטרים הנדרשים וממתין ממנו לקבלת התשובה, שבמרבית הפעמים עד לקבלתה הלקוח לא יכול להמשיך בפעולתו.
הפרוטוקלים [[DCOM]] של [[חלונות]], פרוטוקול [[RMI]] של [[JAVA]] ופרוטוקול [[SOAP]] ב[[אינטרנט]]-[[WWW]] הם דוגמאות לשימושים כאלו. בדרך כלל ל-RPC יש קובץ של הגדרות הממשק הכולל הגדרות מהם המשתנים של הפונקציה, סוגם והאם הם קלט או פלט, או לחלופין את מבנה ההודעה.
 
הבדל משמעותי בין הרצת הפונקציה מקומית לבין הרצתה באופן מרוחק הוא היכולת להבין את תוצאת פעולתה במידה של תקלה ברשת. במידה והפונקציה נכשלה בהרצתה מרחוק, המחשב המקומי לא יכול לדעת האם היא בוצעה או לא. במידה והפונקציה [[אידמפוטנט|אידמפוטנטית]] (כלומר שהרצתה יותר מפעם אחת לא משנה דבר במערכת) אזי הבעיה פתורה שכן ניתן להריצה שוב ושוב עד להצלחה ודאית. אולם במידה והפונקציה אינה כזו, יש להתייחס למשמעות הכישלון בהרצתה ולהגיב בהתאם, במיוחד אם מדובר במערכות עדינות.
קובץ [[IDL]] מגדיר את מבנה ההודעות עבור פרוטוקול DCOM או [[CORBA]] וקובץ [[WSDL]] עבור פרוטוקול SOAP.
 
==היסטוריה ומקורות==
הרעיון שעומד בבסיס RPC הוזכר כבר בשנת [[1976]] ב-RFC מס' 707.<ref>[http://tools.ietf.org/html/rfc707 RFC 707], [[IETF]] {{אנגלית}}</ref>
 
בשנת [[1981]] חברת [[זירוקס פארק]] היתה הראשונה שמימשה את הרעיון תחת השם "Courier". המימוש הנפוץ הראשון של הרעיון במסגרת [[מערכת הפעלה|מערכת ההפעלה]] [[Unix]] היה בשנת [[1984]] על ידי חברת [[סאן מיקרוסיסטמס]] תחת השם "[[ONC RPC]]", ושימש כתשתית ל-[[Network File System]], ה-NFS, פרוטוקול המאפשר שיתוף [[קובץ|קבצים]] ברשת. הפרוטוקול נמצא עד היום בשימוש נרחב במערכות הפעלה מבוססות Unix.
 
מימוש נוסף ל-RPC על גבי Unix היה של [[אפולו מחשבים]], שמימשה באמצעותו את ה-"Network Computing System", ששימש בהמשך כיסוד למערכת RPC נוספת של ה-[[Open Software Foundation|OSF]] שנקראה [[DCE/RPC]]. כעשור לאחר מכן, במהלך [[שנות ה-90]], חברת [[מיקרוסופט]] הרחיבה את DCE/RPC ויצרה מימוש עצמאי נוסף למנגנון RPC, שנקרא [[MSRPC]] (קיצור של Microsoft RPC). מעל ה-MSRPC מומש [[Distributed Component Object Model|DCOM]] שבמשך שנים היה ה-[[API]] שמערכת ההפעלה [[חלונות]] סיפקה לתקשורת בין תהליכים.
 
באותה התקופה הציגו גם חברת [[זירוקס פארק]] את [[ILU]], ו-[[Object Management Group]] את [[CORBA]] - מימושים נוספים ל-RPC המאפשרים [[ירושה (מדעי המחשב)|ירושה]].
 
==שימושים נוספים וסטנדרטיזציה==
הפרוטוקלים [[DCOM]] של [[חלונות]], פרוטוקול [[RMI]] של [[JAVA]] ופרוטוקול [[SOAP]] ב[[אינטרנט]]-[[WWW]] הם דוגמאות לשימושים כאלו. כדי לאפשר לשרת אחד לשרת לקוחות המשתמשים בפרוטוקולים שונים, הוצעו מספר מערכות סטנדרטיות היודעות לבצע זאת, רובן משתמש ב[[קובץ]] [[IDL]] (קיצור של interface description language) כדי לאפשר למערכות השונות לפנות ל-RPC בפורמט הנכון. קובץ ה-IDL משולב בקוד של הלקוח והשרת באמצעות כלים מיוחדים המבצעים זאת, הנפוץ מביניהם הוא RPCGEN.
 
== ראו גם ==
* [[SOAP]]
 
== הערות שוליים ==
<references />
 
{{קצרמר|מחשבים}}
[[קטגוריה:תכנות]]