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