WinVista新技术 WCF开发指南之客户端开发 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
http://www.sina.com.cn 2006年11月14日 08:44 天极yesky | ||||||||||||||
作者:朱先忠编译 一. 客户端编程
Visual Studio 2005使用SvcUtil.exe命令行工具,并且你可以自己使用它。主要理由是,你可以使用SvcUtil开关所提供的众多的选项。为了直接使用SvcUtil,你可以提供给它MEX地址并且,作为选择,还可以提供一个代理文件名。默认的代理文件名是实现该服务的服务端类的名字。例如,当把服务MyService宿主在IIS中时,简单地运行下列命令行: SvcUtil http://localhost/MyService/MyService.svc /out:Proxy.cs 借助于自宿主,你可以不受限于仅使用HTTP基地址。假定自宿主服务注册这些基地址:
然后,启动宿主,则你可以使用任何下列命令之一来生成该代理:
该代理类没有对服务实现类的参考,而只参考服务暴露的合同。这个代理可以与一个提供地址和绑定的客户端配置文件一起使用,也可以在没有配置文件的情况下使用。注意,每一个代理实例都准确地指向一个端点,与之交互的端点在构造时刻提供给代理。 二. 管理客户端配置 客户端需要知道服务所在地并使用与它的服务相同的绑定;当然,也要以代理的形式导入服务合同。实质上,这与在服务的端点处捕获的信息完全一致。为了反映这一信息,客户端配置文件包含关于目标端点的信息并且甚至使用与宿主相同的模式。 例如,列表6(见本文相应下载源码)显示了与一个服务(其宿主是根据列表2进行配置的)进行交互需要的客户端配置文件。注意,在这个客户端配置文件中的合同类型(和命名空间)是由SvcUtil生成的导入的类型(和命名空间,如果有的话),而不是服务类型和命名空间。该客户端配置文件可以列出与服务支持一样多的端点,并且该客户端可以使用任何其中之一来与该服务交互。列表7(见本文相应下载源码)展示了客户端配置文件-它匹配显示于列表3中的宿主配置文件。 默认地,SvcUtil还自动生成一个客户端配置文件output.config。你可以使用/config开关来指定一个配置文件名:
并且,你可以使用/noconfig开关来压缩生成的配置文件:
为了支持进程内宿主,应用程序配置文件应该列出服务和客户端节,见列表8(见本文相应下载源码)。注意,NetNamedPipeBinding被用于进程内调用。 WCF提供一个能够编辑宿主和客户端配置文件的配置文件编辑器SvcConfigEditor.exe(见图7)。在写本文时,SvcConfigEditor只是生成一些不可读的配置文件,因此,在纠正这一问题之前,你应该手工地编辑这个文件。
|