Essentials

  1. Place service code in a class library, 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/2009/06")]
    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 and Windows Server 2008 or later, prefer WAS hosting to self-hosting.

  7. Enable metadata exchange.

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

  9. Do not use SvcUtil or Visual Studio 2008 to generate a config file.

  10. When using a tool such as Visual Studio 2008 to generate the proxy, do clean up the proxy.

  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, 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.