Windows Communication Foundation 基础知识






4.74/5 (79投票s)
Windows Communication Foundation (WCF) 初学者基础知识
引言
在本文中,我将介绍 Windows Communication Foundation (WCF) 是什么,以及为什么它被引入 .NET Framework 3.0。
背景
在现代应用程序(分布式应用程序)开发中,您可以使用 COM+、.NET Enterprise Services、MSMQ、.NET Remoting、Web 服务等进行通信。所有这些技术都扮演着不同的角色,并且要使用它们,您需要为不同的技术开发不同的解决方案。您必须专注于每种技术而不是应用程序业务逻辑的开发。
WCF 将这些功能统一到一个单一的、通用的、面向服务的编程模型中,用于通信。WCF 提供了一种通用的方法,使用通用的 API,开发人员可以专注于他们的应用程序,而不是通信协议。

为什么我们需要 WCF?
有一个主要的银行系统直接连接到数据库,它通过各种通信协议(如 Remoting、Web 服务等)为 ATM 机、贷款系统等其他系统提供数据。要使用不同的通信协议与不同的系统进行通信,您必须了解该技术。在 WCF 中,您只需为不同的服务创建不同的终结点。无需学习不同的 API。您可以使用一个通用的 API 与不同的系统进行通信。
在 WCF 中,您只需为不同的服务创建不同的终结点。无需学习不同的 API。您可以使用一个通用的 API 与不同的系统进行通信。

WCF 架构

WCF 终结点的 ABC

与 WCF 服务的通信将全部通过终结点进行。终结点指定了一个契约,该契约定义了 Service
类中哪些方法可以通过终结点访问;每个终结点可以公开一组不同的方法。终结点还定义了一个绑定,该绑定指定了客户端如何与服务通信以及终结点托管的地址。
A-地址 (在哪里?):指定服务的位置,例如 http://Myserver/MyService.Clients 将使用此位置与我们的服务进行通信。
//
// The sample address for above transport schema may look like
https://:81
https://:81/MyService
net.tcp://:82/MyService
net.pipe:///MyPipeService
net.msmq:///private/MyMsMqService
net.msmq:///MyMsMqService
//
B-绑定 (如何?):指定双方在传输、编码和协议方面的通信方式。
WCF 支持九种绑定类型
基本绑定
由 BasicHttpBinding
类提供,此绑定旨在将 WCF 服务公开为旧的 ASMX Web 服务,以便旧客户端可以与新服务协同工作。当客户端使用此绑定时,它可以使新的 WCF 客户端与旧的 ASMX 服务协同工作。
TCP 绑定
由 NetTcpBinding
类提供,此绑定使用 TCP 进行内网的跨机通信。它支持多种功能,包括可靠性、事务和安全性,并且针对 WCF 到 WCF 的通信进行了优化。因此,它要求客户端和服务都使用 WCF。
对等网络绑定
由 NetPeerTcpBinding
类提供,此绑定使用对等网络作为传输。启用对等网络的客户端和服务都订阅同一个网格并向其广播消息。
IPC 绑定
由 NetNamedPipeBinding
类提供,此绑定使用命名管道作为同一台机器的通信传输。它是最安全的绑定,因为它无法接受来自机器外部的调用,并且支持多种与 TCP 绑定类似的功能。
Web 服务 (WS) 绑定
由 WSHttpBinding
类提供,此绑定使用 HTTP 或 HTTPS 进行传输,并旨在提供互联网上的各种功能,如可靠性、事务和安全性。
联合 WS 绑定
由 WSFederationHttpBinding
类提供,它是 WS 绑定的一个特例,提供了对联合安全性的支持。
双工 WS 绑定
由 WSDualHttpBinding
类提供,此绑定与 WS 绑定类似,但它还支持从服务到客户端的双向通信。
MSMQ 绑定
由 NetMsmqBinding
类提供,此绑定使用 MSMQ 作为传输,并旨在支持断开连接的队列调用。
MSMQ 集成绑定
由 MsmqIntegrationBinding
类提供,此绑定将 WCF 消息转换为 MSMQ 消息,或将 MSMQ 消息转换为 WCF 消息,旨在与旧的 MSMQ 客户端互操作。
选择绑定类型

C-契约 (什么?):指定客户端和服务器之间的接口。它是一个带有某些属性的简单接口。
契约类型

托管 WCF 服务的各种方法有哪些?
托管 WCF 服务主要有三种方式:
- 在自己的应用程序域中自托管服务。当您创建 Service Host 类的对象时,服务即会实例化,并在您调用 Service Host 类的 Close 方法时关闭服务。
- 托管在 IIS 服务器提供的应用程序域或进程中。
- 托管在 WAS (Windows Activation Service) 服务器提供的应用程序域和进程中。
选择托管类型

欢迎您的反馈。