这个系列的博客由WCF4 高级编程学习记录,如有错误请指正。

首先介绍一些概念:

SOA: (Service-Oriented Architecture 面向服务架构),一种架构方法,也是一种编程模式。SOA架构允许用户一定的方式组织分布是应用程序。SOA基本思想就是构建一个松耦合的系统,SOA构架的技术基础是SOAP标准。

SOAP:(Simple Object Access Protocol 简单对象访问协议),交换数据的一种协议,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议。使用XML语言来定义一个服务操作所发送和接收消息的内容。一个SOAP包含一个消息头(可选)和一个消息体(必须),消息头与业务无关,消息体包含有用数据。

XSD: 指XML结构定义 ( XML Schemas Definition )

WS-* Protocols:WS-*是一系列标准协议,他们规定了使用分布式消息传递时如何实现某个需求和行为;描述了如何通过SOAP头元素实现安全、可靠、事务性的消息交换等。

WSDL:对契约的XML格式的定义,包括服务接口的元数据,函数名称、参数名称、数据类型、函数返回值类型等。WSDL文档主要作用就是按跨平台方式定义契约,因为它是按照XML格式定义的。

SOAP架构的原则:

    • 1. 边界显示定义:服务运行时所处的进程和内存空间必须独立于引用服务的客户端程序所在的进程和内存空间,客户端通过地址访问服务。通俗的讲:客户端和服务运行在完全不同的两个地方,服务告诉客户端地址。
    • 2. 服务自动化: 服务是不依赖其他服务的行为的独立程序模块。服务之间没有任何耦合,且每个服务的不同版本相互独立。
    • 3. 服务共享的是模式和契约,而不是实现类:模式是对服务操作的定义,它以独立于平台的方式来描述签名。契约是服务的元数据,是服务作为黑盒的对外接口。我的理解是:客户端和服务共享的只有接口,而不是具体的实现类。
    • 4. 基于策略的服务兼容性: 也就是说服务决定在满足一定条件的情况下才能处理客户端发送的消息。如消息的格式和对安全方面的要求,必须使用策略。

服务的生态系统:

SOA服务生态系统组成示意图

  • 1. 应用程序由服务组成:整个系统的核心就是服务,由服务组成的模块构建起完整的应用程序。
  • 2. 服务的状态管理: 服务的任务和操作就是持久化数据和读取数据。
  • 3. 服务的实施策略:服务幽泉制定与服务逻辑有关的策略,策略定义了服务使用者行为模式的先决条件。该策略大多数是安全方面的协议。
  • 4. 策略实施操作要求:客户端必须实施某种安全策略才能调用服务。
  • 5. 服务是由契约绑定的: 当服务描述的操作签名存在时,服务才存在。契约显示定义,并且在运行时要绑定到服务。
  • 6. 契约定义了消息交换模式:消息交换模式分为三种:

1. 请求-相应模式: 最常见的模式,每次调用都返回消息。

2. 单向模式: 服务没有返回结构,可以异步调用。

3. 双向模式: 服务和客户端可以项目调用。

  • 7. 契约包含模式,而模式定义消息的结构: 模式采用XSD文档格式来描述参数。XSD用来描述传入服务操作的参数和返回的结果。
  • 8. 消息交换模式是一个消息集: 消息的组合和调用顺序可以用一个更加复杂的交换模式来描述。消息交换模式定义哪个操作先调用,哪个操作后调用。
  • 9. 服务交换信息: 交换信息意味着调用一个操作和接收来自此操作的相应。交换信息也就是,一个消息把客户端的输入参数传输给服务,另一个消息把相应传送给调用者。

这篇文章介绍了基本的SOA程序的构成部分和服务在SOA程序中的作用,下一篇文章介绍WCF的基础内容。

WCF 学习系列——WCF的学习基础的更多相关文章

  1. Python学习系列(二)(基础知识)

    Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比, ...

  2. 《Python爬虫学习系列教程》学习笔记

    http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...

  3. 【深度学习系列】迁移学习Transfer Learning

    在前面的文章中,我们通常是拿到一个任务,譬如图像分类.识别等,搜集好数据后就开始直接用模型进行训练,但是现实情况中,由于设备的局限性.时间的紧迫性等导致我们无法从头开始训练,迭代一两百万次来收敛模型, ...

  4. Python学习系列(一)(基础入门)

    Python入门 本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维,不求高大上,只求懂点皮毛,作为知识储备,不至于落后太远.如果兴趣学习者,推荐一个基础视频 ...

  5. Python 学习系列----第一章:基础知识

    1.1 常量-----不能改变它的值 1.2 数 在Python 中数可以分为整数.浮点数和复数. PS:在Python中不用区分'long int'类型.默认的整数类型可以任意长.(译者注:长度应该 ...

  6. 【Spring源码深度解析学习系列】容器的基础XmlBeanFactory(二)

    一.配置文件封装 Spring的配置文件读取是通过ClassPathResource进行封装的,如new ClassPathResource("test.xml"),那么Class ...

  7. [jQuery学习系列五 ]5-Jquery学习五-表单验证

    前言最近总是有一个感觉,虽然这些东西都自己学习并一个案例一个案例的去验证过了.但是总觉得不写成博客记录下来这些都不是自己的东西(心理作用,哈哈).所以每当学习或者复习相关的知识我都喜欢记录下来,下面开 ...

  8. Nodejs全站开发学习系列 & 深入浅出Node学习笔记 & Spider抓取

    https://course.tianmaying.com/node 这个系列的文章看起来很不错,值得学习一下. /Users/baidu/Documents/Data/Interview/Web-S ...

  9. [jQuery学习系列二 ]2-JQuery学习二-数组操作

    前言 上一篇内容 已经对于Jquery 有了一些认识, 包括Jquery的选择器和DOM对象, 那么这一篇继续来看下Jquery中很实用的Jquery对于数组的操作. Jquery中对数组的操作大致有 ...

随机推荐

  1. WinForm SetWindowPos窗口置顶使用说明

    就是有时候窗口不能够成功置顶,这时需要重新切换下标签,就可以置顶了,本文介绍C# SetWindowPos实现窗口置顶的方法: [DllImport("user32.dll", C ...

  2. laravel composer vendor 目录加载类库详细 之后做说明

    composer installLoading composer repositories with package informationInstalling dependencies (inclu ...

  3. elasticsearch 管理常用命令集合

    elasticsearch rest api遵循的格式为: curl -X<REST Verb> <Node>:<Port>/<Index>/<T ...

  4. web版本的用户登陆票据 FormsAuthenticationTicket

    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "username", DateTime.N ...

  5. XShell上传、下载本地文件到linux服务器

    Python之道发表于程序员八阿哥订阅 1.2K 腾讯云服务器 年付3折起 首次购买云服务器 最低3折起 超高性价比 限时抢购 Xshell很好用,然后有时候想在windows和linux上传或下载某 ...

  6. 常用Tables控件介绍(二)

    初始化:1.使用现有表单创建数据表格,定义在HTML中的字段和数据 2.使用现有的table创建数据表格,定义在HTML中的字段 3.使用JS创建数据库表格 一.初始化后,根据单元格内的值,修改显示内 ...

  7. Linux命令xargs的使用

    ls | xargs catls | xargs -I {} cat {}  大写I,指定参数的替换符号为{} 自定义

  8. 记28377系列芯片中Can总线标准帧和扩展帧该怎么设置?

    笔者最近在调试28377系列DSP芯片的can通讯时,遇到一个小问题,百思不得姐~ 起因是这样的,在设计一个多单元并联的系统,所有单元使用can总线进行通讯,当通讯端口,can外设,以及相关通讯协议都 ...

  9. xorm -sum 系列方法实例

    求和数据可以使用Sum, SumInt, Sums 和 SumsInt 四个方法,Sums系列方法的参数为struct的指针并且成为查询条件. package main import ( " ...

  10. chmod: changing permissions of 'xxx': Operation not permitted

    众所周知,在linux系统中,权限最大的是root账号,但凡修改涉及到系统本身的重大权限的操作,都需要root的权限才能操作.但是有些时候也有root干不了的事情. 比如:chmod: changin ...