教程:创建 Windows Communication Foundation 客户端
本教程介绍创建基本 Windows Communication Foundation (WCF) 应用程序所要完成的五个任务中的第四个任务。 有关教程概述,请参阅教程:Windows Communication Foundation 应用程序入门。
用于创建 WCF 应用程序的下一个任务是通过从 WCF 服务中检索元数据来创建客户端。 可以使用 Visual Studio 添加服务引用,用于从服务的 MEX 终结点获取元数据。 然后 Visual Studio 使用你选择的语言生成客户端代理的托管源代码文件。 还会创建一个客户端配置文件 (App.config)。 此文件使客户端应用程序能够连接终结点处的服务。
注意
如果从 Visual Studio 中的类库项目调用 WCF 服务,请使用“添加服务引用”功能自动生成代理和关联的配置文件。 但是,由于类库项目不使用此配置文件,因此需要将生成的配置文件中的设置添加到调用类库的可执行文件的 App.config 文件中。
注意
或使用 ServiceModel 元数据实用工具而不是 Visual Studio 来生成代理类和配置文件。
客户端应用程序使用生成的代理类与服务通信。 教程:使用客户端中介绍了此过程。
本教程介绍如何执行下列操作:
- 创建并配置 WCF 客户端的控制台应用程序项目。
- 将服务引用添加到 WCF 服务,以生成代理类和配置文件。
创建 Windows Communication Foundation 客户端
在 Visual Studio 中创建一个控制台应用项目:
在“文件”菜单中,选择“打开”>“项目/解决方案”,然后浏览到先前创建的 GettingStarted 解决方案 (GettingStarted.sln)。 选择“打开” 。
从“视图”菜单中选择“解决方案资源管理器”。
在“解决方案资源管理器”窗口中,选择“GettingStarted”解决方案(顶部节点),然后从快捷菜单中选择“添加”>“新建项目”。
在左侧的“添加新项目”窗口中,选择“Visual C#”或“Visual Basic”下的“Windows 桌面”类别。
选择“控制台应用(.NET Framework)”模板,然后输入“GettingStartedClient”作为名称。 选择“确定”。
将“GettingStartedClient”项目中的引用添加到 System.ServiceModel 程序集:
在“解决方案资源管理器”窗口中,选择“GettingStartedClient”项目下的“References”文件夹,然后从快捷菜单中选择“添加引用”。
在“添加引用”窗口中左侧的“程序集”下,选择“框架”。
查找并选择 System.ServiceModel,然后选择“确定”。
选择“文件”>“全部保存”以保存解决方案。
将服务引用添加到计算器服务:
在“解决方案资源管理器”窗口中,选择“GettingStartedHost”项目下的“引用”文件夹,然后从快捷菜单中选择“添加服务引用”。
在“添加服务引用”窗口中,选择“发现”。
此时 CalculatorService 服务启动,Visual Studio 将其显示在“服务”框中。
选择“CalculatorService”将其展开,并显示该服务实现的服务协定。 将“命名空间”保留为默认值,然后选择“确定”。
Visual Studio 在 GettingStartedClient 项目的“连接的服务”文件夹下添加了一个新项。
ServiceModel 元数据实用工具
以下示例显示了如何选择性地使用 ServiceModel 元数据实用工具 (Svcutil.exe) 生成代理类文件。 此工具生成代理类文件和 App.config 文件。 以下示例分别显示了如何在 C# 和 Visual Basic 中生成代理:
svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://localhost:8000/GettingStarted/CalculatorService
svcutil.exe /language:vb /out:generatedProxy.vb /config:app.config http://localhost:8000/GettingStarted/CalculatorService
客户端配置文件
创建客户端后,Visual Studio 将在 GettingStartedClient 项目中创建 App.config 配置文件,该文件类似于以下示例:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<!-- specifies the version of WCF to use-->
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<system.serviceModel>
<bindings>
<!-- Uses wsHttpBinding-->
<wsHttpBinding>
<binding name="WSHttpBinding_ICalculator" />
</wsHttpBinding>
</bindings>
<client>
<!-- specifies the endpoint to use when calling the service -->
<endpoint address="http://localhost:8000/GettingStarted/CalculatorService"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ICalculator"
contract="ServiceReference1.ICalculator" name="WSHttpBinding_ICalculator">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
请注意 <system.serviceModel> 部分下的 <endpoint> 元素。 <Endpoint> 元素定义客户端用于访问服务的终结点,如下所示:
- 地址:
http://localhost:8000/GettingStarted/CalculatorService
。 终结点的地址。 - 服务协定:
ServiceReference1.ICalculator
。 服务协定处理 WCF 客户端和服务之间的通信。 Visual Studio 在使用其“添加服务引用”函数时生成此协定。 它实质上是在 GettingStartedLib 项目中定义的协定的副本。 - 绑定:WSHttpBinding。 绑定指定 HTTP 作为传输协议、指定可互操作安全性以及其他配置详细信息。
后续步骤
在本教程中,你了解了如何执行以下操作:
- 创建并配置 WCF 客户端的控制台应用程序项目。
- 将服务引用添加到 WCF 服务,以生成客户端应用程序的代理类和配置文件。
开始下一教程,了解如何使用生成的客户端。