Freigeben über


Transaktions-Konvoi-Bereich

Dieses Thema gilt für Windows Workflow Foundation 4.

Anhand dieses Beispiels wird veranschaulicht, wie ein paralleles Konvoi-Meldungsaktivitätsmuster zusammen mit einem TransactedReceiveScope verwendet wird, um ein Protokoll zu modellieren, bei dem in derselben Transaktion mehrere Vorgänge in beliebiger Reihenfolge auftreten können. Des Weiteren wird veranschaulicht, wie ein TransactedReceiveScope automatisch eine neue Transaktion erstellt, wenn keine Transaktion an den Server weitergegeben wird, sodass der Client keine Transaktionen verwendet.

Das Beispiel besteht aus zwei Workflowprojekten, die jeweils Client und Server darstellen. Das Clientprojekt führt einen Workflow aus, der mit dem Senden einer Meldung zur Ausführung eines Bootstrap für den Serverworkflow beginnt. Dadurch wird eine Korrelation initialisiert und ein Transaktionsbereich für den Rest der Messagingaktivitäten gestartet. Die Sequence-Aktivität des Clients enthält zunächst ein Send- und ReceiveReply-Paar und darauffolgend eine Parallel-Aktivität mit drei Verzweigungen. Jede Verzweigung sendet eine unidirektionale Nachricht an den Server. Die CompletionCondition-Eigenschaft der Parallel-Aktivität wird auf false festgelegt, damit alle drei Verzweigungen abgeschlossen werden.

Der Serverworkflow ist identisch mit dem Clientworkflow, mit der Ausnahme, dass die Messagingaktivitäten an die Serverseite der Kommunikation gerichtet und in einer TransactedReceiveScope-Aktivität enthalten sind, damit alle Arbeitsabläufe innerhalb derselben Transaktion ausgeführt werden. Wenn der Server die erste Nachricht empfängt, wird eine Transaktion erstellt und für den Bereich des TransactedReceiveScope-Texts als Ambient-Transaktion festgelegt, damit jede Aktivität in diesem Bereich auf die Transaktion zugreifen kann. Danach werden alle empfangenen Nachrichten parallel ausgeführt. Alle empfangenen Nachrichten müssen genau einmal ausgeführt werden, wie in der Abschlussbedingung für parallele Aktivitäten festgelegt. Am Ende des TransactedReceiveScope-Texts ist ein impliziter Persistenzpunkt vorhanden, und der Persistenzvorgang wird ebenfalls innerhalb derselben Transaktion ausgeführt.

So verwenden Sie dieses Beispiel

  1. Öffnen Sie in Visual Studio 2010 die Projektmappendatei "ParallelConvoySample.sln".

  2. Drücken Sie F6, um die Projektmappe zu erstellen.

  3. Stellen Sie sicher, dass beide Projekte als Startprojekte festgelegt sind.

    1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, und wählen Sie Startprojekte festlegen.

    2. Wählen Sie die Option Mehrere Startprojekte, und stellen Sie sicher, dass die Aktion für beide Projekte Starten ist.

  4. Drücken Sie STRG+F5, um die Projektmappe auszuführen.

    Der Server gibt die Meldung Server is running aus, die angibt, dass der Server bereit ist.

    Drücken Sie bei geöffnetem Clientkonsolenfenster eine beliebige Taste, um das Beispiel zu starten.

Dd744846.Important(de-de,VS.100).gif Hinweis:
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.

<Installationslaufwerk>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.

<Installationslaufwerk>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactedConvoyScope