Readme_ShoppingCart

更新日期: 2005 年 12 月 5 日

购物车示例使用会话组标识符来维护简单购物车应用程序的状态。 该应用程序使用 ServiceBrokerInterface 示例。

默认情况下,购物车示例应用程序安装在 C:\Program Files\Microsoft SQL Server\100\Samples\Engine\\ServiceBroker\ShoppingCart 中。 如果该示例文件夹不存在,请参阅安装示例

提供的示例仅供教学使用。这些示例不是针对生产环境设计的,也没有在生产环境中进行测试。对于这些示例,Microsoft 不提供相关的技术支持。未经系统管理员允许,不得将示例应用程序和程序集与生产 SQL Server 数据库或报表服务器相连或一起使用。

生成和安装示例

  1. 在 Visual Studio 2005 中打开 ShoppingCartCS.sln

  2. 通过按 F6 或在**“生成”菜单中选择“生成解决方案”**来生成解决方案。

  3. 打开命令提示符,找到 Scripts 文件夹,然后运行以下命令:

    install all
    

    安装脚本将为应用程序安装 SQL Server 对象。 这包括实现 ShoppingCartService 服务的公共语言运行时 (CLR) 存储过程。

运行示例

  1. 运行示例目录中的 ShoppingCartClient.exe 应用程序。 为简化起见,每次运行客户端时,客户端将处理一个订单。

  2. 单击**“创建订单”来创建一个订单。 通过从“项”列表选择项,再单击“添加项”**按钮来向购物车添加项。

  3. 可以随时单击**“Service Broker 跟踪”**选项卡查看发送和接收的 Service Broker 消息的摘要。

  4. ssb_ShoppingCart 数据库中的 ShoppingListStateTable 表维护应用程序的状态。 CLR 存储过程将根据来自客户端的消息更新这些表。 可以使用 Management Studio 或 sqlcmd 来检查这些表。

卸载示例

  1. 打开命令提示符,找到 Scripts 文件夹,然后运行以下命令:

    uninstall all
    
  2. 卸载脚本将删除应用程序的 SQL Server 对象。

要求

此示例需要使用 Visual Studio 2005。 因为该示例使用了早期版本中没有的 CLR 功能,所以 Visual Studio 2005 之前的版本无法生成该示例。

演示

Service Broker 应用程序通常在托管服务的数据库中存储状态。 消息到达时,应用程序从此数据库中加载状态,然后处理这些消息。

Service Broker Interface 示例的 Service 类为维护状态提供了一种方便的方法。 此示例说明如何使用 Service 类维护状态。

若要使用 Service 类维护状态,您需要在应用程序中实现两种方法并在 SQL Server 中实现一个存储过程,如下表所示:

签名 说明

存储过程

CREATE PROCEDURE name (@cgid uniqueidentifier)

返回应用程序的状态。 由此过程返回的结果集必须包含会话组标识符。

公共方法

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

读取由存储过程提供的结果集以还原状态。 此存储过程必须在类中保存会话组标识符,因为 Service Broker Interface 不会向 SaveState 方法提供该标识符。

公共方法

public override void SaveState()

将状态保存到数据库。

本主题说明了还原状态的一般摘要信息。 请参阅 ShoppingCartService.cs 获取完整示例。

存储过程必须接受会话组标识符,并返回两个结果集。 第一个结果集由会话组标识符本身组成。 第二个结果集包含特定于应用程序的状态。 此存储过程没有固定的名称。 可以通过设置 AppLoaderProcName 属性来提供该存储过程的名称。 Service Broker Interface 直接调用提供的存储过程。

LoadState 方法将还原应用程序的状态。 应用程序所依照的确切过程取决于该应用程序所需的状态。 该方法将 System.Data.Sql.SqlReader 实例作为参数。 SqlReader 包含由存储过程返回的结果集。 通常,LoadState 方法的实现将更新 Service 类的 State 属性,在私有字段中保存会话组标识符,然后在相应的数据结构中保存特定于应用程序的状态。 例如,ShoppingCartServiceShoppingCart 类的私有实例中存储有关项、数量和价格的信息。

调用 LoadState 后,Service Broker Infrastructure 将调度消息。 请注意,如果使用基于属性的消息调度框架,则可以根据 State 属性和消息类型名称来调度消息。 在处理消息的方法中,可以读取或更新在 LoadState 中创建的数据结构。

当消息处理方法返回时,Service Broker Infrastructure 将调用 SaveState 方法。 SaveState 方法将使用 Service 类的 Connection 属性来创建 SqlCommand 对象,然后使用该对象更新数据库中存储的状态。 例如,ShoppingCartService 将删除购物车保存的内容,然后将购物车的当前内容插入该数据库。

更改历史记录

发布日期 历史记录

2005 年 12 月 5 日

更改的内容:
  • 更改了有关生成密钥文件的说明,包括密钥文件的名称和位置。