So wird es gemacht: Konfigurieren von Instanzspeicher-, Instanzabfrage- und Instanzsteuerungsanbieter

Nachdem Sie die Entwicklung eines Informationsspeichers, einer Abfrage oder eines Steuerungsanbieters abgeschlossen haben, müssen Sie den Anbieter mithilfe der unter Vorgehensweise: Registrieren von benutzerdefinierten Anbietern beschriebenen Schritte registrieren. Das Installationsprogramm des Anbieters sollte Schritte ausführen, die den in der folgenden Liste beschriebenen Schritten ähneln:

  1. Ausführen von Skriptdateien, die den physischen Instanzspeicher erstellen und Anbieterassemblys auf dem Computer installieren.

  2. Hinzufügen einer Definition für den Instanzspeicheranbieter zur Web.config-Stammdatei.

  3. Hinzufügen einer Definition für den Instanzspeicher zur Web.config-Stammdatei.

  4. Konfigurieren des Instanzspeicherverhaltens für einen Dienst in der zum Dienst gehörenden Konfigurationsdatei.

In diesem Thema wird außerdem beschrieben, wie einer Konfigurationsdatei eine Anbieterdefinition, eine Informationsspeicherdefinition sowie Informationsspeicherverhalten hinzugefügt wird, das den Informationsspeicher verwendet.

Instanzspeicheranbieter-Definition

Sie müssen einen Instanzspeicheranbieter für jeden Instanzspeichertyp in der Web.config-Datei definieren, der mit Windows Server AppFabric verwendet werden soll. Die Instanzspeicheranbieter-Definition enthält die folgenden Parameter:

Hinweis

Die Datei web.config für den Computer finden Sie an zwei verschiedenen Speicherorten: im Ordner <Laufwerk>\Windows\Microsoft.NET\Framework\v4.0.30319\Config und in dem Verzeichnis, in dem die Anwendung gespeichert wurde.

  • Name Gibt den Namen des Instanzspeicheranbieters an. Dieser Parameter ist ein zwingend erforderlicher Parameter.

  • Speicheranbieter Gibt den vollqualifizierten Namen des Typs an, der die abstrakte Klasse InstanceStoreProvider und die Assembly implementiert, die den Typ enthält. Dieser Parameter ist ein zwingend erforderlicher Parameter.

  • Abfrageanbieter Gibt den vollqualifizierten Namen des Typs an, der die abstrakte Klasse InstanceQueryProvider und die Assembly implementiert, die den Typ enthält. Dieser Parameter ist ein zwingend erforderlicher Parameter. Wenn der Informationsspeicher keinen Abfrageanbieter implementiert, können Sie eine leere Zeichenfolge als Wert für diesen Parameter angeben.

  • Steuerungsanbieter. Gibt den vollqualifizierten Namen des Typs an, der die abstrakte Klasse InstanceControlProvider und die Assembly implementiert, die den Typ enthält. Dieser Parameter ist ein zwingend erforderlicher Parameter. Wenn der Informationsspeicher keinen Steuerungsanbieter implementiert, können Sie eine leere Zeichenfolge als Wert für diesen Parameter angeben.

Das AppFabric-Installationsprogramm fügt eine Speicheranbieterdefinition für den Instanzspeicheranbieter für den SQL-Workflowinstanzspeicher wie im folgenden Beispiel gezeigt hinzu.

<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>

Während der Installation Ihres benutzerdefinierten Instanzspeicheranbieters sollten Sie die Speicheranbieterdefinition der Web.config-Stammdatei auf ähnliche Weise hinzufügen, wie die AppFabric-Installation die Definition für den SQL-Instanzanbieter hinzufügt. Wie Sie im Beispiel oben sehen können, ist die Anbieterdefinition Teil des Windows Server AppFabric-Konfigurationsabschnitts (Microsoft.ApplicationServer). Daher sollten Sie AppFabric installieren, bevor Sie benutzerdefinierte Speicheranbieter installieren. Wenn Sie einen Speicheranbieter installieren, bevor Sie AppFabric installieren, müssen Sie die entsprechenden Speicheranbieter-Konfigurationsabschnitte der Web.config-Stammdatei manuell hinzufügen. Wenn Sie AppFabric deinstallieren, wird der gesamte Abschnitt Microsoft.ApplicationServer entfernt. Sie möchten den benutzerdefinierten Instanzspeicheranbieter (nicht die Definition, sondern die Assembly, die den Speicheranbietertyp enthält) ggf. vor oder nach der Deinstallation von AppFabric entfernen.

Instanzspeicherdefinition

Eine Instanzspeicherdefinition definiert einen Informationsspeicher eines bestimmten Typs. Eine Speicherdefinition enthält die folgenden Parameter:

  1. Name Gibt den Namen des Instanzspeichers an. Dieser Parameter ist ein zwingend erforderlicher Parameter. Der Wert dieses Parameters kann eine leere Zeichenfolge sein.

  2. Beschreibung Gibt die Beschreibung des Instanzspeichers an. Dieser Parameter ist ein optionaler Parameter. Der Standardwert für diesen Parameter ist eine leere Zeichenfolge.

  3. Speicheranbieter Gibt den Namen des Speicheranbieters für den Instanzspeicher an. Dieser Parameter ist ein zwingend erforderlicher Parameter.

  4. Zusätzliche Attribute. Gibt optionale Attribute an, die als Name/Wert-Paare dargestellt werden. Eine Speicheradresse (z. B. eine Verbindungszeichenfolge für den SQL-Instanzspeicheranbieter) muss über einen dieser Parameter definiert werden. Andernfalls ist der Workflowverwaltungsdienst (Workflow Management Service, WMS) nicht in der Lage, eine Verbindung mit dem Informationsspeicher herzustellen.

Das folgende Beispiel zeigt Instanzspeicher, die in der Web.config-Stammdatei definiert sind. Sie müssen alle benutzerdefinierten Instanzspeicher auf ähnliche Weise hinzufügen.

<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>

Ein in einem höheren Bereich definierter Informationsspeicher wird von niedrigeren Bereichen automatisch geerbt. Es ist möglich, die geerbte Speicherdefinition aus einem Bereich zu entfernen, indem das Element <remove /> oder </clear> verwendet wird.

Erweiterung für Verhalten des Instanzspeichers

Sie sollten ein Erweiterungselement für Verhalten für den Instanzspeicher definieren, damit ein Benutzer Ihrem Instanzspeicher einen Dienst zuordnen kann. Die AppFabric-Installation fügt der Datei machine.config das folgende Erweiterungselement für Verhalten hinzu, damit sqlWorkflowInstanceStoreBehavior mit Ihrem Dienst verwendet werden kann. Sie müssen die Definition für Ihren Informationsspeicher auf ähnliche Weise während der Installation des Speicheranbieters hinzufügen.

<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>

Erweiterungen für Verhalten und Abschnittshandler (z. B. SqlWorkflowInstanceStore und workflowInstanceControl in der Datei machine.config) definieren ein namenloses Verhalten mit Standardeinstellungen auf der Stammebene. Fügen Sie der Datei machine.config speichertypspezifische Erweiterungen für Verhalten und Abschnittshandler hinzu. Das AppFabric-Setup fügt die Erweiterung für Verhalten für die Verhalten SqlWorkflowInstanceStore und WorkflowInstanceControl automatisch hinzu.

Konfigurieren eines Diensts zum Verwenden des Verhaltens und des Informationsspeichers

Damit Persistenz für einen Dienst aktiviert wird, müssen Sie ein Instanzspeicherverhalten in der Datei Web.config definieren, die einer Anwendung oder einem Dienst zugeordnet ist, und dann dem Dienst das Verhalten zuordnen. Das folgende Beispiel zeigt eine Beispieldefinition des Verhaltens sqlWorkflowInstanceStore. Der Wert von connectionStringName wird auf eine Instanzspeicherdefinition festgelegt, die ihrerseits auf eine Verbindungszeichenfolge verweist.

<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>

Konfiguration des SQL-Workflowinstanzspeichers

Das Windows Server AppFabric-Installationsprogramm erstellt eine Definition für den Instanzspeicheranbieter für den SQL-Workflowinstanzspeicher in der Web.config-Stammdatei. Sie können das Windows Server AppFabric-Konfigurationstool verwenden, das die folgenden Funktionen ausführt:

  • Erstellen einer eines SQL-Workflowinstanzspeichers in der Web.config-Stammdatei. Diese Definition enthält eine Verbindungszeichenfolge, die auf die Datenbank ApplicationServerExtension verweist.

  • Erstellen eines physischen Instanzspeichers, einer SQL Server-Datenbank namens ApplicationServerExtensions.

  • Installieren des Workflowverwaltungsdiensts als Windows-Dienst. Hinzufügen des WMS-Konfigurationsstandardabschnitts zur Web.config-Stammdatei mit einer Einstellung, die WMS anweist, Instanzspeicher automatisch zu erkennen.

  2011-12-05