WCF 架构
对 WCF 架构的简要解释
引言
下图说明了 WCF 的主要组件

合同
契约层紧邻应用层。开发者将直接使用此契约来开发服务。我们现在也将这样做。让我们简要了解一下这些契约将为我们做什么,我们还将了解到 WCF 正在基于消息系统工作。
服务契约
服务契约描述了服务可以提供的操作。例如,根据邮政编码提供城市温度的服务。我们将这项服务称为服务契约。它将使用服务和操作契约属性创建。
数据合同
它描述了暴露给客户端的自定义数据类型。这定义了数据类型,并传递给服务和从服务传递。像int
、string
这样的数据类型会被客户端识别,因为它已经在 XML 模式定义语言文档中提及,但是自定义创建的类或数据类型不能被客户端识别,例如,Employee
数据类型。通过使用DataContract
,我们可以让客户端知道我们正在使用Employee
数据类型来返回或将参数传递给方法。
消息合同
WCF 运行时提供默认的 SOAP 消息格式,用于客户端和服务之间的通信。如果它不能满足您的要求,那么我们可以创建我们自己的消息格式。这可以通过使用消息契约属性来实现。
策略和绑定
指定与服务通信所需的条件,例如,与服务通信的安全要求、用于绑定的协议和编码。
服务运行时
它包含在服务运行时发生的行为。
- 节流行为 - 控制处理多少消息
- 错误行为 - 指定当服务上发生内部错误时会发生什么
- 元数据行为 - 告知元数据如何以及是否可供外界使用
- 实例行为 - 指定运行时必须创建多少个服务实例
- 事务行为 - 如果发生故障,则启用事务操作的回滚
- 分发行为 - 控制消息如何被 WCF 基础设施处理
消息传递
消息层由通道组成。通道是以某种方式处理消息的组件,例如,通过验证消息。一组通道也称为通道堆栈。通道是用于向端点发送和从端点接收消息的核心抽象。总的来说,我们可以将通道分为以下几类
传输通道
处理从网络发送和接收消息。协议如 HTTP、TCP、命名管道和 MSMQ。
协议通道
通过处理并可能修改消息来实现基于 SOAP 的协议。例如,WS-Security 和 WS-Reliability。
激活和托管
服务可以被托管或执行,以便每个人都可以从客户端访问。WCF 服务可以通过以下机制托管
IIS
如果服务使用 Http 作为协议,则 Internet Information Service 提供了许多优势。它不需要主机代码来激活服务,它会自动激活服务代码。
Windows 激活服务
(WAS) 是 IIS 7.0 附带的新进程激活机制。除了基于 HTTP 的通信之外,WCF 还可以使用 WAS 通过其他协议(例如 TCP 和命名管道)提供基于消息的激活。
自托管
WCF 服务可以作为控制台应用程序、WinForms 或具有图形用户界面的 WPF 应用程序进行自托管。
Windows 服务
WCF 也可以托管为 Windows 服务,以便它在服务控制管理器 (SCM) 的控制之下。