SOA

Posted daisy99lijing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SOA相关的知识,希望对你有一定的参考价值。

SOA

2020.5.15

SOA被称为”新的革命”,随着全球信息化的浪潮,信息化产业不断发展、延伸,已经深入了众多的企业及个人,SOA系统架构的出现,将给信息化带来一场新的革命.

在信息化建设与应用的过程中,出现了许多信息标准,例如XML(标准通用标记语言的子集),Unicode、UML等标准,但是很多系统与系统相互之间仍使用自己独立的数据格式,这样导致信息化建设汇报很低,就像我费很大力气提供了一个标准,但是没有人使用,或只有一小部分人使用,这样的话,信息不能统一,信息统一建设就进度很慢,在这些过程中,产生了ETL,ETL常用于从源系统中提取数据,将数据转换为与目标系统相兼容的格式,然后将其装载到目标系统中。数据经过获取、转换、装载后,要产生应用价值,还需另外的数据展现工具予以实现,如此复杂的数据应用过程,必定产生高昂的应用成本。

为了避免这些费用,SOA应运而生。SOA的出现给传统的信息化产业带来新的概念,不再是各自独立的架构形式,能够轻松的互相联系组合共享信息。

现在我们来看一下什么是SOA?

SOA翻译过来是面向服务的架构,SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

对于SOA的定义也是多种多样,但是没有一个公认的定义,每个组织对SOA都有自己的定义,较为经典的是如下三种定义:

1)W3C 的定义:SOA 是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。

 (2)Service-architecture.com 的定义:服务是精确定义、封装完善、独立于其他服务所处环境和状态的函数。SOA 本质上是服务的集合,服务之间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务之间需要某些方法进行连接。

 (3)Gartner 的定义:SOA 是一种 C/S 架构的软件设计方法,应用由服务和服务使用者组成,SOA 与大多数通用的 C/S 架构模型不同之处,在于它着重强调构件的松散耦合,并使用独立的标准接口。

SOA的模型实例如下所示:

 

1. 概要叙述你参与分析和开发的软件系统开发项目以及你所担任的主要工作。

我们要开发一款基于计算机视觉的智能交通服务,随着我国社会经济的迅速发展以及城市化进程的加快,我国机动车数量不断增长,导致交通问题日益严重,实施有效的交通监控对于解决日益增长的交通问题具有积极意义。我们主要采用计算机机器学习以及卷积算法对交通涉及到的物体进行识别,在目前我主要负责对视频的处理,视频播放,视频成帧等的处理。

2. 说明面向服务架构的主要技术和标准,详细阐述每种技术和标准的具体内容。

SOA技术参考架构主要描述SOA基础技术平台与辅助工具,同时描述这两部分与其他外围相关元素之间的关系。SOA技术参考架构将服务分为6类,具体描述如下:

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

2).协作服务

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

3).业务服务

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

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

5).交互服务

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

6).信息服务

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

3. 详细说明你所参与的软件系统开发项目中,构建SOA架构时遇到了哪些问题,具体实施效果如何。

我们主要服务于交通系统,根据对象将系统分为视频服务,汽车服务,行人服务三部分,定制这样三个接口之后,再根据具体的功能对其进行服务,再将处理结果反馈给管理人员,难点在于建立统一的接口服务于各个阶层,其基础建立在服务于固定的系统好处,降低成本,提高通用性,提高服务能力,提高管理能力,控制能力,降低技术要求,对改变能快速做出应对,降低风险在 SOA 模型中,所有的功能都定义成了独立的服务。服务之间通过交互和协调完成业务的整体逻辑。所有的服务通过服务总线或流程管理器来连接。这种松散耦合的架构使得各服务在交互过程中无需考虑双方的内部实现细节,以及部署在什么平台上。

SOA服务的基本结构如下所示:

 

从图中可以看出,服务模型的表示层从逻辑层分离出来,中间增加了服务对外的接口层。通过服务接口的标准化描述,使得服务可以提供给在任何异构平台和任何用户接口使用。这就形成了统一,方便了后期开发。

SOA的设计原则

  在 SOA 架构中,继承了来自对象和构件设计的各种原则,例如,封装和自我包含等。那些保证服务的灵活性、松散耦合和复用能力的设计原则,对 SOA 架构来说同样是非常重要的。关于服务,一些常见的设计原则如下:

    (1)明确定义的接口。服务请求者依赖于服务规约来调用服务,因此,服务定义必须长时间稳定,一旦公布,不能随意更改;服务的定义应尽可能明确,减少请求者的不适当使用;不要让请求者看到服务内部的私有数据。

    (2)自包含和模块化。服务封装了那些在业务上稳定、重复出现的活动和构件,实现服务的功能实体是完全独立自主的,独立进行部署、版本控制、自我管理和恢复。

    (3)粗粒度。服务数量不应该太多,依靠消息交互而不是远程过程调用,通常消息量比较大,但是服务之间的交互频度较低。

    (4)松耦合。服务请求者可见的是服务的接口,其位置、实现技术、当前状态和私有数据等,对服务请求者而言是不可见的。

    (5)互操作性、兼容和策略声明。为了确保服务规约的全面和明确,策略成为一个越来越重要的方面。这可以是技术相关的内容,例如,一个服务对安全性方面的要求;也可以是与业务有关的语义方面的内容,例如,需要满足的费用或者服务级别方面的要求,这些策略对于服务在交互时是非常重要的。

以上是关于SOA的主要内容,如果未能解决你的问题,请参考以下文章

SOA Presentation - SOA概念介绍

架构-SOA:SOA(面向服务的架构)

SOA 与 DDD

SOA初探

面向服务的架构SOA

面向服务的架构SOA