什么是 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 实现不同消息交换模式的详细信息,请参阅协定

  • 服务元数据

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

  • 数据协定

    由于 WCF 是使用 .NET Framework 生成的,因此它也包括代码友好的方法,用于提供希望强制执行的协定。 数据协定就是其中一种通用类型的协定。 实质上,当您使用 Visual C# 或 Visual Basic 对服务进行编码时,处理数据的最简单方法是使用属于数据实体的属性创建表示该数据实体的类。 WCF 包括一个以这种轻松的方式处理数据的综合系统。 在创建了表示数据的类之后,服务会自动生成使客户端能够符合所设计数据类型的元数据。 有关详细信息,请参阅使用数据协定

  • 安全性

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

  • 多种传输和编码方式

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

  • 可靠的排队消息

    WCF 支持使用通过 WS-Reliable Messaging 实现的可靠会话和使用 MSMQ 进行可靠的消息交换。 有关 WCF 中可靠和队列消息支持的更多信息,请参见队列和可靠会话

  • 持久性消息

    持久性消息决不会由于通信中断而丢失。 持久性消息模式的消息会始终保存到数据库中。 如果发生中断,数据库将允许您在恢复连接后恢复消息交换。 你也可以使用 Windows Workflow Foundation (WF) 创建持久性消息。 有关详细信息,请参阅工作流服务

  • 事务

    WCF 还使用三个事务模型之一来支持事务:WS-AtomicTransaction、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 的应用程序。

另请参阅