如何:配置实例存储、查询和控制提供程序

在完成存储、查询或控制提供程序的开发之后,您需要按照如何: 注册自定义提供程序中介绍的步骤来注册提供程序。提供程序的安装程序应执行与下表中类似的步骤:

  1. 运行创建物理实例存储的脚本文件,并在计算机上安装提供程序程序集。

  2. 将实例存储提供程序的定义添加到根 Web.config 文件。

  3. 将实例存储的定义添加到 Web.config 文件。

  4. 为与服务关联的配置文件中的服务配置实例存储行为。

本主题的剩余部分介绍如何添加提供程序定义、存储定义和对配置文件使用存储的存储行为。

实例存储提供程序定义

您必须在根 Web.config 文件中为计划与 Windows Server AppFabric 配合使用的每种类型的实例存储定义实例存储提供程序。实例存储提供程序定义包含以下参数:

备注

计算机的 web.config 文件可以在两个不同的位置中找到:一个是 <驱动器>\Windows\Microsoft.NET\Framework\v4.0.30319\Config 文件夹中,另一个是放置该应用程序的目录中。

  • 名称。指定实例存储提供程序的名称。此参数为强制参数。

  • 存储提供程序。指定实现 InstanceStoreProvider 抽象类的类型的完全限定的名称和包含该类型的程序集。此参数为强制参数。

  • 查询提供程序。指定实现 InstanceQueryProvider 抽象类的类型的完全限定的名称和包含该类型的程序集。此参数为强制参数。如果存储不实现查询提供程序,则可以将空字符串指定为此参数的值。

  • 控制提供程序。指定实现 InstanceControlProvider 抽象类的类型的完全限定的名称和包含该类型的程序集。此参数为强制参数。如果存储不实现控制提供程序,则可以将空字符串指定为此参数的值。

AppFabric 安装程序会为 SQL 工作流实例存储的实例存储提供程序添加一个存储提供程序定义,如下例所示。

<configuration>
    <microsoft.applicationServer>
        <persistence>
            <instanceStoreProviders>
                <add name="sqlStoreProvider"
                    storeProvider="Microsoft.ApplicationServer.StoreProvider.Sql.SqlWorkflowInstanceStoreFactory, Microsoft.ApplicationServer.StoreProvider, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                    queryProvider="Microsoft.ApplicationServer.StoreManagement.Sql.Query.SqlInstanceQueryProvider, Microsoft.ApplicationServer.StoreManagement, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                    controlProvider="Microsoft.ApplicationServer.StoreManagement.Sql.Control.SqlInstanceControlProvider, Microsoft.ApplicationServer.StoreManagement, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            </instanceStoreProviders>
        </persistence>
    </microsoft.applicationServer>
</configuration>

在自定义实例存储提供程序的安装过程中,您应该将存储提供程序定义添加到根 Web.config 文件,类似于 AppFabric 安装为 SQL 实例提供程序添加定义的方式。如上例所示,提供程序定义是 Windows Server AppFabric 配置部分 (Microsoft.ApplicationServer) 的一部分。因此,您应该在安装自定义存储提供程序之前安装 AppFabric。如果在安装 AppFabric 之前安装存储提供程序,则必须将对应的存储提供程序配置部分手动添加到根 Web.config 文件。当卸载 AppFabric 时,将删除整个 Microsoft.ApplicationServer 部分。您可能希望在卸载 AppFabric 之前或之后删除自定义实例存储提供程序(不是定义,而是包含存储提供程序类型的程序集)。

实例存储定义

实例存储定义用于定义特定类型的存储。存储定义包含以下参数:

  1. 名称。指定实例存储的名称。此参数为强制参数。此参数的值可以是空字符串。

  2. 描述。指定有关实例存储的描述。此参数为可选参数。此参数的默认值为空字符串。

  3. 存储提供程序。指定实例存储的存储提供程序的名称。此参数为强制参数。

  4. 其他属性。指定表示为名称-值对的可选属性。存储地址(如 SQL 实例存储提供程序的连接字符串)必须通过这些参数之一定义。否则,工作流管理服务 (WMS) 将无法连接到存储。

以下示例显示了根 Web.config 文件中定义的实例存储。您需要以类似方式添加任何自定义实例存储。

<configuration>
    <microsoft.applicationServer>
        <persistence>
            <instanceStores>
                <add name="storeA"
                    provider="sqlStoreProvider"
                    connectionStringName="storeA-str" />
                <add name="storeB"
                    provider="sqlStoreProvider"
                    connectionStringName="storeB-str" />
                <add name="storeC"
                    provider="MyStoreProvider"
                    MyAddressStringName="storeC-str"
                    value1="rrr"
                    value2="sss"
                    value3="ttt" />
            </instanceStores>
        </persistence>
    </microsoft.applicationServer>
</configuration>

较高作用域定义的存储由较低作用域自动继承。可以使用 <remove /> 或 </clear> 元素从作用域中删除继承的存储定义。

实例存储行为扩展

您应该为实例存储定义行为扩展元素,以便用户可以将服务与您的实例存储相关联。AppFabric 安装会向 machine.config 文件中添加以下行为扩展元素,以便可以将 sqlWorkflowInstanceStoreBehavior 与您的服务配合使用。您需要以类似方式在存储提供程序的安装过程中为存储行为添加定义。

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name="sqlWorkflowInstanceStore" type="System.ServiceModel.Activities.Configuration.SqlWorkflowInstanceStoreElement, System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        </behaviorExtensions>
    </extensions>
</system.serviceModel>

行为扩展和节处理程序(如 machine.config 文件中的 SqlWorkflowInstanceStore 和 workflowInstanceControl)在根级别定义具有默认设置的无名称行为。将存储类型特定的行为扩展和节处理程序添加到 machine.config 文件。AppFabric 安装程序会自动为 SqlWorkflowInstanceStore 和 WorkflowInstanceControl 行为添加行为扩展。

配置服务以使用行为和存储

若要为服务启用暂留,需要在与应用程序或服务关联的 Web.config 文件中定义实例存储行为,并将服务与行为相关联。以下示例显示了 sqlWorkflowInstanceStore 行为的示例定义。connectionStringName 的值被设置为实例存储定义,后者指向连接字符串。

<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name=”myServiceBehavior”>
                <sqlWorkflowInstanceStore
                    connectionStringName="storeA-str"
                    instanceCompletionAction=”DeleteAll”
                    instanceLockedExceptionAction=”NoRetry”
                    hostLockRenewalPeriod=”00:00:30”
                    runnableInstanceDetectionPeriod=”00:00:10” />
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>

SQL 工作流实例存储配置

Windows Server AppFabric 安装程序在根 Web.config 文件中为 SQL 工作流实例存储的实例存储提供程序创建定义。可以使用 Windows Server AppFabric 配置工具执行以下功能:

  • 在根 Web.config 文件中创建 SQL 工作流实例存储的定义。此定义包含引用 ApplicationServerExtension 数据库的连接字符串。

  • 创建物理实例存储,一个名为 ApplicationServerExtensions 的 SQL Server 数据库。

  • 将工作流管理服务 (WMS) 安装为 Windows 服务。将默认的 WMS 配置节添加到具有指示 WMS 自动发现实例存储这一设置的根 Web.config 文件。

  2011-12-05