WCF是一个分层架构,为开发各种分布式应用的充分支持。该体系结构在下面将详细说明。

约定

约定层旁边就是应用层,并含有类似于现实世界的约定,指定服务和什么样的信息可以访问它会使操作的信息。约定基本都是在简短的讨论如下四种类型。

  • Service contract - 约定规定,在沟通过程中使用的信息给客户端,以及对终端的产品和协议的外部世界。

  • Data contract - 由服务交换的数据是由一个数据契约定义。客户端和服务需要在与数据合同协议。

  • Message Contract - 数据合同由约定信息控制。它主要是SOAP消息的参数类型格式的定制。在此,应该提到的是WCF采用SOAP格式进行通信。 SOAP代表简单对象访问协议。

  • Policy and Binding - 由策略和有约束力的约定被定义为一个服务,这样的条件下通信的某些先决条件。客户端需要遵循这一约定。

服务运行时

服务运行时层仅仅是约定层之下。它指定在运行时出现的各种服务行为。有许多类型的行为,可以进行配置,如下的服务运行。

  • Throttling Behavior - 管理处理的消息的数量

  • Error Behavior – 定义任何内部服务错误发生的结果

  • Metadata Behavior – 指定的元数据的可用性到外界

  • Instance Behavior – 定义要创建需要的实例的数量,以使它们可用于在客户端

  • Transaction Behavior – 能够在事务状态的变化的情况下出现任何故障

  • Dispatch Behavior - 控制由该消息得到了WCF的基础处理方式

  • Concurrency Behavior - 控制的客户端 - 服务器通信过程中并行运行功能

  • Parameter Filtering - 功能参数的方法验证的过程,在它被调用之前

消息

这层几个通道构成主要涉及两个端点之间传送的消息的内容。一组通道的形成通道堆栈和构成的通道堆栈的下面那些渠道的两种主要类型。

  • Transport Channels - 这些通道都存在于栈底和负责发送和接收使用像HTTP,TCP,P2P,命名管道和MSMQ传输协议的消息。

  • Protocol Channels - 存在于堆栈的顶部,这些信道也被称为层状通道通过修改消息实现线级协议。

激活和托管

WCF的体系结构的最后一层是其中服务实际上是托管,或者可以以方便客户端被执行的地方。这是通过在下面简要讨论的各种机制进行。

  • IIS - 互联网信息服务的缩写提供使用HTTP协议通过服务优势很多。这里主机代码的要求不是强制性的,用于激活该服务代码,相反,服务码被自动激活。

  • Windows激活服务 - 这就是俗称WAS和带有IIS7.0。 HTTP和非HTTP通信,可以在这里通过使用TCP或Namedpipe协议。

  • Self-Hosting - 这是由一个WCF服务获取自托管的控制台应用程序的机制。这种机制提供了惊人的灵活选择所需的协议和设置自己的解决方案方面。

  • Windows Service - 主持这一机制的WCF服务是有利的,因为该服务保持激活状态,并接触到客户端,由于没有运行时激活。

原文地址:http://www.yiibai.com/wcf/wcf_architecture.html

WCF入门(四)---WCF架构的更多相关文章

  1. WCF入门四[WCF的通信模式]

    一.概述 WCF的通信模式有三种:请求/响应模式.单向模式和双工通信. 二.请求/响应模式 请求/响应模式就是WCF的默认模式,前面几篇随笔中的示例都是这种模式,当客户端发送请求后(非异步状态下),即 ...

  2. WCF入门三[WCF宿主]

    一.概述 WCF程序必须在宿主上运行,也就是WCF服务必须寄宿在某一个windows的进程中,可以是IIS.控制台程序.窗体程序.WAS以及所有.net程序等程序进程中.在我用VS2013创建WCF服 ...

  3. WCF入门一[WCF概述]

    一.什么是WCF WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架.它使得开发者能够建立一个跨平台的.安全.可信赖.事务性的解决方案,且能与已有系统兼容协作 ...

  4. WCF入门教程[WCF基本应用]

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...

  5. WCF入门二[WCF的配置文件]

    一.概述 往往在很多项目中数据库连接字符串.变量和一些动态的加载类会写在配置文件中.WCF也会在配置文件中写入一些配置参数,比如服务的地址.服务用于发送和接收消息的传输和消息编码等,通过配置文件可以灵 ...

  6. 纯手写wcf代码,wcf入门,wcf基础教程

    1.定义服务协定     =>定义接口 using System.ServiceModel; namespace WcfConsole { /// <summary> /// 定义服 ...

  7. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

  8. WCF入门教程(四)通过Host代码方式来承载服务

    WCF入门教程(四)通过Host代码方式来承载服务 之前已经讲过WCF对外发布服务的具体方式. WCF入门教程(一)简介 Host承载,可以是web,也可以是控制台程序等等.比WebService有更 ...

  9. WCF入门教程(五)配置文件

    WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...

随机推荐

  1. 仿UC天气下拉和微信下拉眼睛头部淡入淡出--第三方开源--PullLayout

    Android-PullLayout是github上的一个第三方开源项目,该项目主页是:https://github.com/BlueMor/Android-PullLayout 原作者项目意图实现类 ...

  2. table的边框线的设置

    http://hi.baidu.com/weisuotang/item/a1d98ec298c0aa49a8ba9447 http://www.cnblogs.com/xinlei/archive/2 ...

  3. 笨办法学 Python (第三版)(转载)

    笨办法学 Python (第三版) 原文地址:http://blog.sina.com.cn/s/blog_72b8298001019xg8.html   摘自https://learn-python ...

  4. oracle数据库一些问题

    1.oracle12安装的过程中需要注意字符的选择(特别注意 选择ZHS16GBK 国内企业大多选这个   否则创建数据的时候会出现中文变成问号) 2.设置密码是必须是大小写混合的 pl/sql32链 ...

  5. c++继承详解

    C++中的三种继承public,protected,private 三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员 ...

  6. ios里的UIActionSheet的使用

    class ViewController: UIViewController,UIActionSheetDelegate{ @IBOutlet weak var label1: UILabel! @I ...

  7. 【UIScrollView】基本方法+基本描述

    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(, , , )]; scrollView.backgroundColor = [ ...

  8. c语言编程之队列(链表实现)

    用链表实现了队列,完成了队列的入队和出队功能. #include"stdio.h" typedef int element; typedef struct Node{ struct ...

  9. Oracle 中 for update 和 for update nowait 的区别

    原文出处http://bijian1013.iteye.com/blog/1895412 一.for update 和 for update nowait 的区别 首先一点,如果只是select 的话 ...

  10. cookieContainer应用

    PublicSharedFunctionGetCookiesSetByPage(ByVal strUrl AsString,ByVal cookieToProvide AsString)AsIEnum ...