Data Contracts

  1. Avoid inferred data contracts (POCO). Always be explicit and apply the DataContract attribute.

  2. Use the DataMember attribute only on properties or read-only public members.

  3. Avoid explicit XML serialization on your own types.

  4. Avoid message contracts.

  5. When using the Order property, assign the same value to all members coming from the same level in the class hierarchy.

  6. Support IExtensibleDataObject on your data contracts. Use explicit interface implementation.

  7. Avoid setting IgnoreExtensionDataObject to true in the ServiceBehavior and CallbackBehavior attributes. Keep the default of false.

  8. Do not mark delegates and events as data members.

  9. Do not pass .NET-specific types, such as Type, as operation parameters.

  10. Do not accept or return ADO.NET DataSets and DataTables (or their type-safe subclasses) from operations. Return a neutral representation such as an array.

  11. Suppress the generation of a generic type parameter hash code and provide a legible type name instead.

Get Programming WCF Services, 2nd Edition 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.