כיצד ליצור שירות RESTful ב- WCF

WCF (Windows Communication Foundation) היא פלטפורמת העברת הודעות מאובטחת, אמינה וניתנת להרחבה, שניתן להשתמש בה לבניית שירותי אינטרנט ב- .Net. הוא מספק מודל תכנות מאוחד לפיתוח יישומים מוכווני שירות.

אתה יכול להשתמש ב- WCF כדי לבנות שירותי RESTful ב- .NET. REST (העברת מצב ייצוגי) היא פרדיגמת אדריכלות התואמת את עקרונות הארכיטקטורה של REST. ארכיטקטורת REST מבוססת על תפיסת המשאבים: היא משתמשת במשאבים כדי לייצג את המצב והפונקציונליות של יישום. משאבים אלה מזוהים בתורם באמצעות URI באמצעות פרוטוקול HTTP.

יצירת שירות WCF

בחלק זה נחקור כיצד נוכל לבנות שירות RESTful ב- WCF. ראשית, בואו ניצור שירות WCF חדש ב- Visual Studio. לשם כך, בצע את השלבים המפורטים להלן. שים לב שכדי לבנות את היישום שמודגם במאמר זה השתמשתי ב- Visual Studio 2015 למרות שאתה יכול להשתמש ב- Visual Studio 2012 או 2013 גם כן.

  1. פתח את Visual Studio 2015
  2. בתפריט קובץ ב- Visual Studio IDE, לחץ על התחל -> קובץ -> חדש -> פרויקט
  3. לאחר מכן בחר WCF מרשימת תבניות הפרויקט המוצגות
  4. בחר "יישום שירות WCF" בחלונית הימנית
  5. ציין שם עבור פרויקט השירות WCF שלך ולחץ על אישור כדי לשמור אותו

זה ייצור פרויקט יישום שירות WCF חדש בשם שציינת. הפרויקט יכלול גם שירות ברירת מחדל לצורכי המחשה בלבד.

יישום שירות ה- WCF RESTful

כשעובדים עם WCF, ראשית עליך ליצור חוזה שירות ואז להגדיר את פעולות השירות או חוזי התפעול בו. בדרך כלל, שירות WCF כולל את הדברים הבאים:

  1. כיתת שירות
  2. חוזה שירות
  3. חוזה מבצע אחד או יותר
  4. נקודת קצה אחת או יותר
  5. סביבת אירוח

נעשה שימוש ב- ServiceContract כדי לציין את הפעולות הזמינות עבור לקוח השירות לצרוך. קטע הקוד הבא מראה כיצד נראה חוזה שירות - אנו נשנה זאת בהמשך כדי להפוך אותו למנוח.

 [ServiceContract]

    public interface ICustomerService

    {

        [OperationContract]

        List GetCustomerList();

    }

DataContract משמש לתיאור הנתונים שצריך להחליף בין נותן השירות לצרכן השירות. שקול את DataContract הבא שנקרא לקוח.

[DataContract(Namespace = "")]

public class Customer

    {

        [DataMember]

        public Int32 CustomerID { get; set; }

        [DataMember]

        public string FirstName { get; set; }

        [DataMember]

        public string LastName { get; set; }

        [DataMember]

        public String Address { get; set; }

    }

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

[OperationContract]

        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json,

        BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetCustomers")]

List GetCustomerList();

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

public interface ICustomerService

    {

        [OperationContract]

        [WebInvoke(Method = "GET",

            ResponseFormat = WebMessageFormat.Json,

            BodyStyle = WebMessageBodyStyle.Wrapped,

            UriTemplate = "GetCustomers")]

        List GetCustomerList();

    }

מחלקת CustomerService מאריכה את חוזה השירות ICustomerService ומספקת את יישום פעולת השירות בשם GetCustomerList. כך ייראה מחלקת CustomerService.

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

    public class CustomerService : ICustomerService

    {     

        public List GetCustomerList()

        {

            return PopulateCustomerData();

        }

        private List PopulateCustomerData()

        {

            List lstCustomer = new List();

            Customer customer1 = new Customer();

            customer1.CustomerID = 1;

            customer1.FirstName = "John";

            customer1.LastName = "Meaney";

            customer1.Address = "Chicago";

            lstCustomer.Add(customer1);

            Customer customer2 = new Customer();

            customer2.CustomerID = 1;

            customer2.FirstName = "Peter";

            customer2.LastName = "Shaw";

            customer2.Address = "New York";

            lstCustomer.Add(customer2);

            return lstCustomer;

        }

    }

שים לב ששיטת PopulateCustomerData אינה שיטת שירות; זו שיטה פרטית המחזירה רשימת רשומות לקוחות ונקראת משיטת השירות GetCustomerList.

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

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

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