Vytvoření klientské aplikace OData v4 (C#)

Mike Wasson

V předchozím kurzu jste vytvořili základní službu OData, která podporuje operace CRUD. Teď vytvoříme klienta pro službu.

Spusťte novou instanci sady Visual Studio a vytvořte nový projekt konzolové aplikace. V dialogovém okně Nový projekt vyberte Nainstalované>šablony>Visual C#>Plocha Windows a vyberte šablonu Konzolová aplikace . Projekt pojmenujte ProductsApp.

Snímek obrazovky s dialogovým oknem Nový projekt se zvýrazněnou cestou k možnostem nabídky pro vytvoření nového projektu konzolové aplikace

Poznámka

Konzolovou aplikaci můžete také přidat do stejného řešení sady Visual Studio, které obsahuje službu OData.

Instalace generátoru klientských kódů OData

V nabídce Nástroje vyberte Rozšíření a Aktualizace. Vyberte Online>galerie sady Visual Studio. Do vyhledávacího pole vyhledejte "Generátor klientských kódů OData". Kliknutím na Stáhnout nainstalujte VSIX. Může se zobrazit výzva k restartování sady Visual Studio.

Snímek obrazovky s dialogovým oknem rozšíření a aktualizace zobrazující nabídku pro stažení a instalaci generátoru klientského kódu V S I X pro O Data

Místní spuštění služby OData

Spusťte projekt ProductService ze sady Visual Studio. Visual Studio ve výchozím nastavení spustí prohlížeč do kořenového adresáře aplikace. Poznamenejte si identifikátor URI. budete ho potřebovat v dalším kroku. Nechte aplikaci spuštěnou.

Snímek obrazovky místního hostitele webového prohlížeče s kódem projektu Product Service spuštěného v sadě Visual Studio

Poznámka

Pokud umístíte oba projekty do stejného řešení, nezapomeňte spustit projekt ProductService bez ladění. V dalším kroku budete muset při úpravách projektu konzolové aplikace ponechat službu spuštěnou.

Vygenerování proxy služby

Proxy služby je třída .NET, která definuje metody pro přístup ke službě OData. Proxy překládá volání metod na požadavky HTTP. Třídu proxy vytvoříte spuštěním šablony T4.

Klikněte pravým tlačítkem na projekt. Vyberte Přidat>novou položku.

Snímek obrazovky s dialogovým oknem Průzkumníka řešení zobrazující cestu k souboru pro přidání nové položky do projektu se zvýrazněním možností žlutou barvou

V dialogovém okně Přidat novou položku vyberte Visual C# Items>Code>OData Client. Pojmenujte šablonu "ProductClient.tt". Klikněte na Přidat a projděte si upozornění zabezpečení.

Snímek obrazovky s oknem nastavení nové položky produktové aplikace, zobrazující šablonu produktu klienta O Data a zakroužkováním pole pro název níže přidejte nový název.

V tomto okamžiku se zobrazí chyba, kterou můžete ignorovat. Visual Studio šablonu automaticky spustí, ale nejdřív potřebuje nějaká nastavení konfigurace.

Snímek obrazovky s oknem chybové zprávy s jednou kartou chyby a jednou kartou upozornění a podrobnou zprávou o chybě

Otevřete soubor ProductClient.odata.config. V elementu Parameter vložte identifikátor URI z projektu ProductService (předchozí krok). Příklad:

<Parameter Name="MetadataDocumentUri" Value="http://localhost:61635/" />

Snímek obrazovky s konfiguračním souborem datové tečky klienta produktu, který ukazuje příklad U R I po vložení do elementu parameter

Spusťte šablonu znovu. V Průzkumník řešení klikněte pravým tlačítkem na soubor ProductClient.tt a vyberte Spustit vlastní nástroj.

Šablona vytvoří soubor kódu s názvem ProductClient.cs, který definuje proxy server. Pokud při vývoji aplikace změníte koncový bod OData, spusťte šablonu znovu a aktualizujte proxy server.

Snímek obrazovky s nabídkou okna Průzkumníka řešení se zvýrazněným souborem klienta produktu tečka c s, který byl vytvořen a který definuje proxy server.

Použití proxy služby k volání služby OData

Otevřete soubor Program.cs a nahraďte často používaný kód následujícím kódem.

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);
        }
    }
}

Hodnotu serviceUri nahraďte identifikátorem URI služby z předchozí verze.

// TODO: Replace with your local URI.
string serviceUri = "http://localhost:port/";

Když aplikaci spustíte, měl by mít výstup následující:

Response: 201
Yo-yo 4.95 Toys