Freigeben über


Bereitstellen eines Workflows als Webdienst

Das Windows Workflow Foundation-Framework verfügt über Unterstützung für die Interoperabilität von Webdiensten. Dazu zählt auch die Möglichkeit, einen Workflow für ASP.NET-Clients und andere Workflows als Webdienst verfügbar zu machen. Von der Windows Workflow Foundation wird das Veröffentlichen eines Workflows als ASP.NET-Webdienst auf einem Webserver oder einer Serverfarm unterstützt, von dem bzw. von der ASP.NET auf Internet Information Services (IIS) 6.0 ausgeführt wird. Da die Webdienstunterstützung der Windows Workflow Foundation auf ASP.NET 2.0 basiert, werden die meisten Features eines standardmäßigen ASP.NET-Webdiensts geerbt.

Die Basisaktivitätsbibliothek der Windows Workflow Foundation enthält die WebServiceInputActivity-Aktivität sowie die WebServiceOutputActivity-Aktivität, die die Verwendung eines Workflows als Webdienstendpunkt ermöglichen. Informationen zur Verwendung dieser Webdienstaktivitäten finden Sie unter Verwenden der WebServiceInputActivity-Aktivität sowie unter Verwenden der WebServiceOutputActivity-Aktivität.

Workflowwebhosting

Für das Workflowwebhosting werden die folgenden primären Klassen verwendet:

WorkflowWebHostingModule

Bei der WorkflowWebHostingModule-Klasse handelt es sich um den Standardroutingmechanismus für das Routing einer Webdienstanforderung an eine geeignete Workflowinstanz mithilfe von ASP.NET-Cookies. Natürlich müssen die Clients, von denen diese Anforderungen stammen, über Cookie-Unterstützung verfügen.

Obgleich dieser Standardroutingmechanismus von der Windows Workflow Foundation bereitgestellt wird, können Sie ein eigenes benutzerdefiniertes Routing implementieren. So kann der Client beispielsweise in einem Szenario, in dem die Aktivierung von Cookies auf dem Client nicht in Frage kommt, so konfiguriert werden, dass die Workflowinstanz mit einer bestimmten ID erstellt und diese ID bei jeder Webdienstanforderung weitergegeben wird. Die Anforderungspipeline kann mit SOAP- oder HTTP-Handlern zum Abfangen des Aufrufs konfiguriert werden, um die Workflowinstanz-ID aus den Headerinformationen abzurufen und HttpContext.Current.Items.Add("__WorkflowInstanceId__", workflowInstanceId) anschließend auf die eingegangene ID festzulegen.

ManualWorkflowSchedulerService

Bei der ManualWorkflowSchedulerService-Klasse handelt es sich um eine besondere Implementierung von WorkflowSchedulerService zum Steuern der Anzahl der in einem ASP.NET-Prozess erzeugten Threads. Hierzu wird der Thread wiederverwendet, von dem der ASP.NET-Webaufruf zum Ausführen der Workflowinstanz stammt. Dadurch ist jederzeit gewährleistet, dass die Anzahl der aktiven Threads in der Workflowlaufzeit der Anzahl aktiver Webanforderungen im ASP.NET-Prozess entspricht.

Einschränkungen für als Webdienst verfügbar gemachte Workflows

Das Instanzrouting basiert auf einer ASP.NET-Sitzung. Als Consumer eines Webdiensts muss es über Unterstützung für ein ASP.NET-Cookie verfügen.

Obgleich der Vorgang zum Empfangen der Anforderung und dem anschließenden Senden einer Antwort innerhalb eines Workflows als asynchroner Vorgang angelegt werden kann, gilt die allgemeine Beschränkung von ASP.NET für den Consumer eines Webdiensts. Mit anderen Worten: Prozesse können von einer Instanz nicht im Rahmen eines ausstehenden Anforderung-Antwort-Vorgangs migriert werden.

Aktivieren von Cookies zum Aufrufen eines Workflowwebdiensts

Der aktuelle Zustand wird von einem Workflowwebdienst mithilfe von Cookies nachverfolgt. Bei Veröffentlichung eines Workflows als Webdienst ist im Code des aufrufenden Clients das Aktivieren von Cookies erforderlich. Beispiel:

CalculatorWorkflow_WebService service = new CalculatorWorkflow_WebService();
service.CookieContainer = new System.Net.CookieContainer();

Dies ermöglicht die Verwendung von Methodenaufrufen für das Dienstobjekt.

Siehe auch

Referenz

WebServiceInputActivity
WebServiceOutputActivity
WorkflowWebHostingModule
ManualWorkflowSchedulerService

Konzepte

Kommunizieren mit anderen Workflows
Verwenden der WebServiceInputActivity-Aktivität
Verwenden der WebServiceOutputActivity-Aktivität

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.