Προγραμματισμός

Πώς να δημιουργήσετε μια υπηρεσία RESTful στο WCF

Το WCF (Windows Communication Foundation) είναι μια ασφαλής, αξιόπιστη και επεκτάσιμη πλατφόρμα ανταλλαγής μηνυμάτων που μπορεί να χρησιμοποιηθεί για τη δημιουργία υπηρεσιών Web στο .Net. Παρέχει ένα ενοποιημένο μοντέλο προγραμματισμού για την ανάπτυξη εφαρμογών προσανατολισμένων στις υπηρεσίες.

Μπορείτε να χρησιμοποιήσετε το WCF για να δημιουργήσετε υπηρεσίες RESTful στο .NET. Το REST (Representational State Transfer) είναι ένα πρότυπο αρχιτεκτονικής που συμμορφώνεται με τις αρχές αρχιτεκτονικής 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 Service Application" στο δεξί τμήμα του παραθύρου
  5. Καθορίστε ένα όνομα για το έργο υπηρεσίας WCF και κάντε κλικ στο OK για να το αποθηκεύσετε

Αυτό θα δημιουργούσε ένα νέο έργο εφαρμογής WCF Service στο όνομα που καθορίσατε. Το έργο θα περιέχει επίσης μια προεπιλεγμένη υπηρεσία μόνο για λόγους απεικόνισης.

Υλοποίηση της υπηρεσίας RESTful WCF

Όταν εργάζεστε με το WCF, πρέπει πρώτα να δημιουργήσετε μια σύμβαση παροχής υπηρεσιών και, στη συνέχεια, να ορίσετε τις λειτουργίες ή τις συμβάσεις λειτουργίας σε αυτήν. Συνήθως, μια υπηρεσία WCF περιλαμβάνει τα ακόλουθα:

  1. Κατηγορία υπηρεσιών
  2. Σύμβαση παροχής υπηρεσιών
  3. Μία ή περισσότερες συμβάσεις λειτουργίας
  4. Ένα ή περισσότερα τελικά σημεία
  5. Περιβάλλον φιλοξενίας

Ένα ServiceContract χρησιμοποιείται για τον καθορισμό των λειτουργιών που είναι διαθέσιμες για να καταναλώσει ο πελάτης υπηρεσίας. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μοιάζει μια σύμβαση παροχής υπηρεσιών - θα το τροποποιήσουμε αργότερα για να το καταστήσουμε RESTful.

 [ServiceContract]

δημόσια διεπαφή ICustomerService

    {

[OperationContract]

Λίστα GetCustomerList ();

    }

Ένα DataContract χρησιμοποιείται για την περιγραφή των δεδομένων που πρέπει να ανταλλάσσονται μεταξύ του παρόχου υπηρεσιών και του καταναλωτή. Εξετάστε το ακόλουθο DataContract που ονομάζεται Πελάτης.

[DataContract (Namespace = "")]

πελάτης δημόσιας τάξης

    {

[DataMember]

δημόσιο Int32 CustomerID {get; σειρά; }

[Μέλος δεδομένων]

δημόσια συμβολοσειρά FirstName {get; σειρά; }

[DataMember]

δημόσια συμβολοσειρά LastName {get; σειρά; }

[Μέλος δεδομένων]

δημόσια διεύθυνση συμβολοσειράς {get; σειρά; }

    }

Ένα συμβόλαιο λειτουργίας χρησιμοποιείται για την έκθεση μιας μεθόδου ως μεθόδου εξυπηρέτησης και επίσης της ροής συναλλαγών, της κατεύθυνσης της λειτουργίας της υπηρεσίας και επίσης των συμβάσεων (ων) σφάλματος που ενδέχεται να σχετίζονται. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να δηλώσετε μια λειτουργία υπηρεσίας χρησιμοποιώντας το χαρακτηριστικό OperationContract και τη χρήση του χαρακτηριστικού WebInvoke για να καθορίσετε τη λειτουργία HTTP, Uri, μορφή μηνύματος Web κ.λπ.

[OperationContract]

[WebInvoke (Μέθοδος = "GET", ResponseFormat = WebMessageFormat.Json,

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

Λίστα GetCustomerList ();

Το ακόλουθο απόσπασμα κώδικα δείχνει πώς μπορεί να γίνει RESTful η εξυπηρέτηση πελατών εφαρμόζοντας το χαρακτηριστικό WebInvoke στη μέθοδο υπηρεσίας του.

δημόσια διεπαφή ICustomerService

    {

[OperationContract]

[WebInvoke (Μέθοδος = "GET",

ResponseFormat = WebMessageFormat.Json,

BodyStyle = WebMessageBodyStyle. Περιτυλιγμένο,

UriTemplate = "GetCustomers")]

Λίστα GetCustomerList ();

    }

Η κλάση CustomerService επεκτείνει τη σύμβαση υπηρεσίας ICustomerService και παρέχει την υλοποίηση της λειτουργίας υπηρεσίας που ονομάζεται GetCustomerList. Δείτε πώς θα μοιάζει η κλάση CustomerService.

[AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

δημόσια τάξη CustomerService: ICustomerService

    {     

δημόσια λίστα GetCustomerList ()

        {

επιστροφή PopulateCustomerData ();

        }

ιδιωτική λίστα PopulateCustomerData ()

        {

Λίστα lstCustomer = νέα λίστα ();

Πελάτης πελάτη 1 = νέος πελάτης ();

customer1.CustomerID = 1;

customer1.FirstName = "John";

customer1.LastName = "Meaney";

customer1.Address = "Σικάγο";

lstCustomer.Add (πελάτης1);

Πελάτης2 = νέος Πελάτης ();

customer2.CustomerID = 1;

customer2.FirstName = "Πέτρος";

customer2.LastName = "Shaw";

customer2.Address = "Νέα Υόρκη";

lstCustomer.Add (πελάτης2);

επιστροφή lstCustomer;

        }

    }

Σημειώστε ότι η μέθοδος PopulateCustomerData δεν είναι μέθοδος υπηρεσίας. Είναι μια ιδιωτική μέθοδος που επιστρέφει μια λίστα με αρχεία πελατών και καλείται από τη μέθοδο υπηρεσίας GetCustomerList.

Το επόμενο πράγμα που πρέπει να κάνετε είναι να διαμορφώσετε την υπηρεσία WCF. Για να το κάνετε αυτό, θα πρέπει να καθορίσετε τις δεσμευτικές και τελικές λεπτομέρειες καθώς και τη συμπεριφορά της υπηρεσίας. Το παρακάτω απόσπασμα κώδικα δείχνει πώς θα πρέπει να είναι η διαμόρφωση της υπηρεσίας για αυτήν την υπηρεσία.

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

Και αυτό πρέπει να κάνετε. Τώρα μπορείτε να ανοίξετε ένα πρόγραμμα περιήγησης στο Web και να δοκιμάσετε την υπηρεσία WCF RESTful.