Criar um aplicativo cliente do OData v4 (C#)
por Mike Wasson
No tutorial anterior, você criou um serviço OData básico que dá suporte a operações CRUD. Agora vamos criar um cliente para o serviço.
Inicie uma nova instância do Visual Studio e crie um novo projeto de aplicativo de console. Na caixa de diálogo Novo Projeto, selecioneModelos Instalados>>Visual C#>Área de Trabalho do Windows e selecione o modelo Aplicativo de Console. Nomeie o projeto como "ProductsApp".
Observação
Você também pode adicionar o aplicativo de console à mesma solução do Visual Studio que contém o serviço OData.
Instalar o gerador de código do cliente OData
No menu Ferramentas, selecione Extensões e atualizações. SelecioneGaleria do Visual StudioOnline>. Na caixa de pesquisa, pesquise "Gerador de Código do Cliente OData". Clique em Baixar para instalar o VSIX. Talvez seja solicitado que você reinicie o Visual Studio.
Executar o serviço OData localmente
Execute o projeto ProductService no Visual Studio. Por padrão, o Visual Studio inicia um navegador para a raiz do aplicativo. Observe o URI; você precisará disso na próxima etapa. Deixe o aplicativo em execução.
Observação
Se você colocar os dois projetos na mesma solução, execute o projeto ProductService sem depuração. Na próxima etapa, você precisará manter o serviço em execução enquanto modifica o projeto do aplicativo de console.
Gerar o Proxy de Serviço
O proxy de serviço é uma classe .NET que define métodos para acessar o serviço OData. O proxy converte chamadas de método em solicitações HTTP. Você criará a classe proxy executando um modelo T4.
Clique com o botão direito do mouse no projeto. Selecione Adicionar>Novo Item.
Na caixa de diálogo Adicionar Novo Item , selecione Visual C# Items>Code>OData Client. Nomeie o modelo como "ProductClient.tt". Clique em Adicionar e clique no aviso de segurança.
Neste ponto, você receberá um erro, que pode ser ignorado. O Visual Studio executa automaticamente o modelo, mas o modelo precisa primeiro de algumas configurações.
Abra o arquivo ProductClient.odata.config. Parameter
No elemento , cole o URI do projeto ProductService (etapa anterior). Por exemplo:
<Parameter Name="MetadataDocumentUri" Value="http://localhost:61635/" />
Execute o modelo novamente. Em Gerenciador de Soluções, clique com o botão direito do mouse no arquivo ProductClient.tt e selecione Executar Ferramenta Personalizada.
O modelo cria um arquivo de código chamado ProductClient.cs que define o proxy. Ao desenvolver seu aplicativo, se você alterar o ponto de extremidade OData, execute o modelo novamente para atualizar o proxy.
Usar o Proxy de Serviço para chamar o serviço OData
Abra o arquivo Program.cs e substitua o código clichê pelo seguinte.
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);
}
}
}
Substitua o valor de serviceUri pelo URI de serviço anterior.
// TODO: Replace with your local URI.
string serviceUri = "http://localhost:port/";
Quando você executa o aplicativo, ele deve gerar o seguinte:
Response: 201
Yo-yo 4.95 Toys