Создание клиентского приложения OData v4 (C#)
Майк Уосон
В предыдущем руководстве вы создали базовую службу OData, которая поддерживает операции CRUD. Теперь создадим клиент для службы.
Запустите новый экземпляр Visual Studio и создайте проект консольного приложения. В диалоговом окне Новый проект выберите Установленные>шаблоны>Visual C#>Windows Desktop и выберите шаблон Консольное приложение . Назовите проект ProductsApp.
Примечание
Консольное приложение можно также добавить в то же решение Visual Studio, которое содержит службу OData.
Установка генератора кода клиента OData
Откройте меню Средства и выберите пункт Расширения и обновления. Выберите OnlineVisual Studio Gallery (Online> Visual Studio Gallery). В поле поиска найдите "OData Client Code Generator". Нажмите кнопку Скачать , чтобы установить VSIX. Может появиться запрос на перезапуск Visual Studio.
Локальный запуск службы OData
Запустите проект ProductService из Visual Studio. По умолчанию Visual Studio запускает браузер в корневом каталоге приложения. Обратите внимание на универсальный код ресурса (URI); Это потребуется на следующем шаге. Не закрывайте приложение.
Примечание
Если вы размещаете оба проекта в одном решении, обязательно запустите проект ProductService без отладки. На следующем шаге необходимо сохранить службу запущенной во время изменения проекта консольного приложения.
Создание прокси-сервера службы
Прокси-сервер службы — это класс .NET, который определяет методы для доступа к службе OData. Прокси-сервер преобразует вызовы методов в HTTP-запросы. Вы создадите прокси-класс, запустив шаблон T4.
Щелкните проект правой кнопкой мыши. Щелкните Добавить>Новый элемент.
В диалоговом окне Добавление нового элемента выберите Visual C# Items>Code>OData Client. Присвойте шаблону имя "ProductClient.tt". Нажмите кнопку Добавить и щелкните предупреждение системы безопасности.
На этом этапе вы получите сообщение об ошибке, которое можно игнорировать. Visual Studio автоматически запускает шаблон, но для этого шаблона сначала требуются некоторые параметры конфигурации.
Откройте файл ProductClient.odata.config. В элементе вставьте Parameter
универсальный код ресурса (URI) из проекта ProductService (предыдущий шаг). Пример:
<Parameter Name="MetadataDocumentUri" Value="http://localhost:61635/" />
Запустите шаблон еще раз. В Обозреватель решений щелкните правой кнопкой мыши файл ProductClient.tt и выберите Запустить пользовательское средство.
Шаблон создает файл кода с именем ProductClient.cs, который определяет прокси-сервер. При разработке приложения при изменении конечной точки OData запустите шаблон еще раз, чтобы обновить прокси-сервер.
Использование прокси-сервера службы для вызова службы OData
Откройте файл Program.cs и замените стандартный код следующим кодом.
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);
}
}
}
Замените значение serviceUri на URI службы, полученный ранее.
// TODO: Replace with your local URI.
string serviceUri = "http://localhost:port/";
При запуске приложение должно вывести следующее:
Response: 201
Yo-yo 4.95 Toys