SOA相关知识总结

来源:互联网 发布:安以轩大s知乎 编辑:程序博客网 时间:2024/05/02 05:04

 1、WSDL:Web服务描述语言,UDDI:通用发现、描述、集成,ESB:企业服务总线

2、SOA作为Web服务的技术架构思想,基于松散耦合架构,将软件按照业务需求定义成“组件”,提高IT对服务的相应能力。当前企业应用系统的固化对二次升级造成困难,而可复用性、适应性和快速实施原则是SOA带来的好处。在一个现有资产与新的应用程序、集成技术或数据源混合在一起的企业中,SOA成为近乎理想的方式。
处于系统软件与应用软件之间的中间件,以自己的复杂程度提高来换取企业应用软件的简单化和重要性。这一块占有重要地位且竞争激烈的市场,正是目前SOA理念发展的前景所在。

3、背景:企业的组织正在从上世纪80年代或更早时期的相互隔离的垂直部门,发展到上世纪80年代和90年代关注业务流程的水平结构,向新的生态系统业务范围的横向结构发展。其重点是扩展供应链,支持客户和合作伙伴访问业务服务。适应这一反战的一种满意的答案就是面向服务的体系结构SOA。另外,多应用继承是当前迫切需要解决的问题,随着网络的普及化,越来越迫切需要将现有多个应用系统集成,以能实现更强的信息处理功能,它要求松散耦合、位置透明、协议独立,SOA就是目前最理想的解决方案。

4、服务是构件提供与使用者调用的相关的物理黑盒封装的可执行代码单元。服务职能通过已发布接口(包括交互标准)进行访问,也可以连接到其他构件,以构件成一个更大的服务。服务通常实现为粗粒度的软件实体,并通过松散耦合的基于消息的通信模型来与应用程序和其他服务交互。

5、SOA的本质:SOA机不是产品也不是一个应用,而是进行应用开发、产品选择、应用继承的策略和解决方案。SOA是一种架构模型,它可以根据需求通过网络队松散耦合的粗粒度应用进行分布式部署、组合和使用。SOA的一个中心思想就是为企业中多个应用的集成提供解决方案。从SOA的定义中可以看出:
(1) SOA是一种软件系统架构。SOA不是一种语言,也不是一种具体的技术,更不是一种产品,而是一种软件系统架构。它尝试给出在特定环境下采用的一种架构,从这个角度上来说,它其实更像一种架构模式(Pattern),是一种理念架构,是人们面向应用服务的解决方案框架。
(2)服务(Service)是整个SOA实现的核心。SOA架构的基本元素是服务,SOA指定一组实体(服务提供者、服务消费者、服务代理和服务契约),这些实体详细说明了如何提供和消费服务,这些服务是可互操作的、独立的、模块化的、位置明确的、松耦合的,并且可以通过网络查找其地址。

6、SOA三种角色(服务提供者、服务消费者、服务代理者)的关系:

W3C给出的SOA模型
如上图所示,服务是一个自包含的、无状态的实体,可以由多个组建组成。它通过实现定义的界面相应服务请求。它也可以执行诸如编辑和处理事务等离散性任务。服务本身并不依赖于其他函数和过程的状态。用什么技术实现服务并不在其定义中加以限制。服务提供者提供符合契约的服务,并将它们发布到服务代理。服务请求者也叫服务使用者,它发现并调用其他的软件服务来提供商业解决方案。从概念上来说,SOA的本质是将网络、传输协议和安全细节留给特定的实现来处理。服务请求着通常称为客户端,但是,也可以使终端用户程序或别的服务。服务代理者作为存储库、电话黄页或票据交换所,产生由服务提供者发布的软件接口。
这三种SOA参与者:服务提供者、服务代理者以及服务请求者通过3个基本操作:发布、查找、绑定相互作用。服务提供者向服务代理者发布服务。服务请求者通过服务代理者查找所需的服务,并帮定到这些服务上。服务提供者和服务请求者之间可以交互。
所谓服务的无状态,是指服务不依赖于任何事先设定的条件,使状态无关的。在SOA架构中,一个服务不会依赖于其他服务的状态。它们从客户端接受服务请求。因为服务是无状态的,他们可以被编排和序列化成多个序列,以执行商业逻辑。编排指的是序列化服务并提供数据处理逻辑。但不包括数据的展现功能。

7、SOA的特征:
(1) 服务的封装(encapsulation)。将服务封装成用于业务流程的可重用组件的应用程序函数。它提供信息或简化业务数据从一个有效的、一致的状态向另一个状态的转变。封装隐藏了复杂性。服务的API保持不变,使得用户远离具体实施上的变更。
(2) 服务的重用(reuse)。服务的可重用性设计显著地降低了成本。为了实现可重用性,服务只工作在特定处理过程的上下文(context)中,独立于底层实现和客户需求的变更。
(3) 服务的互操作(interoperability)。互操作并不是一个新概念。在CORBA、DCOM、web service中就已经采用互操作技术。在SOA中,通过服务之间既定的通信协议进行互操作。主要有同步和异步两种通信机制。SOA提供服务的互操作特性更有利于其在多种场合被重用。
(4) 服务是自治的(Autonomous)功能实体。服务是由组件组成的组合模块,是自包含和模块化的。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,如.NET Remoting、EJB、COM或者CORBA,都需要有一个宿主(Host或者Server)来存放和管理这些功能实体;当这些宿主运行结束时,这些组件的寿命也随之结束。这样当宿主本身或者其他功能部分出现问题的时候,在该宿主上运行的其他应用服务就会受到影响。SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction)、消息队列(Message Queue)冗余部署(Redundant Deployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。
(5) 服务之间的松耦合度(Loosly Coupled)。服务请求者到服务提供者的绑定与服务之间应该是松耦合的。这就意味着,服务请求者不知道提供者实现的技术细节,比如程序设计语言、部署平台,等等。服务请求者往往通过消息调用操作,请求消息和响应,而不是通过使用 API 和文件格式。这个松耦合使会话一端的软件可以在不影响另一端的情况下发生改变,前提是消息模式保持不变。在一个极端的情况下,服务提供者可以将以前基于遗留代码(如COBOL)的实现完全用基于Java语言的新代码取代,同时又不对服务请求者造成任何影响。这种情况是真实的,只要新代码支持相同的通信协议。
(6) 服务是位置透明的(location transparency)。服务是针对业务需求设计的。需要反映需求的变化,即所谓敏捷(agility)设计。要想真正实现业务与服务的分离,就必须使得服务的设计和部署对用户来说是完全透明的。也就是说,用户完全不必知道响应自己需求的服务的位置,甚至不必知道具体是哪个服务参与了响应。

8、从概念上讲,SOA 中有三个主要的抽象级别:
(1) 操作:代表单个逻辑工作单元(LUW)的事务。执行操作通常会导致读、写或修改一个或多个持久性数据。SOA 操作可以直接与面向对象 (OO) 的方法相比。它们都有特定的结构化接口,并且返回结构化的响应。同方法一样,特定操作的执行可能涉及调用附加的操作。
(2) 服务:代表操作的逻辑分组。服务可以分层,以降低耦合度和复杂性。一个服务的粒度(granularity)大小也与系统的性能息息相关。粒度太小,会增加服务间互操作通信的开销;粒度太大,又会影响服务面对需求变化的敏捷性。
(3) 业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。业务流程通常包括多个业务调用。

 


原创粉丝点击