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 ».
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.
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.
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.
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é.
À 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.
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/" />
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.
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