Essentials

  1. Place service code in a class library and not in any hosting EXE.

  2. Do not provide parameterized constructors to a service class unless it is a singleton that is hosted explicitly.

  3. Enable reliability in the relevant bindings.

  4. Provide a meaningful namespace for contracts. For outward-facing services, use your company’s URL or equivalent URN with a year and month to support versioning; for example:

    [ServiceContract(Namespace = "http://www.idesign.net/2007/08")]
    interface IMyContract
    {...}

    For intranet services, use any meaningful unique name, such as MyApplication; for example:

    [ServiceContract(Namespace = "MyApplication")]
    interface IMyContract
    {...}
  5. With intranet applications on Windows XP and Windows Server 2003, prefer self-hosting to IIS hosting.

  6. On Windows Vista, prefer WAS (IIS7) hosting to self-hosting.

  7. Use ServiceHost<T>.

  8. Enable metadata exchange.

  9. Always name all endpoints in the client config file.

  10. Do not use SvcUtil or Visual Studio 2005 to generate a config file.

  11. Do not duplicate proxy code. If two or more clients use the same contract, factor the proxy to a separate class library.

  12. Always close or dispose of the proxy.

Get Programming WCF Services 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.