Konfigurieren der Serialisierung in einem WorkflowdienstConfiguring Serialization in a Workflow Service

Workflowdienste sind Windows Communication Foundation (WCF)-Dienste und daher keine verwenden Sie entweder die DataContractSerializer (Standard) oder die XmlSerializer.Workflow services are Windows Communication Foundation (WCF) services and so have the option of using either the DataContractSerializer (the default) or the XmlSerializer. Beim Schreiben von Nicht-Workflowdiensten wird der Typ des zu verwendenden Serialisierungsprogramms im Dienstvertrag oder Vorgangsvertrag angegeben.When writing non-workflow services the type of serializer to use is specified on the service or operation contract. Beim Erstellen von WCF-Workflowdienste keinen diese Verträge im Code angeben, aber sie werden vielmehr zur Laufzeit generiert, durch vertragsrückschluss.When creating WCF workflow services you don’t specify these contracts in code, but rather they are generated at runtime by contract inference. Weitere Informationen zu vertragsrückschluss, finden Sie unter Verwenden von Verträgen im Workflow.For more information about contract inference, see Using Contracts in Workflow. Das Serialisierungsprogramm wird mithilfe der SerializerOption-Eigenschaft angegeben.The serializer is specified using the SerializerOption property. Diese kann im Designer festgelegt werden, wie in der folgenden Abbildung dargestellt.This can be set in the designer as shown in the following illustration.

Festlegen des SerialisierungsprogrammsSetting the serializer

Das Serialisierungsprogramm kann auch im Code festgelegt werden, wie im folgenden Beispiel gezeigt.The serializer can also be set in code as shown in the following example,

Receive approveExpense = new Receive  
            {  
                OperationName = "ApproveExpense",  
                CanCreateInstance = true,  
                ServiceContractName = "FinanceService",  
                SerializerOption = SerializerOption.DataContractSerializer,  
                Content = ReceiveContent.Create(new OutArgument<Expense>(expense))  
            };  

Bekannte Typen können auch für Workflowdienste angegeben werden.Known types can be specified on Workflow services as well. Weitere Informationen über bekannte Typen finden Sie unter Datenvertragstypen bezeichnet.For more information about Known Types see Data Contract Known Types. Bekannte Typen können im Designer oder im Code angegeben werden.Known types can be specified in the designer or in code. Um bekannte Typen im Designer anzugeben, klicken Sie im Eigenschaftenfenster für eine Receive-Aktivität neben der KnownTypes-Eigenschaft auf die Schaltfläche mit den Auslassungspunkten, wie in der folgenden Abbildung gezeigt.To specify known types in the designer, click the ellipsis button next to the KnownTypes property in the properties window for a Receive activity as shown in the following illustration.

KnownTypes-EigenschaftKnownTypes property

Dadurch wird der Typauflistungs-Editor angezeigt, mit dem Sie bekannte Typen suchen und angeben können.This will display the Type Collections Editor that will allow you to search for and specify known types.

Hinzufügen von bekannten TypenAdding Known Types

Klicken Sie auf die hinzufügen, geben Sie neue verknüpfen und mithilfe der Dropdownliste auswählen oder einen Typ zu suchen, das der Auflistung bekannter Typen hinzugefügt.Click the Add new type link and use the drop down to select or search for a type to add to the known types collection. Verwenden Sie die KnownTypes-Eigenschaft, um bekannte Typen im Code anzugeben, wie im folgenden Beispiel gezeigt.To specify known types in code use the KnownTypes property as shown in the following example.

Receive approveExpense = new Receive  
            {  
                OperationName = "ApproveExpense",  
                CanCreateInstance = true,  
                ServiceContractName = "FinanceService",  
                SerializerOption = SerializerOption.DataContractSerializer,  
                Content = ReceiveContent.Create(new OutArgument<Expense>(expense))  
            };  
            approveExpense.KnownTypes.Add(typeof(Travel));  
            approveExpense.KnownTypes.Add(typeof(Meal));  

Um ein vollständiges Codebeispiel zeigt, wie Serialisierung, die für einen Workflowdienst konfigurieren finden Sie unter finden Sie unter Formatieren von Meldungen in Workflowdiensten.To see a complete code example showing how to configure serialization for a workflow service see Formatting messages in Workflow Services.