Freigeben über


Entwickeln von Vertrag zuerst-Workflowdiensten

Ab .NET Framework 4.5 verfügt Windows Workflow Foundation über Features zur verbesserten Integration von Webdiensten und Workflows in Form der Vertrag zuerst-Workflowentwicklung. Das Tool für die Vertrag zuerst-Workflowentwicklung ermöglicht es Ihnen, den Vertrag zuerst im Code zu entwerfen. Das Tool generiert dann automatisch eine Aktivitätsvorlage für die Vertragsvorgänge in der Toolbox. Dieses Thema enthält eine Übersicht darüber, wie die Aktivitäten und Eigenschaften in einer Workflowdienstzuordnung den Attributen eines Dienstvertrags zugeordnet werden. Ein Schritt-für-Schritt-Beispiel für das Erstellen eines vertragsbasierten Workflowdiensts finden Sie unter Vorgehensweise: Erstellen eines Workflowdiensts, der einen vorhandenen Dienstvertrag nutzt.

In diesem Thema

Zuordnen von Dienstvertragsattributen zu Workflowattributen

Die Tabellen in den folgenden Abschnitten enthalten die verschiedenen WCF-Attribute und -Eigenschaften und veranschaulichen die Zuordnung zu Messagingaktivitäten und Eigenschaften in einem Vertrag zuerst-Workflow.

Dienstvertragsattribute

Eigenschaftenname Unterstützt BESCHREIBUNG WF-Validierung
CallbackContract Nein Ruft den Typ des Rückrufvertrags ab oder legt ihn fest, wenn es sich beim Vertrag um einen Duplexvertrag handelt. (Nicht zutreffend)
ConfigurationName Nein Ruft den Namen ab, mit dem der Dienst in einer Anwendungskonfigurationsdatei gesucht wird, oder legt ihn fest. (Nicht zutreffend)
HasProtectionLevel Ja Ruft einen Wert ab, der angibt, ob dem Member eine Schutzebene zugewiesen wurde. Receive.ProtectionLevel darf nicht NULL sein.
Name Ja Ruft den Namen für das <portType>-Element in Web Services Description Language (WSDL) ab oder legt ihn fest. Receive.ServiceContractName.LocalName sollte übereinstimmen.
Namespace Ja Ruft den Namespace des <portType>-Elements in Web Services Description Language (WSDL) ab oder legt ihn fest. Receive.ServiceContractName.NameSpace sollte übereinstimmen.
ProtectionLevel Ja Gibt an, ob die Vertragsbindung den Wert der ProtectionLevel-Eigenschaft unterstützen muss. Receive.ProtectionLevel sollte übereinstimmen.
SessionMode Nein Ruft ab, ob Sitzungen zugelassen, nicht zugelassen oder erforderlich sind, oder legt dies fest. (Nicht zutreffend)
TypeId Nein Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribut ab. (Vom Attribut geerbt). (Nicht zutreffend)

Fügen Sie hier den Text des Unterabschnitts ein.

Vorgangsvertragsattribute

Eigenschaftenname Unterstützt BESCHREIBUNG WF-Validierung
Aktion Ja Ruft ab oder legt die WS-Adressierungsaktion der Anforderungsnachricht fest. Receive.Action sollte übereinstimmen.
AsyncPattern Nein Gib an, dass ein Vorgang mit dem Methodenpaar „Begin<methodName>“ und „End<methodName>“ in einem Dienstvertrag asynchron implementiert wird. (Nicht zutreffend)
HasProtectionLevel Ja Ruft einen Wert ab, der angibt, ob die Nachrichten für diesen Vorgang verschlüsselt oder signiert werden müssen oder beides. Receive.ProtectionLevel darf nicht NULL sein.
IsInitiating Nein Ruft einen Wert ab, der angibt, ob die Methode einen Vorgang implementiert, der eine Sitzung auf dem Server initiieren kann (sofern eine solche Sitzung vorhanden ist), oder legt diesen fest. (Nicht zutreffend)
IsOneWay Ja Ruft einen Wert ab, der angibt, ob ein Vorgang eine Antwortnachricht zurückgibt, oder legt diesen fest. (Kein SendReply für dieses Empfangsvorgang ODER kein ReceiveReply für diesen Sendevorgang).
IsTerminating Nein Ruft einen Wert ab, der angibt, ob der Dienstvorgang bewirkt, dass der Server die Sitzung schließt, nachdem die Antwortnachricht gesendet wurde. (Nicht zutreffend)
Name Ja Ruft den Namen des Vorgangs ab oder legt ihn fest. Receive.OperationName sollte übereinstimmen.
ProtectionLevel Ja Ruft einen Wert ab, der angibt, ob die Nachrichten eines Vorgangs verschlüsselt oder signiert werden müssen oder beides beziehungsweise legt ihn fest. Receive.ProtectionLevel sollte übereinstimmen.
ReplyAction Ja Ruft ab oder legt den Wert der SOAP-Aktion für die Antwortnachricht des Vorgangs fest. SendReply.Action sollte übereinstimmen.
TypeId Nein Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribut ab. (Vom Attribut geerbt). (Nicht zutreffend)

Nachrichtenvertragsattribute

Eigenschaftenname Unterstützt BESCHREIBUNG WF-Validierung
HasProtectionLevel Ja Ruft einen Wert ab, der angibt, ob die Nachricht über eine Schutzebene verfügt. Keine Validierung (Receive.Content und SendReply.Content müssen mit dem Nachrichtenvertragstyp übereinstimmen).
IsWrapped Ja Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob der Nachrichtentext über ein Wrapperelement verfügt. Keine Validierung (Receive.Content und Sendreply.Content müssen mit dem Nachrichtenvertragstyp übereinstimmen).
ProtectionLevel Nein Ruft einen Wert ab, der angibt, ob die Nachricht verschlüsselt oder signiert werden muss oder beides, oder legt diesen Wert fest. (Nicht zutreffend)
TypeId Ja Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribut ab. (Vom Attribut geerbt). Keine Validierung (Receive.Content und SendReply.Content müssen mit dem Nachrichtenvertragstyp übereinstimmen).
WrapperName Ja Ruft den Wrapperelementnamen des Nachrichtentexts ab, oder legt ihn fest. Keine Validierung (Receive.Content und SendReply.Content müssen mit dem Nachrichtenvertragstyp übereinstimmen).
WrapperNamespace Nein Ruft den Namespace des Nachrichtentext-Wrapperelements ab oder legt ihn fest. (Nicht zutreffend)

Datenvertragsattribute

Eigenschaftenname Unterstützt BESCHREIBUNG WF-Validierung
IsReference Nein Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob Objektverweisdaten beizubehalten sind. (Nicht zutreffend)
Name Ja Ruft den Namen des Datenvertrags für den Typ ab oder legt ihn fest. Keine Validierung (Receive.Content und SendReply.Content müssen mit dem Nachrichtenvertragstyp übereinstimmen).
Namespace Ja Ruft den Namespace des Datenvertrags für den Typ ab oder legt ihn fest. Keine Validierung (Receive.Content und SendReply.Content müssen mit dem Nachrichtenvertragstyp übereinstimmen).
TypeId Nein Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribut ab. (Vom Attribut geerbt). (Nicht zutreffend)

Fehlervertragsattribute

Eigenschaftenname Unterstützt BESCHREIBUNG WF-Validierung
Aktion Ja Ruft die Aktion der SOAP-Fehlernachricht ab, die als Bestandteil des Vorgangsvertrags angegeben wurde, oder legt sie fest. SendReply.Action sollte übereinstimmen.
DetailType Ja Ruft den Typ eines serialisierbaren Objekts ab, das Fehlerinformationen enthält. SendReply.Content sollte dem Typ entsprechen.
HasProtectionLevel Nein Ruft einen Wert ab, der angibt, ob der SOAP-Fehlernachricht eine Sicherheitsebene zugewiesen wurde. (Nicht zutreffend)
Name Nein Ruft ab oder legt den Namen der Fehlernachricht in WSDL (Web Services Description Language) fest. (Nicht zutreffend)
Namespace Nein Ruft den Namespace des SOAP-Fehlers ab oder legt diesen fest. (Nicht zutreffend)
ProtectionLevel Nein Gibt die Sicherheitsebene an, die der SOAP-Fehler von der Bindung fordert. (Nicht zutreffend)
TypeId Nein Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribut ab. (Vom Attribut geerbt). (Nicht zutreffend)

Zusätzliche Support- und Implementierungsinformationen

Nicht unterstützte Dienstvertragsfunktionen

  • Die Verwendung von TPL (Task Parallel Library)-Tasks in den Verträgen wird nicht unterstützt.

  • Die Vererbung in Dienstverträgen wird nicht unterstützt.

Generierung konfigurierter Messagingaktivitäten

Zwei öffentliche statische Methoden werden der Receive-Aktivität und der SendReply-Aktivität hinzugefügt, um bei Verwendung von Vertrag zuerst-Workflowdiensten die Generierung von vorkonfigurierten Nachrichtenaktivitäten zu unterstützen.

Die Aktivität, die durch diese Methoden generiert wird, sollte die Vertragsvalidierung erfolgreich abschließen. Daher werden diese Methoden intern als Teil der Validierungslogik für Receive und SendReply verwendet. OperationName, ServiceContractName, Action, SerializerOption, ProtectionLevel und KnownTypes werden alle so vorkonfiguriert, dass sie dem importierten Vertrag entsprechen. Im Workflow-Designer werden die Abschnitte Nachricht oder Parameter auf der Seite für Inhaltseigenschaften ebenfalls vorkonfiguriert, damit sie dem Vertrag entsprechen.

WCF-Fehlerverträge werden auch verarbeitet, indem eine separate Gruppe konfigurierter SendReply-Aktivitäten für jeden Fehler zurückgegeben wird, der in Faults FaultDescriptionCollection angezeigt wird.

Für andere Teile von OperationDescription, die heute von WF-Diensten nicht unterstützt werden (z. B. WebGet/WebInvoke-Verhalten oder benutzerdefiniertes Vorgangsverhalten), ignoriert die API diese Werte im Rahmen von Generierung und Konfiguration. Es werden keine Ausnahmen ausgelöst.