1. 应该将服务代码放入到类库中,而不是放到宿主EXE中。
2. 不要为服务类提供参数构造函数,除非托管的服务是明确的单例服务。
3. 在相关的绑定中启用可靠性。
4. 要为契约提供有意义的命名空间。对于公开向外的服务,可以使用公司的URL或者等同的URN,然后加上年份和月份以避免版本冲突;例如:
[ServiceContract(Namespace = "http://www.idesign.net/2009/06")]
interface IMyContract
{}
对于局域网服务,可以使用任何有意义的唯一的名称,如MyApplication;例如:
[ServiceContract(Namespace = "MyApplication")]
interface IMyContract
{}
5. 对于运行在Windows XP以及Windows Server 2003 上的局域网应用程序,最好选用自托管,而不是IIS托管。
6. 在Windows Vista和Windows Server 2008或更近版本中,最好选用WAS (IIS7)托管,而不是自托管。
7. 启用元数据交换。
8. 要为客户端配置文件中的所有终结点命名。
9. 不要使用SvcUtil或者Visual Studio2008生成配置文件。
10. 不要复制代理的代码。如果两个或多个客户端使用相同契约,可以将代理分解到单独的类库中。
11. 总是关闭或释放代理。