Creare un'app client OData v4 (C#)
di Mike Wasson
Nell'esercitazione precedente è stato creato un servizio OData di base che supporta le operazioni CRUD. Verrà ora creato un client per il servizio.
Avviare una nuova istanza di Visual Studio e creare un nuovo progetto di applicazione console. Nella finestra di dialogo Nuovo progetto selezionareModelli>installati>Visual C#>Windows Desktop e selezionare il modello di applicazione console. Assegnare un nome al progetto "ProductsApp".
Nota
È anche possibile aggiungere l'app console alla stessa soluzione di Visual Studio che contiene il servizio OData.
Installare il generatore di codice client OData
Scegliere Estensioni e aggiornamenti dal menu Strumenti. Selezionare Online>Visual Studio Gallery. Nella casella di ricerca cercare "Generatore di codice client OData". Fare clic su Scarica per installare VSIX. Potrebbe essere richiesto di riavviare Visual Studio.
Eseguire il servizio OData in locale
Eseguire il progetto ProductService da Visual Studio. Per impostazione predefinita, Visual Studio avvia un browser nella radice dell'applicazione. Prendere nota dell'URI; sarà necessario questo nel passaggio successivo. Lasciare l'applicazione in esecuzione.
Nota
Se si inseriscono entrambi i progetti nella stessa soluzione, assicurarsi di eseguire il progetto ProductService senza eseguire il debug. Nel passaggio successivo sarà necessario mantenere il servizio in esecuzione durante la modifica del progetto dell'applicazione console.
Generare il proxy del servizio
Il proxy del servizio è una classe .NET che definisce i metodi per l'accesso al servizio OData. Il proxy converte le chiamate al metodo in richieste HTTP. Verrà creata la classe proxy eseguendo un modello T4.
Fare clic con il pulsante destro del mouse sul progetto. Scegliere Aggiungi>Nuovo elemento.
Nella finestra di dialogo Aggiungi nuovo elemento selezionare Visual C# Items>Code>OData Client. Assegnare al modello il nome "ProductClient.tt". Fare clic su Aggiungi e fare clic sull'avviso di sicurezza.
A questo punto si riceverà un errore, che è possibile ignorare. Visual Studio esegue automaticamente il modello, ma il modello richiede prima alcune impostazioni di configurazione.
Aprire il file ProductClient.odata.config. Nell'elemento incollare l'URI Parameter
dal progetto ProductService (passaggio precedente). Ad esempio:
<Parameter Name="MetadataDocumentUri" Value="http://localhost:61635/" />
Eseguire di nuovo il modello. In Esplora soluzioni fare clic con il pulsante destro del mouse sul file ProductClient.tt e scegliere Esegui strumento personalizzato.
Il modello crea un file di codice denominato ProductClient.cs che definisce il proxy. Quando si sviluppa l'app, se si modifica l'endpoint OData, eseguire di nuovo il modello per aggiornare il proxy.
Usare il proxy del servizio per chiamare il servizio OData
Aprire il file Program.cs e sostituire il codice boilerplate con il codice seguente.
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);
}
}
}
Sostituire il valore di serviceUri con l'URI del servizio precedente.
// TODO: Replace with your local URI.
string serviceUri = "http://localhost:port/";
Quando si esegue l'app, dovrebbe restituire quanto segue:
Response: 201
Yo-yo 4.95 Toys