Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Mike Wasson
Im vorherigen Lernprogramm haben Sie einen einfachen OData-Dienst erstellt, der CRUD-Vorgänge unterstützt. Jetzt erstellen wir einen Client für den Dienst.
Starten Sie eine neue Instanz von Visual Studio, und erstellen Sie ein neues Konsolenanwendungsprojekt. Wählen Sie im Dialogfeld "Neues Projekt " die Option "Installierte>Vorlagen>Visual C#>Windows Desktop" und dann die Vorlage "Konsolenanwendung" aus. Nennen Sie das Projekt "ProductsApp".
Hinweis
Sie können die Konsolen-App auch derselben Visual Studio-Lösung hinzufügen, die den OData-Dienst enthält.
Installieren des OData-Clientcodegenerators
Wählen Sie im Menü "Extras" die Option "Erweiterungen und Updates" aus. Wählen Sie "Online>Visual Studio Gallery" aus. Suchen Sie im Suchfeld nach "OData-Clientcodegenerator". Klicken Sie auf "Herunterladen ", um den VSIX zu installieren. Möglicherweise werden Sie aufgefordert, Visual Studio neu zu starten.
Lokales Ausführen des OData-Diensts
Führen Sie das ProductService-Projekt aus Visual Studio aus. Standardmäßig startet Visual Studio einen Browser im Anwendungsstamm. Notieren Sie sich den URI; Sie benötigen dies im nächsten Schritt. Lassen Sie die Anwendung laufen.
Hinweis
Wenn Sie beide Projekte in derselben Projektmappe platzieren, stellen Sie sicher, dass Sie das ProductService-Projekt ohne Debugging ausführen. Im nächsten Schritt müssen Sie den Dienst weiterhin ausführen, während Sie das Konsolenanwendungsprojekt ändern.
Generieren des Dienstproxys
Der Dienstproxy ist eine .NET-Klasse, die Methoden für den Zugriff auf den OData-Dienst definiert. Der Proxy übersetzt Methodenaufrufe in HTTP-Anforderungen. Sie erstellen die Proxyklasse, indem Sie eine T4-Vorlage ausführen.
Klicken Sie mit der rechten Maustaste auf das Projekt. Klicken Sie dann auf Hinzufügen>Neues Element.
Wählen Sie im Dialogfeld Neues Element hinzufügen die Option Visual C#-Elemente>Code>OData-Client aus. Nennen Sie die Vorlage "ProductClient.tt". Klicken Sie auf "Hinzufügen" , und klicken Sie auf die Sicherheitswarnung.
An diesem Punkt erhalten Sie einen Fehler, den Sie ignorieren können. Visual Studio führt die Vorlage automatisch aus, aber die Vorlage benötigt zuerst einige Konfigurationseinstellungen.
Öffnen Sie die Datei ProductClient.odata.config. Fügen Sie im Parameter Element den URI aus dem ProductService-Projekt (vorheriger Schritt) ein. Beispiel:
<Parameter Name="MetadataDocumentUri" Value="http://localhost:61635/" />
Führen Sie die Vorlage erneut aus. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die ProductClient.tt Datei, und wählen Sie " Benutzerdefiniertes Tool ausführen" aus.
Die Vorlage erstellt eine Codedatei mit dem Namen ProductClient.cs, die den Proxy definiert. Wenn Sie den OData-Endpunkt ändern, führen Sie die Vorlage beim Entwickeln Der App erneut aus, um den Proxy zu aktualisieren.
Verwenden des Dienstproxys zum Aufrufen des OData-Diensts
Öffnen Sie die Datei Program.cs, und ersetzen Sie den Code des Textbausteins durch Folgendes.
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);
}
}
}
Ersetzen Sie den Wert von serviceUri durch den Dienst-URI aus früheren Versionen.
// TODO: Replace with your local URI.
string serviceUri = "http://localhost:port/";
Wenn Sie die App ausführen, sollte folgendes ausgegeben werden:
Response: 201
Yo-yo 4.95 Toys