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.