היכרות עם שירותי RESTful עם WCF - פיתוח אפליקציות לנייד, שירותי אינטרנט, ארכיטקטורת SOA - טכנולוגיה
דלג לתוכן

מבוא לשירותי RESTful עם WCF - פיתוח אפליקציות לנייד, שירותי אינטרנט, ארכיטקטורת SOA

פרסומות

ראשית, שירותי RESTFUL עוקבים אחר סגנון אדריכלי המכונה העברת מדינה ייצוגית (REST). סגנון אדריכלי הוא אוסף של אילוצים שניתן ליישם בעת בניית משהו. וסגנון ארכיטקטורת תוכנה הוא משהו שמתאר את המאפיינים שניתן להשתמש בהם כדי להנחות את היישום של מערכת תוכנה. REST הוא סגנון ארכיטקטוני שניתן להשתמש בו לבניית תוכנה שבה לקוחות (סוכני משתמש) יכולים להגיש בקשות לשירותים (נקודות קצה). REST היא דרך ליישם סגנון אדריכלי של לקוח/שרת; למעשה, REST מבוסס במפורש על הסגנון האדריכלי של הלקוח/שרת.

אדם בשם רוי תומס פילדינג טבע לראשונה את המונח REST כמושג בעבודת הדוקטורט שלו ("סגנונות ארכיטקטורה ועיצוב ארכיטקטורות תוכנה מבוססות רשת"). הוא היה אחד האנשים שעבדו על המפרט שמניע את רוב האינטרנט כיום: Hypertext Transfer Protocol (HTTP) בדרך כלל הרקע של אנשים שמתארים סגנון אדריכלי לא רלוונטי להסבר על הסגנון, אבל כאן אני חושב שזה חשוב כי אני מאמין שאחת הדרכים הטובות ביותר לקבל הבנה בסיסית של REST היא לחשוב על האינטרנט וכיצד הוא פועל.

WCF ו-REST

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

אמנם זה נכון שחלק גדול מ-WCF מוכוון RPC (באמצעות SOAP), למעשה הייתה לו הזדמנות לחשוף ולצרוך שירותי REST מאז שיצא לראשונה כחלק מ-.NET Framework 3.0. עם מכלול ה-.NET Framework 3.5 System.ServiceModel.Web, נוסף מודל תכנות וגם כמה חלקי תשתית שנבנו כדי לעבוד עם סגנון REST. ו-.NET Framework 3.5 SP1 מוסיף כמה שיפורים קטנים כדי להקל על השימוש ב-REST..

מודל התכנות סובב סביב שתי תכונות חדשות, WebGetAttribute ו-WebInvokeAttribute, ומנגנון תבנית URI המאפשר להכריז על ה-URI והפועל שכל שיטה תגיב אליהם. תשתית כלולה בצורה של כריכה (WebHttpBinding) והתנהגות (WebHttpBehavior) המספקות את מחסנית הרשת הנכונה לשימוש ב-REST. בנוסף, יש קצת עזרה בתשתית אירוח מ-ServiceHost מותאם אישית (WebServiceHost) ו-ServiceHostFactory (WebServiceHostFactory).