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
Öffnen Sie in Visual Studio 2005
ShoppingCartCS.sln
.Erstellen Sie die Projektmappe, indem Sie F6 drücken oder im Menü Erstellen die Option Projektmappe erstellen auswählen.
Ö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
Führen Sie die
ShoppingCartClient.exe
-Anwendung im Beispielverzeichnis aus. Aus Gründen der Übersichtlichkeit verarbeitet der Client pro Clientausführung eine Bestellung.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.
Klicken Sie auf die Registerkarte Service Broker Trace, um eine Zusammenfassung der gesendeten und empfangenen Service Broker-Meldungen anzuzeigen.
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
Öffnen Sie eine Eingabeaufforderung, navigieren Sie zum Ordner
Scripts
, und führen Sie dann den folgenden Befehl aus:uninstall all
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 |
|
Gibt den Status der Anwendung zurück. Die von dieser Prozedur zurückgegebenen Resultsets enthalten den für die Konversationsgruppe angegebenen Bezeichner. |
public method |
|
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 |
public method |
|
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 |
|