Konfigurieren der Serialisierung in einem Workflowdienst

Workflowdienste sind Windows Communication Foundation (WCF)-Dienste und haben daher die Möglichkeit, entweder die DataContractSerializer (Standard) oder die XmlSerializer zu benutzen. Beim Schreiben von Nicht-Workflowdiensten wird der Typ des zu verwendenden Serialisierungsprogramms im Dienstvertrag oder Vorgangsvertrag angegeben. Beim Erstellen von WCF-Workflowdiensten geben Sie diese Verträge nicht im Code an, sondern sie werden zur Laufzeit nach Vertragsableitung generiert. Weitere Informationen zur Vertragsableitung finden Sie unter Verwenden von Verträgen in Workflow. Das Serialisierungsprogramm wird mithilfe der SerializerOption-Eigenschaft angegeben. Diese kann im Designer festgelegt werden, wie in der folgenden Abbildung dargestellt.

Setting the SerializerOption property in the Properties Window.

Das Serialisierungsprogramm kann auch im Code festgelegt werden, wie im folgenden Beispiel gezeigt.

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. Weitere Informationen zu bekannten Typen finden Sie unter Bekannte Typen in Datenverträgen. Bekannte Typen können im Designer oder im Code angegeben werden. 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.

Screenshot of the KnownTypes property dialog box.

Dadurch wird der Typauflistungs-Editor angezeigt, mit dem Sie bekannte Typen suchen und angeben können.

Screenshot of the Type Collections Editor.

Klicken Sie auf den Link Neuen Typ hinzufügen, und verwenden Sie die Dropdownliste, um einen Typ zu suchen oder auszuwählen, der der Auflistung bekannter Typen hinzugefügt werden soll. Verwenden Sie die KnownTypes-Eigenschaft, um bekannte Typen im Code anzugeben, wie im folgenden Beispiel gezeigt.

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));