WCF经过长时间的发展,很多用户都很了解WCF客户端配置了,这里我发表一下个人理解,和大家讨论讨论。客户端需要知道服务所在地并使用与它的服务相同的绑定;当然,也要以代理的形式导入服务合同。实质上,这与在服务的端点处捕获的信息完全一致。为了反映这一信息,客户端配置文件包含关于目标端点的信息并且甚至使用与宿主相同的模式。
#T#例如,列表(见本文相应下载源码)显示了与一个服务(其宿主是根据列表进行配置的)进行交互需要的客户端配置文件。注意,在这个WCF客户端配置文件中的合同类型(和命名空间)是由 SvcUtil生成的导入的类型(和命名空间,如果有的话),而不是服务类型和命名空间。该客户端配置文件可以列出与服务支持一样多的端点,并且该客户端可以使用任何其中之一来与该服务交互。列表(见本文相应下载源码)展示了WCF客户端配置文件-它匹配显示于列表中的宿主配置文件。
默认地,SvcUtil还自动生成一个客户端配置文件output.config。你可以使用/config开关来指定一个配置文件名:
- SvcUtil http://localhost:8002/MyService/MEX/out:Proxy.cs /config:App.Config
并且,你可以使用/noconfig开关来压缩生成的配置文件:
- SvcUtil http://localhost:8002/MyService/MEX/out:Proxy.cs /noconfig
为了支持进程内宿主,应用程序配置文件应该列出服务和客户端节。注意,NetNamedPipeBinding被用于进程内调用。WCF提供一个能够编辑宿主和客户端配置文件的配置文件编辑器SvcConfigEditor.exe(见图)。在写本文时,SvcConfigEditor只是生成一些不可读的配置文件,因此,在纠正这一问题之前,你应该手工地编辑这个文件。
SvcConfigEditor用于编辑宿主和客户端配置文件。