Crear una aplicación de cliente de OData v4 (C#)
por Mike Wasson
En el tutorial anterior, creó un servicio OData básico que admite operaciones CRUD. Ahora vamos a crear un cliente para el servicio.
Inicie una nueva instancia de Visual Studio y cree un nuevo proyecto de aplicación de consola. En el cuadro de diálogo Nuevo proyecto, seleccione Instalado>Plantillas>Visual C#>Escritorio de Windows y seleccione la plantilla Aplicación de consola. Asigne al proyecto el nombre "ProductsApp".
Nota:
También puede agregar la aplicación de consola a la misma solución de Visual Studio que contiene el servicio OData.
Instalación del generador de código de cliente de OData
En el menú Herramientas, seleccione Extensiones y actualizaciones. Seleccione En línea>Galería de Visual Studio. En el cuadro de búsqueda, busque "Generador de código de cliente de OData". Haga clic en Descargar para instalar VSIX. Es posible que se le pida que reinicie Visual Studio.
Ejecución local del servicio OData
Ejecute el proyecto ProductService desde Visual Studio. De forma predeterminada, Visual Studio inicia un explorador en la raíz de la aplicación. Anote el URI; lo necesitará en el paso siguiente. Deje la aplicación en ejecución.
Nota:
Si coloca ambos proyectos en la misma solución, asegúrese de ejecutar el proyecto ProductService sin depurar. En el paso siguiente, deberá mantener el servicio en ejecución mientras modifica el proyecto de aplicación de consola.
Generación del proxy de servicio
El proxy de servicio es una clase .NET que define métodos para acceder al servicio OData. El proxy traduce las llamadas de método a solicitudes HTTP. Para crear la clase de proxy, ejecute una plantilla de T4.
Haga clic con el botón derecho en el proyecto. Seleccione Agregar>Nuevo elemento.
En el cuadro de diálogo Agregar nuevo elemento, seleccione Elementos de Visual C#>Código>Cliente OData. Asigne a la plantilla el nombre "ProductClient.tt". Haga clic en Agregar y haga clic en la advertencia de seguridad.
En este momento, obtendrá un error que puede omitir. Visual Studio ejecuta automáticamente la plantilla, pero la plantilla necesita primero algunas opciones de configuración.
Abra el archivo ProductClient.odata.config. En el elemento Parameter
, pegue el URI del proyecto ProductService (paso anterior). Por ejemplo:
<Parameter Name="MetadataDocumentUri" Value="http://localhost:61635/" />
Vuelva a ejecutar la plantilla. En el Explorador de soluciones, haga clic con el botón derecho en el archivo ProductClient.tt y seleccione Ejecutar herramienta personalizada.
La plantilla crea un archivo de código denominado ProductClient.cs que define el proxy. A medida que desarrolle la aplicación, si cambia el punto de conexión de OData, vuelva a ejecutar la plantilla para actualizar el proxy.
Uso del proxy de servicio para llamar al servicio OData
Abra el archivo Program.cs y reemplace el código reutilizable por lo siguiente.
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);
}
}
}
Reemplace el valor de serviceUri por el URI de servicio anterior.
// TODO: Replace with your local URI.
string serviceUri = "http://localhost:port/";
Al ejecutar la aplicación, debe generar lo siguiente:
Response: 201
Yo-yo 4.95 Toys