论面向服务架构(SOA)设计及其应用

摘要:面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元通过这些服务之间定义良好的接口和契约联系起来。接口时采用中立的方式进行定义的,他应该独立于实现服务的硬件平台、操作系统和编程语言。这使得的构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

比如上一学期做过的河北省创新平台年报统计表这一项目中,每个人所承担的都是开发这一项目的工作,在前期开发填报的过程中,还需要考虑后续数据分析,可视化展示,多种类型查询的功能实现,是一步一步来的,每一个不同的模块可以看作是一个服务,如果把这个系统做成一个低耦合的系统,不同的服务之间通过中立方法定义的接口进行服务组合,前期考虑到面向服务的体系结构,系统开发的到后期应该会比较容易。比如后期做可视化展示的时候,可以把填报和查询两个服务组合起来进行展示。

 

SOA技术参考架构将服务分为6类:

1.连接服务

连接服务又称连通服务,是面向服务架构的骨干,在完成服务的接入,服务间的通信和交互基础上,还提供安全性、可靠性、高性能的服务能力保障。连接服务的一个典型实现就是企业服务总线(Enterprise Service Bus, ESB).

2.协作服务

协作服务通常山通信代理和Web服务代理两部分组成。通信代理与连通服务中的通信代理实现内部有效的数据通信,Web 服务代理与外部的公共注册中心交互,注册本平台对外开放的Web服务以及查找所需要访问的外部’Web 服务。协作服务既可以实现组织之间(如供应链的合作伙伴之间)的交互通信,也可以实现组织内部(如跨地域的分支机构之间,并有防火墙进行保护的情况)之间的交互通信。

3. 业务服务

业务服务指为新建服务提供的特定运行支持环境。新建服务包括单个服务以及合成服务,不包括流程化的服务。合成服务一般由应用编码实现,它可以调用其他的服务(包括:单个服务、合成服务和流程化的服务)。业务服务与连通服务相联接,其中的新建服务与其他服务的通信和交互通过连通服务来实现。业务服务的运行信息由运行管理服务保存,业务服务也接受并执行运行管理服务的管理和控制命令。

4. 业务流程服务

流程服务是业务流程的运行环境,提供流程驱动、服务调用、事务管理等功能。流程服务是为业务流程的运行提供的一组标准服务。业务流程是一组服务的集合,可以按照特定的顺序并使用一组特定的规则进行调用。业务流程可以由不同粒度的服务组成,其本身也可视为服务。

5. 交互服务

交互服务实现人与服务之间的交互功能。人可以是服务的消费者,也可以是服务的提供者。人不能直接消费服务,也不能直接提供服务,需要通过相应的程序实现代理操作(即人通过操作程序实现与服务的交互)。交互服务就是需要提供一组完整的功能,以实现人与服务的交互,并能够方便地进行交互。人员需要请求服务时,向连通服务发送消息请求,由连通服务查找服务,并将请求消息传递给服务提供者。

6. 信息服务

信息服务特指为上层应用系统、同层的其他服务等提供数据访问及资源访问服务。其目标是使应用系统能够统一 、透明、高效地访问和操纵位于网络环境中的各种分布、异构的数据资源,为实现全局数据访问、加快应用开发、增强网络应用和方便系统管理提供支持。

SOA基本特征:

SOA的目标在于让IT系统变得更有弹性,以便更灵活、更快地响应不断改变的企业业务需求,解决软件领域一直以来存在的“如何重用软件功能”问题。采用SOA来构建信息平台,无疑是未来的发展方向。
SOA的5大基本特征为软件功能重用提供了解决的办法。
①服务之间通过简单、精确定义的接口进行通信,不涉及底层编程接口和通信模型。
②粗粒度性:粗粒度服务提供一项特定的业务功能,采用粗粒度服务接口的优点在于使用者和服务层之间不必再进行多次的往复,一次往复就足够了。
③松耦合性:松耦合性要求SOA架构中的不同服务之间应该保持一种松耦合的关系,也就是应该保持一种相对独立无依赖的关系。这样的好处有两点,首先是具有灵活性,其次当组成整个应用程序的服务内部结构和实现逐步地发生变化时,系统可以继续地独立存在。而紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时这种结构就显得非常脆弱。
④位置透明性:位置透明性要求SOA系统中的所有服务对于其调用者来说都是位置透明的,也就是说,每个服务的调用者只需要知道想要调用的是哪一个服务,但并不需要知道所调用服务的物理位置在哪。
⑤协议无关性:协议无关性要求每一个服务都可以通过不同的协议来调用。
另外,在许多传统的IT系统的内在部分采用的是硬连接,这种结构很难让企业快速响应市场的变化,而SOA能够重复利用企业现有的资源,可以减轻企业运营成本,提升资源的使用效率,并且减轻企业维护人员的工作量,减少潜在的风险以及管理费用。在业务方面和IT方面带来许多优势:
①服务给精确的业务流程带来灵活性;
②使用服务来改善客户服务,而不必担心底层复杂的IT基础架构;
③可以迅速创建新的业务流程和复杂的应用程序,以适应市场变化;
④借助安全、易管理的集成环境,成为响应能力更强的IT组织;
⑤通过使用预装的、可重复使用的服务构建模块,缩短开发和部署周期;
⑥通过使用服务来降低复杂性和维护成本;
⑦是增强而不是替换现有的IT系统。

我觉得都在这个面向服务的架构中主要用到的技术有服务之间的松耦合以及SOA服务平台独立的自我描述XML文档,Web服务描述语言是用于描述服务的标准语言。

服务之间的松耦合主要是由中立的结构定义,即没有强制绑定到特定的实现上实现的,松耦合系统有两点好处,其一是它的灵活性,其二是当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。面向对象的模型是紧耦合的,紧耦合意味着应用程序的不同租价之间的结构与其功能和结构是紧密相连的,因此当需要对部分或整个应用程序进行某种形式的更改时,他们就显得非常脆弱。基于SOA的系统并不排除使用面向对象的设计来构建单个服务,但起整体设计确实面向服务的,由于它考虑了系统内的对象,所以虽然SOA是基于对象的,但是作为一个整体,它却不是面向对象的,可以说,面向服务的体系结构是更传统的面向对象的模型的替代模型。不同之处就在于接口,描述接口的就是基于XML的Web描述语言,可扩展标记语言将服务已经转更动态且更灵活的接口系统中。

关于SOA的标准不论是国际化组织还是企业都在指定着相关标准,但是标准的开发都必须符合SOA架构的要求,考虑单个标准与其他SOA标准之间的协调一致。其中OSOA(开放SOA合作组织)成立了两个项目组,分别负责制定SCA(服务组件架构)和SDO(服务数据对象)规范,SCA 提供了一个统一的面向服务组件的调用方式,从而使得用户可以把不同的软件模块通过服务组件的标准化统一的封装起来和被调用访问。而SDO则作为种数据编程架构和API,统一了不同数据源类型的数据编程,让开发人员可以从不同的数据源以统一的方式访问和操纵数据。可以说,SCA以面向构件的方法,简化了用户的业务逻辑编程,提高了应用的灵活性。而SDO则更进一步从数据对象上大大简化了开发。两者不是互相依赖的关系, SDO是SCA的优先但非必要的数据载体,SCA的实现可以支持其他数据形式,如JAXB等。但是SCA搭配SDO是最优组合,因为这样可以彻底排除系统实现的相关性。并且,SDO设计本身就是为了松散耦合而优化的。

在开头提到的河北省创新平台年报统计这一系统中,如果要应用这一SOA架构,应该从进行开发之间,就进行商讨敲定系统应该具备的功能,将这些功能进行划分成一个个服务,再将这些服务中开发的基础服务进行组合看能否组合出所需的新的功能,方便后期开发。在前期设计数据库时就要考虑后期查询的一些限制,甚至数据库开发、填报查询开发这些要同步进行时,就要商定好每个数值的限定范围,以便后期进行服务之间的组合。

 

 

参考文献

  1. 百度百科:面向服务架构

https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84/8258990?fr=aladdin#4

  1. 豆丁网:面向服务架构(SOA)标准发展现状及趋势

https://www.docin.com/p-226274919.html

原文地址:https://www.cnblogs.com/Qi77/p/12882582.html