Übersicht über WorkflowdiensteWorkflow Services Overview

Workflowdienste sind WCF-basierte Dienste, die mithilfe von Workflows implementiert werden.Workflow services are WCF-based services that are implemented using workflows. Workflowdienste sind Workflows, die die messagingaktivitäten zum Senden und Empfangen von Nachrichten von Windows Communication Foundation (WCF) verwenden.Workflow services are workflows that use the messaging activities to send and receive Windows Communication Foundation (WCF) messages. Mit .NET Framework 4.5 werden eine Reihe von Messagingaktivitäten eingeführt, mit denen Sie Nachrichten aus einem Workflow senden oder darin empfangen können..NET Framework 4.5 introduces a number of messaging activities that allow you send and receive messages from within a workflow. Weitere Informationen zu messagingaktivitäten und wie sie zum Implementieren verschiedener Nachrichtenaustauschmuster verwendet werden können, finden Sie unter Messagingaktivitäten.For more information about messaging activities and how they can be used to implement different message exchange patterns, see Messaging Activities.

Vorteile der Verwendung von WorkflowdienstenBenefits of Using Workflow Services

Da Anwendungen immer stärker dezentral verwendet werden, sind häufiger einzelne Dienste für das Aufrufen anderer Dienste zuständig, um einige Arbeitsaufgaben zu verteilen.As applications become increasingly distributed, individual services become responsible for calling other services to offload some of the work. Das Implementieren dieser Aufrufe als asynchrone Vorgänge führt zu einem höheren Maß an Komplexität im Code.Implementing these calls as asynchronous operations introduces some complexity into the code. Zuusätzliche Komplexität ergibt sich aus der Fehlerbehandlung aufgrund der Behandlung von Ausnahmen und der Bereitstellung ausführlicher Nachverfolgungsinformationen.Error handling adds additional complexity in the form of handling exceptions and providing detailed tracking information. Einige Dienste verfügen häufig über eine lange Ausführungszeit und können beim Warten auf Eingaben wertvolle Systemressourcen binden.Some services are often long running and can take up valuable system resources while waiting for input. Aufgrund dieser Probleme sind verteilte Anwendungen häufig sehr komplex und schwierig zu schreiben und zu verwalten.Because of these issues, distributed applications are often very complex and difficult to write and maintain. Workflows sind eine natürliche Möglichkeit, die Koordination asynchroner Arbeit auszudrücken, besonders Aufrufe externer Dienste.Workflows are a natural way to express the coordination of asynchronous work, especially calls to external services. Workflows sind auch effektiv, wenn es um die Darstellung Geschäftsprozesse mit langer Laufzeit geht.Workflows are also effective at representing long-running business processes. Diese Qualitäten machen den Workflow zu einem nützlichen Instrument beim Erstellen von Diensten in einer verteilten Umgebung.It is these qualities that make the workflow a great asset to building services in a distributed environment.

Implementieren eines WorkflowdienstsImplementing a Workflow Service

Wenn Sie einen WCF-Dienst zu implementieren, definieren Sie eine Reihe von Verträgen, die den Dienst und die Daten, die ihm gesendeten und empfangenen beschreiben.When implementing a WCF service, you define a number of contracts that describe the service and the data that it sends and receives. Die Daten werden als Datenverträge und Nachrichtenverträge dargestellt.The data is represented as data contracts and message contracts. Sowohl WCF-Dienste als auch Workflowdienste verwenden Datenvertrags- und Nachrichtenvertragsdefinitionen als Teil ihrer Dienstbeschreibungen.Both WCF and workflow services use data contract and message contract definitions as part of service descriptions. Der Dienst selbst macht Metadaten (im WSDL-Format) verfügbar, um die Vorgänge des Diensts zu beschreiben.The service itself exposes metadata (in the form of WSDL) to describe the operations of the service. Bei WCF definieren Dienst- und Vorgangsverträge den Dienst und seine unterstützten Vorgänge.In WCF, service contracts and operation contracts define the service and the operations it supports. In einem Workflowdienst sind diese Verträge jedoch Teil des eigentlichen Geschäftsprozesses.However in a workflow service, these contracts are part of the business process itself. Sie werden in den Metadaten von einem Prozess verfügbar gemacht, der als Vertragsrückschluss bezeichnet wird.They are exposed in metadata by a process called contract inference. Wenn ein Workflowdienst mit WorkflowServiceHost gehostet wird, wird die Workflowdefinition untersucht, und basierend auf den im Workflow gefundenen Messagingaktivitäten wird ein Vertrag generiert.When a workflow service is hosted using WorkflowServiceHost, the workflow definition is examined and a contract is generated based on the set of messaging activities found in the workflow. Zum Generieren des Vertrags werden insbesondere die folgenden Aktivitäten und Eigenschaften verwendet:In particular, the following activities and properties are used to generate the contract:

Receive-AktivitätReceive Activity

  • ServiceContractName

  • `System.ServiceModel.Activities.Receive.OperationContractName`
  • Action

  • `System.ServiceModel.Activities.Receive.ValueType`

SendReply-AktivitätSendReply Activity

  • Action

  • xref:System.ServiceModel.Activities.SendReply.ValueType

TransactedReceiveScope-AktivitätTransactedReceiveScope Activity

Das Endergebnis des vertragsrückschlusses ist eine Beschreibung des Diensts, der die gleichen Datenstrukturen als WCF-Dienste und Vorgangsverträge.The end result of contract inference is a description of the service using the same data structures as WCF services and operation contracts. Diese Informationen werden dann verwendet, um WSDL für den Workflowdienst verfügbar zu machen.This information is then used to expose WSDL for the workflow service.

Hinweis

Mit .NET Framework 4.6.1.NET Framework 4.6.1 können Sie ohne zusätzliche Toolunterstützung keine Workflowdienste schreiben, die eine vorhandene Vertragsdefinition verwenden..NET Framework 4.6.1.NET Framework 4.6.1 does not allow you to write workflow services using an existing contract definition without some additional tooling support. Workflowdienstverträge werden mithilfe des oben erläuterten Vertragsrückschlussprozesses erstellt.Workflow service contracts are created by the contract inference process discussed previously. Nachrichtenverträge und Datenverträge werden jedoch vollständig unterstützt.Message contracts and data contracts are fully supported, however.

Workflowdienste und MSMQ-basierte BindungenWorkflow Services and MSMQ-Based Bindings

WCF definiert zwei MSMQ-basierten Bindungen, und zwar NetMsmqBinding und MsmqIntegrationBinding.WCF defines two MSMQ-based bindings NetMsmqBinding and MsmqIntegrationBinding. MSMQ-basierte Bindungen werden häufig in Verbindung mit Workflowdiensten verwendet, weil diese Dienste für lange Laufzeiten ausgelegt sind.MSMQ-based bindings are often used with workflow services because of the long-running nature of such services. Die MSMQ-basierten Bindungen verfügen über eine ValidityDuration-Eigenschaft, die angibt, wie lange MSMQ-Nachrichten voraussichtlich gültig sind.The MSMQ-based bindings have a ValidityDuration property that specifies how long MSMQ messages can assume to be valid. Aufgrund der langfristigen Auslegung von Workflowdiensten ist es möglich, dass die Gültigkeitsdauer einer MSMQ-Nachricht abläuft, bevor der Workflowdienst diese verarbeiten kann.Because of the long running nature of workflow services it is possible that the validity duration of a MSMQ message may elapse before the workflow service can process it. Es ist daher sehr wichtig, die Gültigkeitsdauer einer MSMQ-Bindung auf einen passenden Wert festzulegen.It is therefore very important to set the validity duration of a MSMQ binding to an appropriate value. Dieser Wert muss basierend auf dem Workflows und der jeweiligen Verarbeitung von Nachrichten ausgewählt werden.This value must be chosen based on the workflow and how it processes messages. Wenn Sie z. B. über einen Workflow mit einer Receive-Aktivität gefolgt von einer benutzerdefinierten Aktivität mit einer Ausführungsdauer von 10 Minuten verfügen, auf die dann eine weitere Receive-Aktivität folgt, ist der richtige Wert für ValidityDuration höher als 10 Minuten.For example if you have a workflow with a Receive activity followed by a custom activity that takes 10 minutes to run, followed by another Receive activity, the correct value for ValidityDuration would be greater than 10 minutes.

Hosten eines WorkflowdienstsHosting a Workflow Service

Workflowdienste müssen gehostet werden, wie WCF-Dienste.Like WCF services, workflow services must be hosted. WCF-Dienste verwenden die ServiceHost -Klasse zum Hosten von Diensten und Workflows services verwenden WorkflowServiceHost zum Hosten von Diensten.WCF services use the ServiceHost class to host services and workflow services use WorkflowServiceHost to host services. Wie WCF-Dienste können Workflowdienste in einer Vielzahl von Möglichkeiten, z. B. gehostet werden:Like WCF services, workflow services can be hosted in a variety of ways, for example:

  • In einer verwalteten .NET Framework.NET Framework-AnwendungIn a managed .NET Framework.NET Framework application.

  • in Internetinformationsdienste (IIS).In Internet Information Services (IIS).

  • Unter dem Windows-Prozessaktivierungsdienst (WAS)In Windows Process Activation Service (WAS).

  • Unter einem verwalteten Windows-DienstIn a managed Windows Service.

Unter einer verwalteten .NET Framework.NET Framework-Anwendung oder einem verwalteten Windows-Dienst gehostete Workflowdienste erstellen eine Instanz der WorkflowServiceHost-Klasse und übergeben an diese eine Instanz von WorkflowService, worin die Workflowdefinition innerhalb der Body-Eigenschaft enthalten ist.Workflow services hosted in a managed .NET Framework.NET Framework application or a managed Windows service create an instance of the WorkflowServiceHost class and pass it an instance of the WorkflowService that contains the workflow definition within the Body property. Eine Workflowdefinition, die Messagingaktivitäten enthält, wird als Workflowdienst verfügbar gemacht.A workflow definition that contains messaging activities is exposed as a workflow service.

Um einen Workflowdienst unter IIS zu hosten, fügen Sie die XAMLX-Datei mit der Workflowdienstdefinition in ein virtuelles Verzeichnis ein.To host a workflow service in IIS or WAS, place the .xamlx file that contains the workflow service definition into a virtual directory. Ein Standardendpunkt (mit BasicHttpBinding) wird automatisch erstellt, Weitere Informationen, finden Sie unter vereinfachte Konfiguration.A default endpoint (using BasicHttpBinding) is created automatically For more information, see Simplified Configuration. Sie können auch eine Web.config-Datei in das virtuelle Verzeichnis einfügen, um eigene Endpunkte anzugeben.You can also place a Web.config file in the virtual directory to specify your own endpoints. Wenn sich die Workflowdefinition in einer Assembly befindet, können Sie eine SVC-Datei in das virtuelle Verzeichnis und die Workflowassembly in das Verzeichnis "App_Code" einfügen.If your workflow definition is in an assembly you can place a .svc file in the virtual directory and the workflow assembly in the App_Code directory. In der SVC-Datei muss die Diensthostfactory und die Klasse angegeben sein, die den Workflowdienst implementiert.The .svc file must specify the service host factory and the class that implements the workflow service. Das folgende Beispiel zeigt, wie Sie die Diensthostfactory und die Klasse angeben, die den Workflowdienst implementiert.The following example shows how to specify the service host factory and specify the class that implements the workflow service.

<%@ServiceHost Factory=" System.ServiceModel.Activities.Activation.WorkflowServiceHostFactory  
Service="EchoService"%>