Tworzenie aplikacji klienckiej OData 4 (C#)
Autor: Mike Wasson
W poprzednim samouczku utworzono podstawową usługę OData, która obsługuje operacje CRUD. Teraz utwórzmy klienta dla usługi.
Uruchom nowe wystąpienie programu Visual Studio i utwórz nowy projekt aplikacji konsolowej. W oknie dialogowym Nowy projekt wybierz pozycję Zainstalowane>szablony>Visual C#>Windows Desktop, a następnie wybierz szablon Aplikacja konsolowa . Nadaj projektowi nazwę "ProductsApp".
Uwaga
Możesz również dodać aplikację konsolową do tego samego rozwiązania programu Visual Studio, które zawiera usługę OData.
Instalowanie generatora kodu klienta OData
W menu Narzędzia wybierz pozycję Rozszerzenia i Aktualizacje. Wybierz pozycjęGaleria programu Visual Studioonline>. W polu wyszukiwania wyszukaj ciąg "Generator kodu klienta OData". Kliknij pozycję Pobierz , aby zainstalować plik VSIX. Może zostać wyświetlony monit o ponowne uruchomienie programu Visual Studio.
Uruchamianie usługi OData lokalnie
Uruchom projekt ProductService z poziomu programu Visual Studio. Domyślnie program Visual Studio uruchamia przeglądarkę do katalogu głównego aplikacji. Zanotuj identyfikator URI; Będzie to potrzebne w następnym kroku. Pozostaw uruchomioną aplikację.
Uwaga
Jeśli oba projekty są umieszczane w tym samym rozwiązaniu, pamiętaj o uruchomieniu projektu ProductService bez debugowania. W następnym kroku należy zachować działanie usługi podczas modyfikowania projektu aplikacji konsolowej.
Generowanie serwera proxy usługi
Serwer proxy usługi jest klasą platformy .NET, która definiuje metody uzyskiwania dostępu do usługi OData. Serwer proxy tłumaczy wywołania metody na żądania HTTP. Klasę serwera proxy utworzysz, uruchamiając szablon T4.
Kliknij prawym przyciskiem myszy projekt. Wybierz pozycję Dodaj>nowy element.
W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Visual C# Items CodeOData Client (Klient ODatakodu> elementów >języka Visual C#). Nadaj szablonowi nazwę "ProductClient.tt". Kliknij przycisk Dodaj i kliknij ostrzeżenie o zabezpieczeniach.
W tym momencie zostanie wyświetlony błąd, który można zignorować. Program Visual Studio automatycznie uruchamia szablon, ale szablon wymaga najpierw pewnych ustawień konfiguracji.
Otwórz plik ProductClient.odata.config. W elemecie Parameter
wklej identyfikator URI z projektu ProductService (poprzedni krok). Na przykład:
<Parameter Name="MetadataDocumentUri" Value="http://localhost:61635/" />
Uruchom ponownie szablon. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik ProductClient.tt i wybierz polecenie Uruchom narzędzie niestandardowe.
Szablon tworzy plik kodu o nazwie ProductClient.cs, który definiuje serwer proxy. Podczas opracowywania aplikacji, jeśli zmienisz punkt końcowy OData, uruchom szablon ponownie, aby zaktualizować serwer proxy.
Wywoływanie usługi OData za pomocą serwera proxy usługi
Otwórz plik Program.cs i zastąp kod boilerplate następującym kodem.
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);
}
}
}
Zastąp wartość identyfikatora serviceUri identyfikatorem URI usługi z wcześniejszej wersji.
// TODO: Replace with your local URI.
string serviceUri = "http://localhost:port/";
Po uruchomieniu aplikacji powinny zostać wyświetlone następujące dane wyjściowe:
Response: 201
Yo-yo 4.95 Toys