Visual Studio 中的 Windows Communication Foundation 服务简介

更新:2007 年 11 月

Visual Studio 2008 提供了使用 Windows Communication Foundation (WCF)(一种用于创建分布式应用程序的 Microsoft 技术)的工具。本主题从 Visual Studio 的角度介绍 WCF。

什么是 WCF?

Windows Communication Foundation (WCF) 是一个统一框架,用于创建既安全可靠又可交互的分布式事务处理应用程序。Visual Studio 的早期版本中存在一些可用于在应用程序之间进行通信的技术。

如果要以一种能够实现从任何平台访问信息的方式来共享信息,则应使用 Web 服务(也称为 ASMX Web 服务)。如果只想在客户端和正在 Windows 操作系统上运行的服务器之间移动数据,则应使用 .NET 远程处理。如果需要事务处理通信,则应使用企业服务 (DCOM),或者如果需要排队的模型,则应使用消息队列(也称为 MSMQ)。

WFC 将所有这些技术的功能汇集到一个统一编程模型中。这简化了开发分布式应用程序的过程。

WCF 编程模型

WCF 编程模型基于以下两个实体之间的通信:WCF 服务和 WFC 客户端。该编程模型封装在 .NET Framework 的 System.ServiceModel 命名空间中。

WCF 服务

WCF 服务基于一个定义服务与客户端之间的协定的接口。它是用 ServiceContractAttribute 属性进行标记的,如下列代码中所示:

<ServiceContract()> _
Public Interface IService1
    <OperationContract()> _
    Function GetData(ByVal Value As String) As String
End Interface

通过使用 OperationContractAttribute 属性标记 WCF 服务公开的函数和方法,可以定义这些函数和方法。另外,通过使用 DataContractAttribute 属性标记复合类型,可以公开序列化数据。这样可以在客户端中进行数据绑定。

定义了接口及其方法后,会将它们封装在一个实现该接口的类中。单一的 WCF 服务类可以实现多个服务协定。

为了使用 WCF 服务,通过通常所说的“终结点”公开了此服务。 只有使用终结点提供的方法才能与服务进行通信;您不能像访问其他类那样通过直接引用来访问该服务。

终结点由地址、绑定和协定组成。地址定义服务的位置;该地址可以是 URL、FTP 地址、网络路径或本地路径。绑定定义与服务通信的方法。WCF 绑定提供一个用于指定协议(如 HTTP 和 FTP)、安全机制(如 Windows 身份验证或用户名和密码)和更多内容的通用模型。协定包括 WCF 服务类公开的操作。

可以针对单一的 WCF 服务公开多个终结点。这样,不同的客户端便可以采用不同的方法与同一服务进行通信。例如,银行服务可以为雇员提供一个终结点,为外部客户提供另一个终结点,每个终结点都使用不同的地址、绑定、和/或协定。

WCF 客户端

WCF 客户端由“代理”和终结点所组成,前者使应用程序能够与 WCF 服务通信,后者与针对服务定义的终结点相匹配。 该代理在 app.config 文件中的客户端上生成并包括有关服务所公开的类型和方法的信息。例如,对于公开多个终结点的服务,客户端可以选择最能满足其需求的服务,以便通过 HTTP 进行通信以及使用 Windows 身份验证。

创建 WCF 客户端后,可以像引用任何其他对象那样在代码中引用服务。例如,若要调用之前显示的 GetData 方法,则应编写与下列内容相似的代码:

Dim client As New ServiceReference.Service1Client
Dim returnString As String

returnString = client.GetData("Hello")
MsgBox(returnString)

Visual Studio 中的 WCF 工具

Visual Studio 2008 提供帮助创建 WCF 服务和 WCF 客户端的工具。有关演示这些工具的演练,请参见演练:创建和访问 WCF 服务

创建并测试 WCF 服务

可以使用 WCF Visual Studio 模板为基础快速创建自己的服务。然后可以使用 WCF 服务自动主机和 WCF 测试客户端来调试和测试此服务。通过共同使用这些工具,可以快速方便地进行调试和测试,从而缩短调试和测试周期,并且不必在早期阶段提交给宿主模型。

WCF 模板

WCF Visual Studio 模板为服务开发提供一个基类结构。在“添加新项目”对话框中可以使用一些 WCF 模板。这些模板包括 WCF 服务库项目、WCF 服务网站、和 WCF 服务项模板。

选择模板时,将为服务协定、服务实现、以及服务配置添加文件。所有必需的属性都已添加,同时将创建简单的“Hello World”服务类型,且不必编写任何代码。当然,您将需要添加代码以便为实际服务提供函数和方法,但是模板会提供基础。

若要了解有关 WCF 模板的更多信息,请参见 WCF Visual Studio 模板

WCF 服务主机

为 WCF 服务项目启动 Visual Studio 调试程序(通过按 F5)时,将自动启动 WCF 服务主机工具以便以本地方式承载服务。WCF 服务主机将枚举 WCF 服务项目中的服务、加载该项目的配置、并为它所找到的每个服务实例化主机。

通过使用 WCF 服务主机,可以测试 WCF 服务,而不用在开发期间编写额外代码或提交给特定主机。

若要了解有关 WCF 服务主机的更多信息,请参见 WCF 服务主机 (WcfSvcHost.exe)

WCF 测试客户端

通过使用 WCF 测试客户端工具,可以输入测试参数、将该输入提交给 WCF 服务、并查看该服务发送回的响应。如果将 WCF 测试客户端与 WCF 服务主机结合起来,会提供满意的服务测试体验。

按 F5 调试 WCF 服务项目时,WCF 测试客户端将打开并显示在配置文件中定义的服务终结点的列表。可以测试参数并启动服务,重复此过程以连续测试和验证您的服务。

若要了解有关 WCF 测试客户端的更多信息,请参见 WCF 测试客户端 (WcfTestClient.exe)

在 Visual Studio 中访问 WCF 服务

Visual Studio 2008 简化了创建 WCF 客户端的任务,同时将针对使用“添加服务引用”对话框添加的服务自动生成代理和终结点。所有必需的配置信息将添加到 app.config 文件中。大多数情况下,只需实例化该服务便可以使用此服务。

通过使用“添加服务引用”对话框,可以输入服务的地址或搜索在解决方案中定义的服务。该对话框将返回由服务和这些服务提供的操作所组成的列表。通过使用此对话框,还可以定义用于在代码中引用服务的命名空间。

通过使用“配置服务引用”对话框,可以自定义服务的配置。可以更改服务地址,指定访问级别、异步行为和消息协定类型,以及配置类型重用。

若要了解有关如何使用 WCF 服务的更多信息,请参见在 Visual Studio 使用 WCF 服务

请参见

任务

演练:创建和访问 WCF 服务

其他资源

在 Visual Studio 使用 WCF 服务

使用 WCF 开发工具

Windows Communication Foundation 服务和 ADO.NET 数据服务