下图演示了 Windows Communication Foundation (WCF) 体系结构的主要层。
WCF 体系结构
合同和说明
协定定义消息系统的各个方面。 数据协定描述了构成服务可以创建或使用的每个消息的每个参数。 消息参数由 XML 架构定义语言 (XSD) 文档定义,使任何理解 XML 的系统都能够处理文档。 消息协定使用 SOAP 协议定义特定消息部分,并允许在互作性要求此类精度时对消息部分进行精细控制。 服务合同指定服务的实际方法签名,并作为接口以支持的编程语言之一(如 Visual Basic 或 Visual C#)分发。
策略和绑定规定了与服务通信所需的条件。 例如,绑定必须(至少)指定使用的传输(例如 HTTP 或 TCP),以及编码。 策略包括必须满足的安全要求和其他条件才能与服务通信。
服务运行时
服务运行时层包含仅在服务的实际作(即服务的运行时行为)期间发生的行为。 限流控制消息的处理数量,并且如果服务需求增加到预设限制,可以对其进行调整。 错误行为指定在服务上发生内部错误时发生的情况,例如,通过控制向客户端传达的信息。 (太多信息可能会给恶意用户带来装载攻击的优势。元数据行为控制元数据是否可供外部世界使用。 实例行为指定可以运行服务的实例数(例如,单一实例仅指定一个实例来处理所有消息)。 通过事务行为,可以在失败时回滚已进行事务处理的操作。 调度行为控制 WCF 基础结构处理消息的方式。
扩展性允许自定义运行时进程。 例如,消息检查是用于检查消息部分的工具,参数过滤使预设动作能够基于对消息标头进行操作的过滤器来执行。
消息传送
消息层由 通道组成。 通道是某种方式处理消息的组件,例如,通过对消息进行身份验证。 一组通道也称为 通道堆栈。 通道对消息和消息头进行操作。 这不同于服务运行时层,它主要涉及处理消息正文的内容。
有两种类型的通道:传输通道和协议通道。
传输通道从网络读取和写入消息(或与外部世界的一些其他通信点)。 某些传输使用编码器将消息(这些消息表示为 XML 信息集)与网络使用的字节流表示形式进行转换。 传输的示例包括 HTTP、命名管道、TCP 和 MSMQ。 编码示例包括 XML 和优化二进制文件。
协议通道通常通过读取或写入消息的其他标头来实现消息处理协议。 此类协议的示例包括 WS-Security 和 WS 可靠性。
消息层说明了数据的可能格式和交换模式。 WS-Security 是启用消息层安全性的 WS-Security 规范的实现。 WS-Reliable 消息传送通道可实现消息传递的保证。 编码器提供了各种编码,这些编码可用于满足消息的需求。 HTTP 通道指定超文本传输协议用于消息传送。 TCP 通道同样指定 TCP 协议。 事务流通道控制事务处理的消息模式。 命名管道通道支持进程间通信。 MSMQ 通道允许与 MSMQ 应用程序进行互作。
托管和激活
在最终形式中,服务是一个程序。 与其他程序一样,服务必须在可执行文件中运行。 这称为 自承载 服务。
还可以 托管服务,也可以在由外部代理(如 IIS 或 Windows 激活服务(WAS)管理的可执行文件中运行。 WAS 允许在运行 WAS 的计算机上部署时自动激活 WCF 应用程序。 还可以以可执行文件(.exe 文件)手动运行服务。 服务也可以作为 Windows 服务自动运行。 COM+ 组件也可以作为 WCF 服务托管。