什么是 Windows Communication Foundation

Windows Communication Foundation(WCF)是用于构建面向服务的应用程序的框架。 使用 WCF,可以将数据作为异步消息从一个服务终结点发送到另一个服务终结点。 服务终结点可以是 IIS 托管的持续可用服务的一部分,也可以是应用程序中托管的服务。 一个终结点可以是一个服务的客户端,它从另一个服务终结点请求数据。 消息可以像单个字符或作为 XML 发送的单词一样简单,也可以像二进制数据流一样复杂。 一些示例方案包括:

  • 用于处理业务事务的安全服务。

  • 向其他服务(例如流量报告或其他监视服务)提供当前数据。

  • 一种聊天服务,允许两个人实时通信或交换数据。

  • 一个仪表板应用程序,用于轮询一个或多个服务以获取数据,并将其呈现在逻辑演示文稿中。

  • 公开使用 Windows Workflow Foundation 作为 WCF 服务实现的工作流。

虽然在 WCF 存在之前可以创建此类应用程序,但 WCF 使终结点的开发比以往更容易。 总之,WCF 旨在提供创建 Web 服务和 Web 服务客户端的可管理方法。

gRPC 作为 WCF 的替代方法

gRPC 是一种现代 RPC 框架,是 WCF 的常用替代方法。 gRPC 基于 HTTP/2 构建,它比 WCF 提供了许多优势,包括:

  • 性能:gRPC 比 WCF 更高效,尤其是对于长时间运行的连接。
  • 可伸缩性:gRPC 旨在扩展到大量客户端和服务器。
  • 安全性:gRPC 支持各种安全机制,包括 TLS 和身份验证。
  • 跨平台:gRPC 是平台中立的,可用于各种编程语言。

有关开发或迁移 WCF 应用到 gRPC 的详细信息,请参阅:

WCF 的功能

WCF 包括以下一组功能。 有关详细信息,请参阅 WCF 功能详细信息

  • 服务方向

    使用 WS 标准的一个后果是 WCF 使你能够创建 面向服务 的应用程序。 面向服务的体系结构(SOA)依赖于 Web 服务发送和接收数据。 这些服务具有松耦合的常规优点,而不是从一个应用程序到另一个应用程序进行硬编码。 松散耦合关系意味着只要满足基本协定,任何平台上创建的任何客户端都可以连接到任何服务。

  • 互操作性

    WCF 实现 Web 服务互作性的新式行业标准。 有关支持的标准的详细信息,请参阅 互作性和集成

  • 多个消息模式

    消息以多种模式之一交换。 最常见的模式是请求/回复模式,其中一个终结点从第二终结点请求数据。 另一个终结点进行答复。 还有其他模式,例如单向消息,其中单个终结点发送消息而不期望回复。 更复杂的模式是双工交换模式,其中两个终结点建立连接并来回发送数据,类似于即时消息程序。 有关如何使用 WCF 实现不同消息交换模式的详细信息,请参阅 Contracts

  • 服务元数据

    WCF 支持使用行业标准中指定的格式(如 WSDL、XML 架构和 WS-Policy)发布服务元数据。 此元数据可用于自动生成和配置用于访问 WCF 服务的客户端。 可以通过 HTTP 和 HTTPS 或使用 Web 服务元数据 Exchange 标准发布元数据。 有关详细信息,请参阅元数据

  • 数据协定

    由于 WCF 是使用 .NET Framework 构建的,因此它还包括提供想要强制执行的协定的代码友好方法。 通用协定类型之一是数据协定。 从本质上讲,在使用 Visual C# 或 Visual Basic 编写服务代码时,处理数据的最简单的方法是创建表示具有属于数据实体的属性的数据实体的类。 WCF 包括一个全面的系统,用于以这种方式轻松处理数据。 创建表示数据的类后,服务会自动生成元数据,使客户端能够符合你设计的数据类型。 有关详细信息,请参阅 使用数据协定

  • 安全性

    可以加密消息以保护隐私,并且你可以要求用户在允许接收消息之前自行进行身份验证。 可以使用众所周知的标准(如 SSL 或 WS-SecureConversation)实现安全性。 有关详细信息,请参阅安全性

  • 多种传输和编码方式

    可以在任意一种内置传输协议和编码上发送消息。 最常见的协议和编码是使用超文本传输协议(HTTP)发送文本编码的 SOAP 消息,以便在万维网上使用。 或者,WCF 允许通过 TCP、命名管道或 MSMQ 发送消息。 这些消息可以编码为文本或使用优化的二进制格式。 可以使用 MTOM 标准有效地发送二进制数据。 如果提供的传输或编码都不符合你的需求,则可以创建自己的自定义传输或编码。 有关 WCF 支持的传输和编码的详细信息,请参阅 传输

  • 可靠消息和队列消息

    WCF 支持使用通过 WS-Reliable 消息传送和使用 MSMQ 实现的可靠会话进行可靠的消息交换。 有关 WCF 中的可靠消息传送支持和排队消息支持的详细信息,请参阅 队列和可靠会话

  • 持久消息

    不会因为通信被中断而丢失的消息称为持久消息。 持久消息模式中的消息始终保存到数据库中。 如果发生中断,数据库允许在还原连接时恢复消息交换。 还可以使用 Windows Workflow Foundation (WF) 创建持久消息。 有关详细信息,请参阅 工作流服务

  • 交易

    WCF 还支持使用三种事务模型之一的事务:WS-AtomicTransactions、命名空间中的 System.Transactions API 和Microsoft分布式事务处理协调器。 有关 WCF 中的事务支持的详细信息,请参阅 事务

  • AJAX 和 REST 支持

    REST 是不断发展的 Web 2.0 技术的一个示例。 WCF 可配置为处理未包装在 SOAP 信封中的“纯”XML 数据。 还可以扩展 WCF 以支持特定的 XML 格式,例如 ATOM(常用的 RSS 标准),甚至非 XML 格式,如 JavaScript 对象表示法(JSON)。

  • 扩展性

    WCF 体系结构具有许多扩展点。 如果需要额外的功能,可以使用多个入口点来自定义服务的行为。 有关可用扩展点的详细信息,请参阅 扩展 WCF

WCF 与其他Microsoft技术集成

WCF 是一个灵活的平台。 由于这种极端的灵活性,WCF 还用于其他几个Microsoft产品。 通过了解 WCF 的基础知识,如果你也使用这些产品中的任何一个,你将立即获得优势。

与 WCF 配对的第一种技术是 Windows Workflow Foundation (WF)。 工作流通过将工作流中的步骤封装为“活动”来简化应用程序开发。在 Windows Workflow Foundation 的第一个版本中,开发人员必须为工作流创建主机。 下一版本的 Windows Workflow Foundation 已与 WCF 集成。 这允许任何工作流轻松托管在 WCF 服务中。 可以通过在 Visual Studio 2012 或更高版本中自动选择 WF/WCF 项目类型来执行此作。

Microsoft BizTalk Server R2 还利用 WCF 作为通信技术。 BizTalk 旨在接收数据并将其从一种标准化格式转换为另一种格式。 必须将消息传送到其中心消息框,其中消息可以使用严格的映射或使用其中一个 BizTalk 功能(例如其工作流引擎)进行转换。 BizTalk 现在可以使用 WCF 业务线(LOB)适配器将消息传送到消息框。

Windows Server AppFabric 应用程序服务器的托管功能专为部署和管理使用 WCF 进行通信的应用程序而设计。 托管功能包括专为支持 WCF 的应用程序设计的丰富工具和配置选项。

另请参阅