Approaches to Serialization

At this point in the chapter, you have learned how to create a service contract, expose complex types as data contracts, and create message contracts for greater control over message format. These are the serialization staples for WCF services. In a perfect situation, when you go about designing your services, you can create data contracts representative of the types used by service operations; you’ll let the service description be generated from the service contract and these data contract types; and you won’t ever have to look at XML. But things aren’t always that simple.

Despite the fact that data contracts are the preferred format for exposing complex types in the service contract, there are times when other approaches to serialization may be necessary. Here are some scenarios you may need to consider:

  • Exposing preexisting types that implement the SerializableAttribute and ISerializable

  • Conforming messages to a specific XSD schema

  • Mapping incoming messages to existing types that are not serializable or that don’t match a predefined schema

In this section, I’ll discuss other serialization concepts and explain practical approaches to these scenarios.

Types Supporting Serialization

Although the focus has been on data contracts thus far, the following types can all be serialized through the DataContractSerializer:

  • Data contracts are complex types decorated with the DataContractAttribute or the CollectionDataContractAttribute.

  • Serializable types are types ...

Get Learning WCF now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.