Interne Funktionsweise des Workflowdiensthosts

WorkflowServiceHost stellt einen Host für Workflowdienste bereit.Der Host lauscht unter anderem auf eingehende Meldungen, leitet sie an die entsprechende Workflowdienstinstanz weiter und kontrolliert das Entladen und Beibehalten von Workflows.In diesem Thema wird beschrieben, wie eingehende Meldungen vom WorkflowServiceHost verarbeitet werden.

Übersicht über WorkflowServiceHost

Mit der WorkflowServiceHost-Klasse werden Workflowdienste gehostet.Die Klasse lauscht auf eingehende Meldungen und leitet diese an die entsprechende Dienstinstanz weiter, erstellt neue Dienstinstanzen oder lädt vorhandene Instanzen bei Bedarf aus dem permanenten Speicher.Im folgenden Diagramm wird die allgemeine Funktionsweise von WorkflowServiceHost veranschaulicht.

Übersicht über WorkflowServiceHost

Das Diagramm zeigt, dass Workflowdienstdefinitionen von WorkflowServiceHost aus XAMLX-Dateien und Konfigurationsinformationen aus einer Konfigurationsdatei geladen werden.Außerdem wird eine Überwachungskonfiguration aus dem Überwachungsprofil geladen.WorkflowServiceHost macht einen Workflowsteuerungsendpunkt verfügbar, mit dem Sie Steuerungsvorgänge an Workflowinstanzen senden können.Weitere Informationen finden Sie unter Workflowsteuerungsendpunkt und Workflowverwaltungsendpunkt (Beispiel).

WorkflowServiceHost macht darüber hinaus Anwendungsendpunkte zum Lauschen auf eingehende Meldungen verfügbar.Eingehende Meldungen werden an die entsprechende Workflowdienstinstanz gesendet (sofern diese aktuell geladen ist).Bei Bedarf wird eine neue Workflowinstanz erstellt.Wenn eine vorhandene Instanz beibehalten wurde, wird diese aus dem Persistenzspeicher geladen.

Details zum WorkflowServiceHost

Im folgenden Diagramm wird detaillierter veranschaulicht, wie Meldungen von WorkflowServiceHost verarbeitet werden.

Meldungsfluss des Workflowdiensthosts

Das Diagramm enthält drei verschiedene Endpunkte: einen Anwendungsendpunkt, einen Workflowsteuerungsendpunkt sowie einen Workflowhostingendpunkt.Der Anwendungsendpunkt empfängt Meldungen für eine spezifische Workflowinstanz.Der Workflowsteuerungsendpunkt lauscht auf Steuerungsvorgänge.Der Workflowhostingendpunkt lauscht auf Meldungen, die bewirken, dass WorkflowServiceHost geladen wird und Workflows ausgeführt werden, die keine Dienstworkflows sind.Alle Meldungen werden, wie im Diagramm gezeigt, von der WCF-Laufzeit verarbeitet.Die Einschränkung von Workflowdienstinstanzen wird mit der MaxConcurrentInstances-Eigenschaft erreicht.Diese Eigenschaft schränkt die Anzahl von gleichzeitigen Workflowdienstinstanzen ein.Wenn diese Drosselung überschritten wird, werden zusätzliche Anforderungen für neue Workflowdienstinstanzen oder Anforderungen zum Aktivieren beibehaltener Workflowinstanzen in einer Warteschlange gespeichert.Die in der Warteschlange gespeicherten Anforderungen werden in FIFO-Reihenfolge verarbeitet, unabhängig davon, ob sie Anforderungen für eine neue Instanz oder eine ausgeführte, beibehaltene Instanz sind.Hostrichtlinieninformationen werden geladen, um festzulegen, wie Ausnahmefehler gehandhabt und Workflowdienste im Leerlauf entladen und beibehalten werden.Weitere Informationen finden Sie unter zu diesen Themen finden Sie unter Vorgehensweise: Konfigurieren des Verhaltens bei nicht behandelten Ausnahmen für Workflows mit WorkflowServiceHost und Vorgehensweise: Konfigurieren des Leerlaufverhaltens mit WorkflowServiceHost.Workflowinstanzen werden gemäß den Hostrichtlinien beibehalten und bei Bedarf erneut geladen.Weitere Informationen zur Workflowpersistenz finden Sie unter Vorgehensweise: Konfigurieren der Persistenz mit WorkflowServiceHost, Erstellen eines Workflowdiensts mit langer Ausführungszeit und Workflowpersistenz.

In der folgenden Abbildung wird das Aufrufen von WorkflowServiceHost.Open veranschaulicht.

Bei Aufruf von WorkflowServiceHost.Open

Der Workflow wird aus XAML geladen, und die Aktivitätsstruktur wird erstellt.WorkflowServiceHost durchläuft die Aktivitätsstruktur und erstellt die Dienstbeschreibung.Die Konfiguration wird auf den Host angewendet.Abschließend beginnt der Host mit dem Lauschen auf eingehende Meldungen.

In der folgenden Abbildung wird die Vorgehensweise von WorkflowServiceHost beim Empfangen einer Meldung für eine Receive-Aktivität veranschaulicht, deren CanCreateInstance auf true festgelegt ist.

Workflowdiensthost empfängt eine Meldung

Die Meldung wird empfangen und vom WCF-Kanalstapel verarbeitet.Drosselungen werden überprüft und Korrelationsabfragen ausgeführt.Wenn die Meldung an eine vorhandene Instanz gerichtet ist, wird sie übermittelt.Wenn eine neue Instanz erstellt werden muss, wird die Receive-Aktivität der CanCreateInstance-Eigenschaft überprüft.Wenn die Eigenschaft auf True festgelegt ist, wird eine neue Instanz erstellt, und die Meldung wird übermittelt.

In der folgenden Abbildung wird die Vorgehensweise von WorkflowServiceHost beim Empfangen einer Meldung für eine Receive-Aktivität veranschaulicht, deren CanCreateInstance auf False festgelegt ist.

WorkflowServiceHost empfängt eine Meldung

Die Meldung wird empfangen und vom WCF-Kanalstapel verarbeitet.Drosselungen werden überprüft und Korrelationsabfragen ausgeführt.Die Meldung ist für eine vorhandene Instanz bestimmt (CanCreateInstance ist auf False festgelegt). Daher wird die Instanz aus dem Persistenzspeicher geladen, das Lesezeichen wird wiederaufgenommen, und der Workflow wird ausgeführt.

Warnung

Der Workflowdiensthost kann nicht geöffnet werden, wenn SQL Server nur zum Lauschen auf das NamedPipe-Protokoll konfiguriert wurde.

Siehe auch

Workflowdienste
Hosten von Workflowdiensten
Workflowsteuerungsendpunkt
Workflowverwaltungsendpunkt (Beispiel)
Vorgehensweise: Konfigurieren des Verhaltens bei nicht behandelten Ausnahmen für Workflows mit WorkflowServiceHost
Erstellen eines Workflowdiensts mit langer Ausführungszeit
Workflowpersistenz