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

תוכן שנמחק תוכן שנוסף
Matanyabot (שיחה | תרומות)
מ בוט: מתקן הפניות
מ שוחזר מעריכות של Matanyabot (שיחה) לעריכה האחרונה של Luckas-bot
שורה 1:
{{OSI}}
{{Tcp/ip}}
'''הפעלת פרוצדורות מרוחקות''' (ב[[אנגלית]]: '''Remote Procedure Call''' או '''RPC''') היא טכנולוגיה לתקשורת בין [[יישום מחשב|יישומים]] המאפשרת ל[[תוכנית מחשב]] להפעיל [[שגרהפונקציה (תכנות)|פרוצדורה]] ב[[מרחב כתובות]] אחר (בדרך כלל ב[[מחשב]] אחר) באופן שקוף, כלומר ללא צורך ביישום פרטני של פרוטוקול התקשורת. באמצעות '''RPC''' [[מתכנתמפתח (מקצוע)|מפתח]] ה[[תוכנה]] יכול לכתוב את אותו הקוד בין אם הוא רץ מקומית על המחשב המריץ אותו או על מחשב מרוחק ב[[תקשורתרשת נתוניםמחשבים|רשת]].
 
באמצעות RPC ניתן לממש תקשורת [[שרת-לקוח|שרת לקוח]], כך שהלקוח מפעיל על השרת את הפונקציה הרצויה תוך העברת הפרמטרים הנדרשים וממתין ממנו לקבלת התשובה, שבמרבית הפעמים עד לקבלתה הלקוח לא יכול להמשיך בפעולתו.
 
הבדל משמעותי בין הרצת הפונקציה מקומית לבין הרצתה באופן מרוחק הוא היכולת להבין את תוצאת פעולתה במידה של תקלה ברשת. אם הפונקציה נכשלה בהרצתה מרחוק, המחשב המקומי לא יכול לדעת האם היא בוצעה או לא. אם הפונקציה [[אידמפוטנט|אידמפוטנטית]] (כלומר שהרצתה יותר מפעם אחת לא משנה דבר במערכת) אזי הבעיה פתורה שכן ניתן להריצה שוב ושוב עד להצלחה ודאית. אולם אם הפונקציה אינה כזו, יש להתייחס למשמעות הכישלון בהרצתה ולהגיב בהתאם, במיוחד אם מדובר במערכות עדינות.
שורה 10:
{{להשלים|סיבה=התייחסות ל-.NET ולמימושים מאוחרים יותר}}
 
הרעיון שעומד בבסיס RPC הוזכר כבר בשנת [[1976]] ב-RFC מס' 707.<ref>[http://tools.ietf.org/html/rfc707 RFC 707], [[Internet Engineering Task Force|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 של המאה ה-20|שנות ה-90]], חברת [[מיקרוסופט]] הרחיבה את DCE/RPC ויצרה מימוש עצמאי נוסף למנגנון RPC, שנקרא [[MSRPC]] (קיצור של Microsoft RPC). מעל ה-MSRPC מומש [[Distributed Component Object Model|DCOM]] שבמשך שנים היה ה-[[ממשק תכנות יישומים|API]] שמערכת ההפעלה [[microsoft Windows|חלונות]] סיפקה לתקשורת בין תהליכים.
 
באותה התקופה הציגו גם חברת [[פארק (חברה)|זירוקס פארק]] את [[ILU]], ו-[[Object Management Group]] את [[CORBA]] - מימושים נוספים ל-RPC המאפשרים [[תכנותירושה מונחה(מדעי עצמיםהמחשב)|ירושה]].
 
==שימושים נוספים וסטנדרטיזציה==
הפרוטוקלים [[DCOM]] של [[microsoft Windows|חלונות]], פרוטוקול [[RMI]] של [[Java|JAVA]] ופרוטוקול [[SOAP]] ב[[אינטרנט]]-[[World Wide Web|WWW]] הם דוגמאות לשימושים כאלו. כדי לאפשר לשרת אחד לשרת לקוחות המשתמשים בפרוטוקולים שונים, הוצעו מספר מערכות סטנדרטיות היודעות לבצע זאת, רובן משתמש ב[[קובץ]] [[IDL]] (קיצור של interface description language) כדי לאפשר למערכות השונות לפנות ל-RPC בפורמט הנכון. קובץ ה-IDL משולב בקוד של הלקוח והשרת באמצעות כלים מיוחדים המבצעים זאת, הנפוץ מביניהם הוא RPCGEN.
 
== ראו גם ==