1.2 SOA的特点
1.2.1 重点关注服务
        SOA支持面向服务的开发方法,是对前续的面向过程、面向消息、面向数据库和面向对象开发方法的补充。
        服务从更高抽象层次上定义,直接与业务相对应,且其实现可采用面向过程、面向消息、面向数据库和面向对象等不同开发方法。
        与面向对象的调用接口相比,服务一般定义较粗粒度的接口,会接收更多的数据,消耗更多的计算资源。服务一般是用来解决应用间互操作问题,以及将服务组合成新应用或新的应用系统,而不是为应用创建具体的业务逻辑。
        通过SOA,围绕服务构建IT系统,有利于IT系统更靠近实际业务要求,使IT系统更容易适应业务变化的要求,另外,对已有应用系统,通过服务化封装,可以使这些系统得到更好的重用,能有效保护对已有应用系统建设的投资。
1.2.2 松耦合
        松耦合是软件设计中一个重要概念,SOA强调服务间的松耦合。在SOA中松耦合包括以下几个方面:
接口松耦合
        接口耦合是指服务请求者与服务提供者之间的耦合。度量的是请求者与服务提供者的依赖性。接口松耦合强调服务请求者仅需要根据已发布的服务契约和服务水平协议(或称服务等级协议)就可以请求一个服务,任何时候服务请求者都不需要了解服务提供者对内部实现的信息。即服务接口封装了所有的实现细节,使服务请求者看不到这些实现细节。
 技术松耦合
技术耦合度量的是服务对特定技术,产品或开发环境的依赖程度。技术松耦合强调服务请求者和服务提供者的实现和运行不需要依赖与特定的某种技术,或某个厂家的解决方案或产品,从而减少对某个厂商的依赖。在SOA系统中服务请求者和服务提供者可以使用不同技术实现,可以在不同厂商的环境中运行。
 流程松耦合
流程松耦合度量的是服务与特定业务流程的依赖程度。强调服务不应与具体的业务流程相关,以便能够被重用于多种不同的业务流程与应用。这一点强调的是服务的可重用性,在SOA系统中对业务服务的合理规划,使得一个业务服务可以在多个业务流程中得到复用,并且随着业务要求的改变,一个服务可以在变化后的新的业务流程中能够得到继续使用。
1.2.3 重构的灵活性
        在SOA系统建设中,基本的单位是实现业务功能的服务,而不是实现业务逻辑的对象,过程,函数等较小的技术单位。
        服务与实际业务功能相关,具有明确的接口。这些服务可在不同的业务流程中得到重用,提高了服务的价值;其次在使用中只需按其接口要求进行访问,屏蔽服务实现细节,服务实现的修改不会影响到服务访问方的逻辑,提高了业务流程的适应性;另外,一旦业务流程变更,仅需对服务进行重新编排,并不修改服务本身,提高了业务流程实现的灵活性。
        重构的灵活性,不仅可以使业务服务可以有更好的重用性,也使得业务流程更容易重构,使IT系统具有了更好的灵活性,可以快速面对变化的市场需求。
1.2.4 对标准的支持
        为了强调互操作性,在SOA系统中,服务需要尽量符合开放标准。与服务相关的技术几乎都存在相应标准,通过对标准的使用可以得到众多好处,包括:
 减少对特定厂商的依赖;
 为服务请求者增加了使用不同服务提供者的机会;
 为服务提供者增加了被更多服务请求者使用的机会;
 增加了使用开放源代码的标准实现,以及参与这些实现的开发机会;
     在SOA系统中,除强调需要遵守技术标准(如SOAP,WSDL,UDDI和WS-*)外,服务层的数据模型和流程模型也有需尽可能基于一些成熟的业务领域标准或纵向的行业标准。
【SOA背后的管理理念】
用松耦合架构平衡各方的利益关系
用契约的方式定义服务之间的关系
用迭代(和团队)演进的实施方式平衡长短期ROI
用集中管理的理念客户组织行为的障碍