一、SOA简介
1. SOA(面向服务架构)既是一种编程方式,也是软件开发的一种架构方法。根据这种架构方法,应用程序是由具有一定行为(称为服务)的功能单元组成的。
2. SOA的基本思想是构建一个粗粒度、松散耦合的系统,在这个系统中,服务的使用者与服务的实现唯一共同拥有的东西,就是公开的服务操作和参数的结构定义。
3. 客户端只知道用来描述服务方法的名称、输入参数类型及返回值类型。
4. SOA架构的技术基础是SOAP标准。SOAP用XML语言来定义一个服务操作所发送和接收消息的内容。该消息是由参数的值或者返回的值形成的,而且这些数据需要转换为SOAP格式。
二、SOA架构的4条原则
1. 边界显式定义
    只能通过调用契约才能执行服务中的逻辑。边界是指服务的公共接口与其内部专用实现之间的界线,边界必须显式定义,是指客户端程序只需要知道服务存在的方法,通过契约调用这些方法即可。
2. 服务是自治的
    服务是不依赖于其它服务行为的独立程序模块。服务必须经过部署,而且每个服务 的版本相互独立。
3. 服务共享的是模式和契约,而不是类
    模式是对服务操作的定义,它以一种独立于平台的方式来描述签名:方法的名称、参数类型和返回值类型。契约是服务的元数据,是服务作为黑盒子的对外接口,模式是对参数结构的定义。
4. 服务的兼容性是基于策略的
    这条原则意味着由服务决定在满足什么条件时才处理消息。为了通过协商确定通信中的元素,如消息的格式,安全性等要求,必须使用策略。策略用来进一步明确服务的语义和客户端对服务行为的期望。
三、服务的内部结构
1.  服务的工作原理
    
    一个服务包含若干个方法,这些方法通过一个通道与服务的使用者建立通信。服务的使用者也使用一个与服务通道相匹配的通道实际的调用服务的方法,向服务发送所需要的数据。一方面,通道是模式、契约和策略的结合;另一方面,通道在运行时就是使用的协议。消息可以在通道中双向传递。通道总是与某一个协议捆绑在一起,定义对服务的访问方式和访问过程。协议(如HTTP或MSMQ)用来传送数据,但需要得到服务实现时所在操作系统的支持(如MSMQ)。通道相当于一个管道,消息在其中流动。客户端把消息放在通道的一端,发布服务的平台所在的宿主栈在另一端读取消息。通道将被绑定由契约定义的模式上。在模式和契约中,如果没有对服务操作的元数据定义,那么通道是不完整的。通道还需要知道服务使用者必须实现的策略。
2.  服务的生态系统
1. 应用程序由服务组成
    这个生态系统的核心是服务,服务是组成模块,由它们构建应用程序。
2. 服务的管理状态
    服务的任务和操作经常把数据持久化的保存在数据库中,之后再从数据库中读取数据。
3. 服务实施策略
    服务有权指定和服务逻辑用法有关的策略。策略描述了服务使用者行为模式的先决条件。可以把策略当作在客户端与服务端通信之前必须达成的协议。绝大多数,它是关于安全的协议。
4. 策略实施操作要求
    通过定义策略,服务可以实施调用平台的操作要求。
5. 服务是由契约绑定的
    只有当描述服务操作签名的契约存在时,服务才存在。这个契约是客户与服务之间达成的约定。契约必须显式定义,并且在运行时要绑定到服务。建立客户端的代理类时,需要这个契约。
6. 契约描述了消息交换模式
    消息交换模式是对消息从一方到另一方传送过程和传送方法的定义。消息交换模式确定了同步还是异步调用服务,决定了是否需要返回结果。消息交换模式可以是:
    请求—响应模式:这是最常用的模式,每个调用都直接返回另一个消息。
    单向模式:服务调用没有返回结果,这种消息可以是异步调用的。
    双向模式:在调用方法的过程中那个,服务操作可以回调给客户端,服务操作在返回最终结果之前,可以向客户端程序请求更多的信息。
    消息交换模式在功能层是可见的,因此开发人员可以实现服务操作。在协议更深的技术层,消息交换模式虽然也存在,但大多数情况下是不可见的。
7. 契约包含模式,而模式定义消息的结构
    模式定义了所操作参数的结构。模式采用XSD文档格式来描述参数。XSD是元数据语言,用来描述传入服务操作的参数和服务操作返回的结果。
8. 服务交换模式是一个消息集
    消息的组合和调用顺序可以用一个更加复杂的交换模式来描述。这样依赖,消息交换模式就可以定义哪个操作必须先调用,哪个操作必须最后调用,以及决定是否定义操作的一个完整工作流。
9. 服务交换消息
    交换消息是服务生态系统的最重要组成部分。交换消息意味着调用一个操作和接受来自此操作的响应。
参考书籍:《WCF4高级编程》

转载于:https://www.cnblogs.com/zxj159/p/3930753.html

[WCF编程]2.SOA概述相关推荐

  1. C#异步编程模式IAsyncResult概述

    C#异步编程模式IAsyncResult概述 IAsyncResult 异步设计模式通过名为 BeginOperationName 和 EndOperationName 的两个方法来实现原同步方法的异 ...

  2. 计算机编程免费ppt,计算机编程与C概述课件.ppt

    <计算机编程与C概述课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机编程与C概述课件.ppt>文档请在天天文库搜索. 1.第1章 计算 ...

  3. python并发编程调优_Python并发编程-并发解决方案概述

    Python并发编程-并发解决方案概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.并发和并行区别 1>.并行(parallel) 同时做某些事,可以互不干扰的同一个时 ...

  4. 【Linux系统编程】进程间通信概述

    00. 目录 文章目录 00. 目录 01. 进程间通信概述 02. 进程间通信目的 03. 进程间通信机制 04. 附录 01. 进程间通信概述 进程是一个独立的资源分配单元,不同进程(这里所说的进 ...

  5. 【转】1.1异步编程:线程概述及使用

    从此图中我们会发现 .NET 与C# 的每个版本发布都是有一个"主题".即:C#1.0托管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程.现在我为 ...

  6. WCF编程系列(五)元数据

    WCF编程系列(五)元数据 示例一中我们使用了scvutil命令自动生成了服务的客户端代理类: svcutil http://localhost:8000/?wsdl /o:FirstServiceC ...

  7. WCF编程系列(六)以编程方式配置终结点

    WCF编程系列(六)以编程方式配置终结点 示例一中我们的宿主程序非常简单:只是简单的实例化了一个ServiceHost对象,然后调用open方法来启动服务.而关于终结点的配置我们都是通过配置文件来完成 ...

  8. 【Scheme】Scheme 编程学习(一) —— 概述

    Scheme 编程学习(一) -- 概述 文章目录 Scheme 编程学习(一) -- 概述 概述 I - 语法简洁 1.1 - 算数运算 (arithmetic) 1.2 - 定义值 1.3 - 定 ...

  9. [WCF编程]10.操作:回调操作

    一.回调操作概述 WCF支持服务将调用返回给它的客户端.在回调期间,许多方面都将颠倒过来:服务将成为客户端,客户端将编程服务.回调操作可以用在各种场景和应用程序中,但在涉及事件或者服务发生时间需要通知 ...

最新文章

  1. 【HDU2683 TCE-frep number system 完全数+二项展开式】
  2. pytest集成Allure Report
  3. Android ListView滑动后背景变黑
  4. mysql-linux64,Linux64下mysql安装和开辟
  5. Centos6.4下zabbix的安装配置
  6. iphone pageController 的实现
  7. Linux下安装Nginx完整教程及常见错误解决方案
  8. 问题六十一:三次b样条(b-spline)曲线的控制点和曲线形状的对应——以回旋体的“基本曲线”为例
  9. Python使用requests发送post请求
  10. 建筑工程计算机的应用,计算机对建筑工程的应用
  11. BLENDER快捷键(个人防止忘记的几个快捷键)
  12. 什么是jquery?简单的jquery代码
  13. 织梦模板安装后出现中文乱码?
  14. linux 搭建 gitlab 私人服务器
  15. GIS Geography
  16. 清华、人大获奖,浙大提名,ICLR 2022杰出论文奖出炉
  17. IPPBX系统组成原理及其应用
  18. mysql 中文正则_MySQL
  19. Linux学习笔记-无名管道,有名管道,消息队列
  20. 计算机机房前端,有线电视机房前端是怎么做

热门文章

  1. python怎么安装matplotlib-为python安装matplotlib模块
  2. java和python哪个好学-Python和Java,哪个容易学呢?
  3. python好学-html和Python哪个好学?
  4. 查看python安装路径-在cmd中查看python的安装路径方法
  5. python密码学编程pdf-Python密码学编程 PDF 下载
  6. python难学嘛-python语言难学吗
  7. 软件测试用python一般用来做什么-Python用来做Web开发的优势有哪些
  8. python发明者叫什么-近 50 年来最具影响力的 10 种编程语言,都是谁发明的?
  9. python读取文件某一行-python和shell读取文件某一行
  10. python官方文档中文下载-python中文官方文档 PDF 下载