Interne Funktionsweise des WorkflowdiensthostsWorkflow Service Host Internals

WorkflowServiceHost stellt einen Host für Workflowdienste bereit.WorkflowServiceHost provides a host for workflow services. Der Host lauscht unter anderem auf eingehende Meldungen, leitet sie an die entsprechende Workflowdienstinstanz weiter und kontrolliert das Entladen und Beibehalten von Workflows.It is responsible for listening for incoming messages and routing them to the appropriate workflow service instance, it controls unloading and persisting of idle workflows, and more. In diesem Thema wird beschrieben, wie eingehende Meldungen vom WorkflowServiceHost verarbeitet werden.This topic describes how WorkflowServiceHost processes incoming messages.

Übersicht über WorkflowServiceHostWorkflowServiceHost Overview

Mit der WorkflowServiceHost-Klasse werden Workflowdienste gehostet.The WorkflowServiceHost class is used to host workflow services. 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.It listens for incoming messages and routes them to the appropriate service instance, creating new instances or loading existing instances from durable storage as needed. Im folgenden Diagramm wird die allgemeine Funktionsweise von WorkflowServiceHost veranschaulicht.The following diagram illustrates on a high level how WorkflowServiceHost works.

Übersicht über WorkflowServiceHostWorkflowServiceHost Overview

Das Diagramm zeigt, dass Workflowdienstdefinitionen von WorkflowServiceHost aus XAMLX-Dateien und Konfigurationsinformationen aus einer Konfigurationsdatei geladen werden.This diagram shows that WorkflowServiceHost loads workflow service definitions from .xamlx files and loads configuration information from a configuration file. Außerdem wird eine Überwachungskonfiguration aus dem Überwachungsprofil geladen.It also loads tracking configuration from the tracking profile. WorkflowServiceHost macht einen Workflowsteuerungsendpunkt verfügbar, mit dem Sie Steuerungsvorgänge an Workflowinstanzen senden können.WorkflowServiceHost exposes a workflow control endpoint which allows you to send control operations to workflow instances. Weitere Informationen finden Sie unter Workflowsteuerungsendpunkt und Workflowverwaltungsendpunkt (Beispiel).For more information see Workflow Control Endpoint and Workflow Management Endpoint Sample.

WorkflowServiceHost macht darüber hinaus Anwendungsendpunkte zum Lauschen auf eingehende Meldungen verfügbar.WorkflowServiceHost also exposes application endpoints that listen for incoming application messages. Eingehende Meldungen werden an die entsprechende Workflowdienstinstanz gesendet (sofern diese aktuell geladen ist).When an incoming message arrives it is sent to the appropriate workflow service instance (if it is currently loaded). Bei Bedarf wird eine neue Workflowinstanz erstellt.If needed a new workflow instance is created. Wenn eine vorhandene Instanz beibehalten wurde, wird diese aus dem Persistenzspeicher geladen.Or if an existing instance has been persisted it is loaded from the persistence store.

Details zum WorkflowServiceHostWorkflowServiceHost Details

Im folgenden Diagramm wird detaillierter veranschaulicht, wie Meldungen von WorkflowServiceHost verarbeitet werden.The following diagram shows how WorkflowServiceHost handles messages in a bit more detail.

Nachrichtenfluss des WorkflowdiensthostsWorkflow Service Host Message Flow

Das Diagramm enthält drei verschiedene Endpunkte: einen Anwendungsendpunkt, einen Workflowsteuerungsendpunkt sowie einen Workflowhostingendpunkt.This diagram shows three different endpoints, an application endpoint, a workflow control endpoint, and a workflow hosting endpoint. Der Anwendungsendpunkt empfängt Meldungen für eine spezifische Workflowinstanz.The application endpoint receives messages that are bound for a specific workflow instance. Der Workflowsteuerungsendpunkt lauscht auf Steuerungsvorgänge.The workflow control endpoint listens for control operations. Der Workflowhostingendpunkt lauscht auf Meldungen, die bewirken, dass WorkflowServiceHost geladen wird und Workflows ausgeführt werden, die keine Dienstworkflows sind.The workflow hosting endpoint listens for messages that cause WorkflowServiceHost to load and execute non-service workflows. Alle Meldungen werden, wie im Diagramm gezeigt, von der WCF-Laufzeit verarbeitet.As shown in the diagram all messages are processed through the WCF runtime. Die Einschränkung von Workflowdienstinstanzen wird mit der MaxConcurrentInstances-Eigenschaft erreicht.Workflow service instance throttling is achieved by using the MaxConcurrentInstances property. Diese Eigenschaft schränkt die Anzahl von gleichzeitigen Workflowdienstinstanzen ein.This property will limit the number of concurrent workflow service instances. Wenn diese Drosselung überschritten wird, werden zusätzliche Anforderungen für neue Workflowdienstinstanzen oder Anforderungen zum Aktivieren beibehaltener Workflowinstanzen in einer Warteschlange gespeichert.When this throttle is exceeded any additional requests for new workflow service instances or requests to activate persisted workflow instances will be queued. 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.The queued requests are processed in FIFO order regardless of whether they are requests for a new instance or a running, persisted instance. Hostrichtlinieninformationen werden geladen, um festzulegen, wie Ausnahmefehler gehandhabt und Workflowdienste im Leerlauf entladen und beibehalten werden.Host policy information is loaded that determines how unhandled exceptions are dealt with, and how idle workflow services are unloaded and persisted. Weitere Informationen zu diesen Themen finden Sie unter wie: Konfigurieren von Workflows nicht behandeltes Ausnahmeverhalten mit WorkflowServiceHost und wie: Konfigurieren im Leerlauf Verhalten mit WorkflowServiceHost.For more information about these topics see How to: Configure Workflow Unhandled Exception Behavior with WorkflowServiceHost and How to: Configure Idle Behavior with WorkflowServiceHost. Workflowinstanzen werden gemäß den Hostrichtlinien beibehalten und bei Bedarf erneut geladen.Workflow instances are persisted according to host policies and are reloaded when needed. Weitere Informationen zu Workflowpersistenz finden Sie unter: Vorgehensweise: Konfigurieren von Persistenz mit WorkflowServiceHost, Erstellen eines Workflowdiensts langer, und Workflowpersistenz .For more information about workflow persistence see: How to: Configure Persistence with WorkflowServiceHost, Creating a Long-running Workflow Service, and Workflow Persistence.

In der folgenden Abbildung wird das Aufrufen von WorkflowServiceHost.Open veranschaulicht.The following illustration shows what the WorkflowServiceHost.Open is called.

WorkflowServiceHost.Open wird aufgerufen, wennWhen WorkflowServiceHost.Open is called

Der Workflow wird aus XAML geladen, und die Aktivitätsstruktur wird erstellt.The workflow is loaded from XAML and the activity tree is created. WorkflowServiceHost durchläuft die Aktivitätsstruktur und erstellt die Dienstbeschreibung.WorkflowServiceHost walks the activity tree and creates the service description. Die Konfiguration wird auf den Host angewendet.Configuration is applied to the host. Abschließend beginnt der Host mit dem Lauschen auf eingehende Meldungen.Finally the host begins to listen for incoming messages.

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.The following illustration shows what the WorkflowServiceHost does when it receives a message bound for a Receive activity that has CanCreateInstance set to true.

Workflowdiensthost empfängt eine NachrichtWorkflow Service Host Receives a message

Die Meldung wird empfangen und vom WCF-Kanalstapel verarbeitet.The message arrives and is processed by the WCF channel stack. Drosselungen werden überprüft und Korrelationsabfragen ausgeführt.Throttles are checked and correlation queries are executed. Wenn die Meldung an eine vorhandene Instanz gerichtet ist, wird sie übermittelt.If the message is bound for an existing instance the message is delivered. Wenn eine neue Instanz erstellt werden muss, wird die Receive-Aktivität der CanCreateInstance-Eigenschaft überprüft.If a new instance needs to be created, the Receive activity’s CanCreateInstance property is checked. Wenn die Eigenschaft auf True festgelegt ist, wird eine neue Instanz erstellt, und die Meldung wird übermittelt.If it is set to true, a new instance is created and the message is delivered.

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.The following illustration shows what the WorkflowServiceHost does when it receives a message bound for a Receive activity that has CanCreateInstance set to false.

WorkflowServiceHost empfängt eine NachrichtWorkflowServiceHost receives a message

Die Meldung wird empfangen und vom WCF-Kanalstapel verarbeitet.The message arrives and is processed by the WCF channel stack. Drosselungen werden überprüft und Korrelationsabfragen ausgeführt.Throttles are checked and correlation queries are executed. 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.The message is bound for an existing instance (because CanCreateInstance is false) so the instance is loaded from persistence store, the bookmark is resumed and the workflow executes.

Warnung

Der Workflowdiensthost kann nicht geöffnet werden, wenn SQL Server nur zum Lauschen auf das NamedPipe-Protokoll konfiguriert wurde.Workflow Service Host will fail to open if SQL Server is configured to listen on NamedPipe protocol only.

Siehe auchSee Also

WorkflowdiensteWorkflow Services
Hosten von WorkflowdienstenHosting Workflow Services
WorkflowsteuerungsendpunktWorkflow Control Endpoint
Workflowverwaltungsendpunkt (Beispiel)Workflow Management Endpoint Sample
Vorgehensweise: Konfigurieren des Verhaltens bei nicht behandelten Ausnahmen für Workflows mit WorkflowServiceHostHow to: Configure Workflow Unhandled Exception Behavior with WorkflowServiceHost
Erstellen eines Workflowdiensts mit langer AusführungszeitCreating a Long-running Workflow Service
WorkflowpersistenzWorkflow Persistence