Windows Communication Foundation (WCF) 是一个统一框架,用于创建既安全可靠又可交互的分布式事务处理应用程序。Visual Studio 的早期版本中存在一些可用于在应用程序之间进行通信的技术。 如果要以一种能够实现从任何平台访问信息的方式来共享信息,则应使用 Web 服务(也称为 ASMX Web 服务)。如果只想在客户端和正在 Windows 操作系统上运行的服务器之间移动数据,则应使用 .NET 远程处理。如果需要事务处理通信,则应使用企业服务 (DCOM),或者如果需要排队的模型,则应使用消息队列(也称为 MSMQ)。
WFC 将所有这些技术的功能汇集到一个统一编程模型中。这简化了开发分布式应用程序的过程。
WCF 编程模型
WCF 编程模型 WCF 编程模型基于以下两个实体之间的通信:WCF 服务和 WFC 客户端。该编程模型封装在 .NET Framework 的 System.ServiceModel 命名空间中。
WCF 服务
WCF 服务基于一个定义服务与客户端之间的协定的接口。它是用 ServiceContractAttribute 属性进行标记的,如下列代码中所示:
通过使用 OperationContractAttribute 属性标记 WCF 服务公开的函数和方法,可以定义这些函数和方法。另外,通过使用 DataContractAttribute 属性标记复合类型,可以公开序列化数据。这样可以在客户端中进行数据绑定。定义了接口及其方法后,会将它们封装在一个实现该接口的类中。单一的 WCF 服务类可以实现多个服务协定。 为了使用 WCF 服务,通过通常所说的“终结点”公开了此服务。 只有使用终结点提供的方法才能与服务进行通信;您不能像访问其他类那样通过直接引用来访问该服务。
终结点由地址、绑定和协定组成。地址定义服务的位置;该地址可以是 URL、FTP地址、网络路径或本地路径。绑定定义与服务通信的方法。WCF 绑定提供一个用于指定协议(如 HTTP 和 FTP)、安全机制(如 Windows身份验证或用户名和密码)和更多内容的通用模型。协定包括 WCF 服务类公开的操作。
可以针对单一的 WCF 服务公开多个终结点。这样,不同的客户端便可以采用不同的方法与同一服务进行通信。例如,银行服务可以为雇员提供一个终结点,为外部客户提供另一个终结点,每个终结点都使用不同的地址、绑定、和/或协定。
WCF 客户端
WCF 客户端由“代理”和终结点所组成,前者使应用程序能够与 WCF 服务通信,后者与针对服务定义的终结点相匹配。 该代理在 app.config 文件中的客户端上生成并包括有关服务所公开的类型和方法的信息。例如,对于公开多个终结点的服务,客户端可以选择最能满足其需求的服务,以便通过 HTTP 进行通信以及使用 Windows 身份验证。
创建 WCF 客户端后,可以像引用任何其他对象那样在代码中引用服务。例如,若要调用之前显示的 GetData 方法,则应编写与下列内容相似的代码:
WFC 将所有这些技术的功能汇集到一个统一编程模型中。这简化了开发分布式应用程序的过程。
WCF 编程模型
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)