Créer une application cliente OData v4 (C#)

par Mike Wasson

Dans le tutoriel précédent, vous avez créé un service OData de base qui prend en charge les opérations CRUD. Nous allons maintenant créer un client pour le service.

Démarrez une nouvelle instance de Visual Studio et créez un projet d’application console. Dans la boîte de dialogue Nouveau projet, sélectionnez Modèles installés>>Visual C#>Windows Desktop, puis sélectionnez le modèle Application console. Nommez le projet « ProductsApp ».

Capture d’écran de la boîte de dialogue Nouveau projet, mettant en évidence le chemin d’accès à travers les options de menu, pour créer un projet d’application console.

Notes

Vous pouvez également ajouter l’application console à la même solution Visual Studio qui contient le service OData.

Installer le générateur de code client OData

Dans le menu Outils, sélectionnez Extensions et mises à jour. SélectionnezGalerie Visual Studioen ligne>. Dans la zone de recherche, recherchez « OData Client Code Generator ». Cliquez sur Télécharger pour installer VSIX. Vous serez peut-être invité à redémarrer Visual Studio.

Capture d’écran de la boîte de dialogue extensions et mises à jour, montrant le menu permettant de télécharger et d’installer le générateur de code client V S I X pour O Data.

Exécuter le service OData localement

Exécutez le projet ProductService à partir de Visual Studio. Par défaut, Visual Studio lance un navigateur à la racine de l’application. Notez l’URI ; vous en aurez besoin à l’étape suivante. Laissez l'application en cours d'exécution.

Capture d’écran de l’hôte local du navigateur web, montrant le code du projet Product Service qui s’exécute sur Visual Studio.

Notes

Si vous placez les deux projets dans la même solution, veillez à exécuter le projet ProductService sans débogage. À l’étape suivante, vous devez maintenir le service en cours d’exécution pendant que vous modifiez le projet d’application console.

Générer le proxy de service

Le proxy de service est une classe .NET qui définit les méthodes d’accès au service OData. Le proxy traduit les appels de méthode en requêtes HTTP. Vous allez créer la classe proxy en exécutant un modèle T4.

Cliquez avec le bouton droit sur le projet. Sélectionnez Ajouter>Nouvel élément.

Capture d’écran de la boîte de dialogue Explorateur de solutions, montrant le chemin du fichier pour l’ajout d’un nouvel élément au projet, en mettant en surbrillance les options en jaune.

Dans la boîte de dialogue Ajouter un nouvel élément , sélectionnez Visual C# Items>Code>OData Client. Nommez le modèle « ProductClient.tt ». Cliquez sur Ajouter , puis cliquez sur l’avertissement de sécurité.

Capture d’écran de la fenêtre paramètres de l’application produit nouveaux éléments, montrant le modèle de produit du client O Data et encerclant le champ de nom ci-dessous pour ajouter un nouveau nom.

À ce stade, vous obtenez une erreur que vous pouvez ignorer. Visual Studio exécute automatiquement le modèle, mais celui-ci a d’abord besoin de certains paramètres de configuration.

Capture d’écran de la fenêtre de message d’erreur, montrant un onglet d’erreur et un onglet avertissement, ainsi qu’un message détaillé de l’erreur.

Ouvrez le fichier ProductClient.odata.config. Dans l’élément Parameter , collez l’URI du projet ProductService (étape précédente). Par exemple :

<Parameter Name="MetadataDocumentUri" Value="http://localhost:61635/" />

Capture d’écran du fichier de configuration O Data dot du client de produit, montrant un exemple d’U R I après avoir été collé dans l’élément parameter.

Réexécutez le modèle. Dans Explorateur de solutions, cliquez avec le bouton droit sur le fichier ProductClient.tt et sélectionnez Exécuter l’outil personnalisé.

Le modèle crée un fichier de code nommé ProductClient.cs qui définit le proxy. Lorsque vous développez votre application, si vous modifiez le point de terminaison OData, réexécutez le modèle pour mettre à jour le proxy.

Capture d’écran du menu de la fenêtre de l’Explorateur de solutions, mettant en évidence le fichier dot c s du client produit qui a été créé, qui définit le proxy.

Utiliser le proxy de service pour appeler le service OData

Ouvrez le fichier Program.cs et remplacez le code réutilisable par ce qui suit.

using System;

namespace ProductsApp
{
    class Program
    {
        // Get an entire entity set.
        static void ListAllProducts(Default.Container container)
        {
            foreach (var p in container.Products)
            {
                Console.WriteLine("{0} {1} {2}", p.Name, p.Price, p.Category);
            }
        }

        static void AddProduct(Default.Container container, ProductService.Models.Product product)
        {
            container.AddToProducts(product);
            var serviceResponse = container.SaveChanges();
            foreach (var operationResponse in serviceResponse)
            {
                Console.WriteLine("Response: {0}", operationResponse.StatusCode);
            }
        }

        static void Main(string[] args)
        {
            // TODO: Replace with your local URI.
            string serviceUri = "http://localhost:port/";
            var container = new Default.Container(new Uri(serviceUri));

            var product = new ProductService.Models.Product()
            {
                Name = "Yo-yo",
                Category = "Toys",
                Price = 4.95M
            };

            AddProduct(container, product);
            ListAllProducts(container);
        }
    }
}

Remplacez la valeur de serviceUri par l’URI de service antérieur.

// TODO: Replace with your local URI.
string serviceUri = "http://localhost:port/";

Lorsque vous exécutez l’application, elle doit générer les éléments suivants :

Response: 201
Yo-yo 4.95 Toys