Readme_ShoppingCart
Mis à jour : 5 décembre 2005
L'exemple ShoppingCart utilise l'identificateur de groupe de conversations pour gérer l'état d'une application simple de panier d'achat virtuel. L'application utilise l'exemple ServiceBrokerInterface.
Par défaut, l'exemple d'application Shopping Cart est installé dans le dossier C:\Program Files\Microsoft SQL Server\100\Samples\Engine\\ServiceBroker\ShoppingCart. Si le dossier exemple n'est pas présent, consultez Installation des exemples.
Les exemples sont fournis à titre éducatif uniquement. Ils ne sont pas destinés à être utilisés dans un environnement de production et n'ont pas été testés à cet usage. Microsoft ne fournit aucun support technique pour ces exemples. Les exemples d'applications et les assemblys ne doivent pas être utilisés avec votre base de données SQL Server de production ou votre serveur de rapports, ou y être connectés, sans l'autorisation de l'administrateur système.
Génération et installation de l'exemple
Dans Visual Studio 2005, ouvrez
ShoppingCartCS.sln
.Générez la solution en appuyant sur F6 ou en sélectionnant Générer la solution dans le menu Générer.
Dans une fenêtre d'invite de commandes, recherchez le dossier
Scripts
, puis exécutez la commande suivante :install all
Le script d'installation installe les objets SQL Server pour l'application, y compris la procédure stockée CLR (Common Language Runtime) qui implémente le service ShoppingCartService.
Exécution de l'exemple
Exécutez l'application
ShoppingCartClient.exe
à partir du répertoire de l'exemple. Pour simplifier, le client traite une commande chaque fois qu'il s'exécute.Cliquez sur Create Order pour créer une commande. Ajoutez des articles dans le panier d'achat en les sélectionnant dans la liste Item, puis en cliquant sur le bouton Add Item.
Cliquez sur l'onglet Service Broker Trace à tout moment pour afficher un résumé des messages Service Broker envoyés et reçus.
Les tables ShoppingList et StateTable de la base de données ssb_ShoppingCart gèrent l'état de l'application. La procédure stockée CLR met à jour les tables en fonction des messages provenant du client. Vous pouvez utiliser Management Studio ou sqlcmd pour examiner ces tables.
Suppression de l'exemple
Dans une fenêtre d'invite de commandes, recherchez le dossier
Scripts
, puis exécutez la commande suivante :uninstall all
Le script de désinstallation supprime les objets SQL Server de l'application.
Configuration requise
Cet exemple nécessite Visual Studio 2005. Comme l'exemple utilise des fonctionnalités CLR qui n'étaient pas disponibles dans les versions précédentes, les versions de Visual Studio antérieures à 2005 ne peuvent pas le générer.
Montre ce qui suit
Généralement, les applications Service Broker stockent l'état dans la base de données qui héberge le service. Lorsque des messages arrivent, l'application charge l'état à partir de la base de données, puis traite les messages.
La classe Service
de l'exemple d'interface Service Broker fournit un moyen commode de gérer l'état. Cet exemple montre comment utiliser la classe Service pour gérer l'état.
Pour gérer l'état à l'aide de la classe Service
, vous mettez en œuvre deux méthodes dans votre application et une procédure stockée dans SQL Server, comme l'explique le tableau suivant :
Élément | Signature | Description |
---|---|---|
Procédure stockée |
|
Retourne l'état de l'application. Les ensembles de résultats retournés par cette procédure doivent contenir l'identificateur de groupe de conversations. |
Méthode publique |
|
Lit les ensembles de résultats fournis par la procédure stockée pour restaurer l'état. Cette procédure stockée doit enregistrer l'identificateur de groupe de conversations dans la classe, car l'interface Service Broker ne fournit pas l'identificateur à la méthode |
Méthode publique |
|
Enregistre l'état dans la base de données. |
Cette rubrique décrit dans ses grandes lignes le processus de restauration de l'état. Pour voir l'exemple complet, consultez ShoppingCartService.cs
.
La procédure stockée doit accepter un identificateur de groupe de conversations et retourner deux ensembles de résultats. Le premier ensemble de résultats contient l'identificateur de groupe de conversations lui-même. Le second ensemble de résultats contient l'état spécifique à l'application. Il n'existe pas de nom fixe pour cette procédure stockée. C'est vous qui indiquez le nom de la procédure stockée, en définissant la propriété AppLoaderProcName
. L'interface Service Broker appelle simplement la procédure stockée indiquée.
La méthode LoadState
restaure l'état de l'application. Le processus exact suivi par l'application dépend de l'état requis par l'application. La méthode admet comme paramètre une instance de System.Data.Sql.SqlReader
. L'objet SqlReader
contient les ensembles de résultats retournés par la procédure stockée. En général, les implémentations de la méthode LoadState
mettent à jour la propriété State
de la classe Service
, enregistrent l'identificateur de groupe de conversations dans un champ privé, puis enregistrent l'état spécifique à l'application dans les structures de données appropriées. Par exemple, le ShoppingCartService
stocke les informations sur les articles, les quantités et les prix dans une instance privée de la classe ShoppingCart
.
Après avoir appelé LoadState
, l'infrastructure Service Broker distribue le message. Notez que si vous utilisez l'infrastructure de distribution de messages basée sur les attributs, vous pouvez distribuer les messages en fonction de la propriété State en plus du nom du type de message. Dans les méthodes qui traitent les messages, vous pouvez lire ou mettre à jour les structures de données créées dans LoadState
.
Lorsque la méthode de traitement des messages a fini de s'exécuter, l'infrastructure Service Broker appelle la méthode SaveState
. La méthode SaveState
utilise la propriété Connection
de la classe Service pour créer un objet SqlCommand
qu'elle utilise ensuite pour mettre à jour l'état stocké dans la base de données. Par exemple, le ShoppingCartService
supprime le contenu enregistré du panier d'achat, puis insère le contenu actuel du panier d'achat dans la base de données.
Historique des modifications
Version | Historique |
---|---|
5 décembre 2005 |
|