Freigeben über


Readme_ShoppingCart

Aktualisiert: 05. Dezember 2005

Das Shopping Cart-Beispiel verwendet den für die Konversationsgruppe angegebenen Bezeichner, um den Status einer einfachen Warenkorbanwendung zu verwalten. Die Anwendung verwendet das ServiceBrokerInterface-Beispiel.

Standardmäßig ist die Warenkorb-Beispielanwendung unter C:\Programme\Microsoft SQL Server\100\Samples\Engine\\ServiceBroker\ShoppingCart installiert Wenn der Beispielordner nicht vorhanden ist, lesen Sie Installieren von Beispielen.

Die Beispiele dienen nur zu Lernzwecken. Sie sind nicht für den Einsatz in einer Produktionsumgebung gedacht und wurden auch nicht in einer Produktionsumgebung getestet. Microsoft leistet keinen technischen Support für diese Beispiele. Beispielanwendungen und Assemblys sollten nicht ohne die Zustimmung des Systemadministrators mit der SQL Server-Datenbank oder dem Berichtsserver verbunden sein oder verwendet werden.

Erstellen und Installieren des Beispiels

  1. Öffnen Sie in Visual Studio 2005 ShoppingCartCS.sln.

  2. Erstellen Sie die Projektmappe, indem Sie F6 drücken oder im Menü Erstellen die Option Projektmappe erstellen auswählen.

  3. Öffnen Sie eine Eingabeaufforderung, navigieren Sie zum Ordner Scripts, und führen Sie dann den folgenden Befehl aus:

    install all
    

    Das Installationsskript installiert die SQL Server-Objekte der Anwendung. Dies schließt die gespeicherte CLR-Prozedur (Common Language Runtime) ein, die den ShoppingCartService-Dienst implementiert.

Ausführen des Beispiels

  1. Führen Sie die ShoppingCartClient.exe-Anwendung im Beispielverzeichnis aus. Aus Gründen der Übersichtlichkeit verarbeitet der Client pro Clientausführung eine Bestellung.

  2. Klicken Sie auf Create Order, um eine Bestellung zu erstellen. Fügen Sie dem Warenkorb Elemente aus der Liste Item hinzu, und klicken Sie dann auf die Schaltfläche Add Item.

  3. Klicken Sie auf die Registerkarte Service Broker Trace, um eine Zusammenfassung der gesendeten und empfangenen Service Broker-Meldungen anzuzeigen.

  4. Die ShoppingList- und StateTable-Tabellen in der ssb_ShoppingCart-Datenbank verwalten den Status der Anwendung. Die gespeicherte CLR-Prozedur aktualisiert die Tabellen basierend auf vom Client empfangenen Meldungen. Sie können diese Tabellen entweder mit Management Studio oder mit sqlcmd überprüfen.

Deinstallieren des Beispiels

  1. Öffnen Sie eine Eingabeaufforderung, navigieren Sie zum Ordner Scripts, und führen Sie dann den folgenden Befehl aus:

    uninstall all
    
  2. Das Deinstallationsskript entfernt die SQL Server-Objekte der Anwendung.

Anforderungen

Für dieses Beispiel ist Visual Studio 2005 erforderlich. Da das Beispiel CLR-Features verwendet, die in früheren Versionen nicht zur Verfügung standen, können ältere Versionen als Visual Studio 2005 das Beispiel nicht erstellen.

Veranschaulicht

Service Broker-Anwendungen speichern den Status meistens in der Datenbank, die den Dienst hostet. Wenn Meldungen eingehen, lädt die Anwendung den Status aus der Datenbank und verarbeitet dann die Meldungen.

Die Service-Klasse des Service Broker Interface-Beispiels bietet eine praktische Möglichkeit zur Statusverwaltung. Dieses Beispiel zeigt, wie die Service-Klasse zur Statusverwaltung verwendet wird.

Um den Status mithilfe der Service-Klasse zu verwalten, implementieren Sie zwei Methoden in Ihrer Anwendung und eine gespeicherte Prozedur in SQL Server, wie in der folgenden Tabelle beschrieben:

Item Signatur Beschreibung

Gespeicherte Prozedur

CREATE PROCEDURE name (@cgid uniqueidentifier)

Gibt den Status der Anwendung zurück. Die von dieser Prozedur zurückgegebenen Resultsets enthalten den für die Konversationsgruppe angegebenen Bezeichner.

public method

public override bool LoadState(System.Data.Sql.SqlReader reader)

Liest die von der gespeicherten Prozedur zurückgegebenen Resultsets, um den Status wiederherzustellen. Diese gespeicherte Prozedur muss den für die Konversationsgruppe angegebenen Bezeichner in der Klasse speichern, weil das Service Broker Interface den Bezeichner der SaveState-Methode nicht zur Verfügung stellt.

public method

public override void SaveState()

Speichert den Status in der Datenbank.

Dieses Thema gibt einen Überblick über den Wiederherstellungsstatus. Eine Beschreibung des kompletten Beispiels finden Sie unter ShoppingCartService.cs.

Die gespeicherte Prozedur muss einen für die Konversationsgruppe angegebenen Bezeichner annehmen und zwei Resultsets zurückgeben. Das erste Resultset besteht aus dem eigentlichen Bezeichner, der für die Konversationsgruppe angegeben wurde. Das zweite Resultset enthält den anwendungsspezifischen Status. Es gibt keinen festen Namen für diese gespeicherte Prozedur. Stattdessen geben Sie den Namen der gespeicherten Prozedur durch Festlegen der AppLoaderProcName-Eigenschaft an. Das Service Broker Interface ruft einfach die angegebene gespeicherte Prozedur auf.

Die LoadState-Methode stellt den Status der Anwendung wieder her. Welchen Prozess die Anwendung dabei durchläuft, hängt davon ab, welchen Status sie erfordert. Die Methode verwendet eine Instanz von System.Data.Sql.SqlReader als Parameter. SqlReader enthält die von der gespeicherten Prozedur zurückgegebenen Resultsets. Normalerweise aktualisieren Implementierungen der LoadState-Methode die State-Eigenschaft der Service-Klasse, speichern den für die Konverstationsgruppe angegebenen Bezeichner in einem privaten Feld und speichern dann den anwendungsspezifischen Status in den entsprechenden Datenstrukturen. ShoppingCartService speichert z. B. Informationen zu Elementen, Mengen und Preisen in einer privaten Instanz der ShoppingCart-Klasse.

Nachdem LoadState aufgerufen wurde, übermittelt die Service Broker-Infrastruktur die Nachricht. Wenn Sie das attributbasierte Framework des Nachrichtenverteilers verwenden, können Sie Meldungen auf der Basis der Statuseigenschaft und des Namens des Nachrichtentyps verteilen. In den Nachrichtenbehandlungsmethoden können Sie die in LoadState erstellten Datenstrukturen lesen oder aktualisieren.

Wenn die Nachrichtenbehandlungsmethode beendet wird, ruft die Service Broker-Infrastruktur die SaveState-Methode auf. Die SaveState-Methode verwendet die Connection-Eigenschaft der Service-Klasse, um ein SqlCommand-Objekt zu erstellen. Anschließend wird mit diesem Objekt der in der Datenbank gespeicherte Status aktualisiert. ShoppingCartService löscht z. B. den gespeicherten Inhalt des Warenkorbs und fügt dann den aktuellen Inhalt des Warenkorbs in die Datenbank ein.

Änderungsverlauf

Version Verlauf

05. Dezember 2005

Geänderter Inhalt:
  • Die Anweisungen zum Generieren einer Schlüsseldatei wurden geändert, einschließlich des Namens und Speicherortes der Schlüsseldatei.