65.9K
CodeProject 正在变化。 阅读更多。
Home

WCF 架构

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.06/5 (10投票s)

2011 年 4 月 29 日

CPOL

3分钟阅读

viewsIcon

49862

对 WCF 架构的简要解释

引言

下图说明了 WCF 的主要组件

image001.jpg

合同

契约层紧邻应用层。开发者将直接使用此契约来开发服务。我们现在也将这样做。让我们简要了解一下这些契约将为我们做什么,我们还将了解到 WCF 正在基于消息系统工作。

服务契约

服务契约描述了服务可以提供的操作。例如,根据邮政编码提供城市温度的服务。我们将这项服务称为服务契约。它将使用服务和操作契约属性创建。

数据合同

它描述了暴露给客户端的自定义数据类型。这定义了数据类型,并传递给服务和从服务传递。像intstring这样的数据类型会被客户端识别,因为它已经在 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) 的控制之下。

© . All rights reserved.