Comment créer un service RESTful dans WCF

WCF (Windows Communication Foundation) est une plateforme de messagerie sécurisée, fiable et évolutive qui peut être utilisée pour créer des services Web dans .Net. Il fournit un modèle de programmation unifié pour le développement d'applications orientées services.

Vous pouvez utiliser WCF pour créer des services RESTful dans .NET. REST (Representational State Transfer) est un paradigme d'architecture conforme aux principes de l'architecture REST.L'architecture REST est basée sur le concept de ressources: elle utilise des ressources pour représenter l'état et la fonctionnalité d'une application. Ces ressources sont à leur tour identifiées à l'aide d'URI via le protocole HTTP.

Créer un service WCF

Dans cette section, nous allons explorer comment nous pouvons créer un service RESTful dans WCF. Tout d'abord, créons un nouveau service WCF dans Visual Studio. Pour ce faire, suivez les étapes décrites ci-dessous. Notez que pour créer l'application illustrée dans cet article, j'ai utilisé Visual Studio 2015, bien que vous puissiez également utiliser Visual Studio 2012 ou 2013.

  1. Ouvrez Visual Studio 2015
  2. Dans le menu Fichier de l'IDE de Visual Studio, cliquez sur Démarrer -> Fichier -> Nouveau -> Projet
  3. Ensuite, sélectionnez WCF dans la liste des modèles de projet affichés
  4. Sélectionnez «Application de service WCF» dans le volet de droite
  5. Spécifiez un nom pour votre projet de service WCF et cliquez sur OK pour l'enregistrer

Cela créerait un nouveau projet d'application de service WCF au nom que vous avez spécifié. Le projet contiendrait également un service par défaut à des fins d'illustration uniquement.

Implémentation du service WCF RESTful

Lorsque vous travaillez avec WCF, vous devez d'abord créer un contrat de service, puis définir les opérations de service ou les contrats d'opération qu'il contient. En règle générale, un service WCF comprend les éléments suivants:

  1. Classe de service
  2. Contrat de service
  3. Un ou plusieurs contrats d'exploitation
  4. Un ou plusieurs points de terminaison
  5. Environnement d'hébergement

Un ServiceContract est utilisé pour spécifier les opérations que le client de service peut utiliser. L'extrait de code suivant montre à quoi ressemble un contrat de service - nous le modifierons plus tard pour le rendre RESTful.

 [ServiceContract]

    public interface ICustomerService

    {

        [OperationContract]

        List GetCustomerList();

    }

Un DataContract est utilisé pour décrire les données qui doivent être échangées entre le fournisseur de services et le consommateur de services. Considérez le DataContract suivant appelé Customer.

[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; }

    }

Un contrat d'opération est utilisé pour exposer une méthode en tant que méthode de service et également le flux de transaction, la direction de l'opération de service et également le (s) contrat (s) de défaut qui peuvent être associés. L'extrait de code suivant illustre comment vous pouvez déclarer une opération de service à l'aide de l'attribut OperationContract et utiliser l'attribut WebInvoke pour spécifier l'opération HTTP, l'URI, le format de message Web, etc.

[OperationContract]

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

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

List GetCustomerList();

L'extrait de code suivant illustre comment le service client peut être rendu RESTful en appliquant l'attribut WebInvoke sur sa méthode de service.

public interface ICustomerService

    {

        [OperationContract]

        [WebInvoke(Method = "GET",

            ResponseFormat = WebMessageFormat.Json,

            BodyStyle = WebMessageBodyStyle.Wrapped,

            UriTemplate = "GetCustomers")]

        List GetCustomerList();

    }

La classe CustomerService étend le contrat de service ICustomerService et fournit l'implémentation de l'opération de service nommée GetCustomerList. Voici à quoi ressemblerait la classe 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;

        }

    }

Notez que la méthode PopulateCustomerData n'est pas une méthode de service; c'est une méthode privée qui renvoie une liste d'enregistrements client et est appelée à partir de la méthode de service GetCustomerList.

La prochaine chose que vous devez faire est de configurer le service WCF. Pour ce faire, vous devez spécifier les détails de liaison et de point de terminaison, ainsi que le comportement du service. L'extrait de code suivant montre à quoi doit ressembler la configuration du service pour ce service.

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

Et c'est tout ce que vous avez à faire. Vous pouvez maintenant ouvrir un navigateur Web et tester votre service WCF RESTful.