Поделиться через


Readme_ShoppingCart

Изменения: 5 декабря 2005 г.

Образец Shopping Cart использует идентификатор группы сообщений, чтобы поддерживать состояние простого приложения «Корзина». Это приложение использует образец ServiceBrokerInterface.

Образец приложения Shopping Cart по умолчанию устанавливается в папку C:\Program Files\Microsoft SQL Server\100\Samples\Engine\\ServiceBroker\ShoppingCart. Если отсутствует папка образцов, см. раздел Установка образцов.

Образцы предназначены только для обучения. Они не предназначены для использования в рабочей среде и не тестировались в ней. Корпорация Майкрософт не предоставляет техническую поддержку для этих образцов. Образцы приложений и сборок не следует соединять или использовать с рабочей базой данных SQL Server или с сервером отчетов без разрешения системного администратора.

Построение и установка образца

  1. В среде Visual Studio 2005 откройте файл ShoppingCartCS.sln.

  2. Постройте решение, нажав клавишу F6 или выбрав пункт Построить решение в меню Построить.

  3. Откройте командную строку, найдите папку Scripts и выполните следующую команду.

    install all
    

    Сценарий установки устанавливает объекты SQL Server для приложения. Они включают хранимую процедуру среды выполнения CLR, реализующую службу ShoppingCartService.

Запуск образца

  1. Запустите приложение ShoppingCartClient.exe из каталога образцов. Для упрощения образца клиент обрабатывает один заказ при каждом запуске.

  2. Нажмите кнопку Создать заказ, чтобы создать заказ. Добавьте товары в корзину, выбирая товар из списка Товары, а затем нажимая кнопку Добавить товар.

  3. В любой момент можно перейти на вкладку Трассировка компонента Service Broker, чтобы просмотреть сводку сообщений, отправленных и полученных компонентом Service Broker.

  4. Таблицы ShoppingList и StateTable в базе данных ssb_ShoppingCart поддерживают состояние для приложения. Хранимая процедура CLR обновляет таблицы на основе сообщений от клиента. Можно использовать среду Management Studio или программу sqlcmd, чтобы исследовать эти таблицы.

Удаление образца

  1. Откройте командную строку, найдите папку Scripts и выполните следующую команду.

    uninstall all
    
  2. Сценарий удаления удаляет объекты SQL Server для приложения.

Требования

Для этого образца необходима среда Visual Studio 2005. Поскольку он использует функции среды CLR, которые недоступны в прежних версиях, в ранее выпущенных версиях среды Visual Studio построить образец невозможно.

Демонстрации

Приложения компонента Service Broker чаще всего хранят состояние в базе данных, в которой размещена служба. Когда поступают сообщения, приложение загружает состояние из базы данных, а затем обрабатывает сообщения.

Класс Service образца Service Broker Interface обеспечивает удобный способ сохранения состояния. Этот образец демонстрирует способы использования класса Service для сохранения состояния.

Чтобы сохранять состояние при помощи класса Service, нужно реализовать два метода в приложении и хранимую процедуру в сервере SQL Server, как показано в следующей таблице.

Элемент Сигнатура Описание

Хранимая процедура

CREATE PROCEDURE имя (@cgid uniqueidentifier)

Возвращает состояние для приложения. Результирующие наборы, возвращаемые этой процедурой, должны содержать идентификатор группы сообщений.

Открытый метод

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

Считывает результирующие наборы, предоставляемые хранимой процедурой для восстановления состояния. Эта хранимая процедура сохраняет идентификатор группы сообщений в классе, поскольку интерфейс компонента Service Broker не предоставляет идентификатор методу SaveState.

Открытый метод

public override void SaveState()

Сохраняет состояние в базе данных.

Этот подраздел описывает в общих чертах восстановление состояния. См. полный пример в файле ShoppingCartService.cs.

Хранимая процедура должна принять идентификатор группы сообщений и возвратить два результирующих набора. Первый результирующий набор состоит из самого идентификатора группы сообщений. Второй результирующий набор содержит состояние, касающееся приложения. Не существует обязательного имени для этой хранимой процедуры. Вместо этого с помощью установки свойства AppLoaderProcName предоставляется имя хранимой процедуры. Интерфейс компонента Service Broker просто вызывает предоставляемую хранимую процедуру.

Метод LoadState восстанавливает состояние для приложения. Точная схема процесса, которому следует приложение, зависит от состояния, необходимого приложению. Метод принимает экземпляр System.Data.Sql.SqlReader в качестве параметра. SqlReader содержит результирующие наборы, возвращаемые хранимой процедурой. Обычно реализации метода LoadState обновляют свойство State класса Service, сохраняют идентификатор группы сообщений в собственном отдельном поле, а затем сохраняют относящееся к приложению состояние в соответствующих структурах данных. Например, служба ShoppingCartService хранит сведения о товарах, количестве и ценах в собственном отдельном экземпляре класса ShoppingCart.

После вызова метода LoadState инфраструктура компонента Service Broker отправляет сообщение. Обратите внимание на то, что, если используется система отправки сообщений на основе атрибутов, сообщения можно отправлять, основываясь как на свойстве State, так и на имени типа сообщения. В методах, которые обрабатывают сообщения, можно считывать или обновлять структуры данных, созданные в методе LoadState.

После завершения выполнения обрабатывающего сообщение метода инфраструктура компонента Service Broker вызывает метод SaveState. Метод SaveState использует свойство Connection класса Service, чтобы создать объект SqlCommand, затем использует этот объект, чтобы обновить состояние, хранимое в базе данных. Например, служба ShoppingCartService удаляет сохраненное содержимое из корзины и затем вставляет текущее содержимое пользовательской корзины в базу данных.

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Измененное содержимое:
  • Измененные инструкции по созданию файла ключа, включающие его имя и расположение.