面向服务的软件架构(SOA)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

目录

1. SOA定义

2. SOA设计原则

3. SOA技术

4. SOA的生命周期

5. SOA优缺点

优点

缺点

6. SOA实现方法

6.1 Web Service

6.2 企业服务总线

6.3 服务注册表

参考


1. SOA定义

SOA (Service-Oriented Architecture,SOA),从应用和原理的角度,目前有2种公认的标准定义。

  • 从应用的角度定义

可以认为SOA是一种应用程序架构。将业务应用划分为单独的业务功能和流程,即所谓的服务。所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。

这种业务灵活性可以使企业快速发展,降低成本,改善对及时、准确信息的访问。有助于实现更多的资产重用、更轻松的管理和更快的开发和部署。

  • 从软件的基本原理定义

可以认为SOA是一个组件模型。它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。

接口就是采用中立的方式 进行定义的,它独立于服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以一种统一和通用的方式进行交互。

2. SOA设计原则

在SOA的架构中,继承了来自对象构件设计的各种原则。例如封装和自我包含等。那些保证服务的灵活性和松耦合性和复用能力的设计原则,对SOA架构来说同样是非常重要的。SOA是一种粗粒度、松耦合 的服务架构,其服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通信接口。具有以下特征:

(1)标准化接口:通过服务接口的标准化描述,使得服务可以通过给在任何异构平台和任何用户接口中使用。

(2)自包含和模块化

(3)粗粒度服务:能够提供高层业务逻辑的可用性服务,通过一组有效设计和组合的粗粒度服务,业务专家能够有效的组合出新的业务流程和应用程序。

(4)松散耦合:将服务的使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。

(5)互操作性、兼容和策略声明

3. SOA技术

  • UDDI(Universal Description Discovery and Integration),统一描述、发现和集成

提供了一种服务发布、查找和定位的方法,是服务的信息注册规范 ,以便被需要该服务的用户发现它。UDDI规范描述了服务的概念,同时也定义了一种编程接口 ,通过UDDI提供的标准接口,企业可以发布自己的服务供其他企业查询和调用,也可以查询特定服务的描述信息,并动态绑定到该服务器上。

在UDDI技术规范中,主要包含以下三个部分的内容:

        1)数据模型:UDDI数据模型是一个用于描述业务组织和服务的XML SChema

        2)API:UDDI API 十一组用于查找或发布UDDI数据的方法,UDDI API基于SOAP。

        3)注册服务:UDDI服务是SOA中的一种基础设施,对应着服务注册中心的角色。

  • WSDL(Web Service Description Language),Web服务描述语言

是对服务进行描述的语言,由一套基于XML的语法定义。WSDL描述的重点是服务,它包含服务事先定义和服务接口定义。

  • SOAP(Simple Object Access Protocol),简单对象访问协议

定义了服务请求者和服务提供者之间的消息传输规范 。SOAP用XML 来格式化消息,用HTTP 来承载消息。通过SOAP,应用程序可以在网络中心进行数据交换和远程过程调用。

SOAP主要包括以下四个部分:

  SOAP封装定义了一个整体框架,用来表示消息中包含什么内容,谁来处理这些内容,以及这些内容是可选还是必须的。

   SOAP编码规则定义了一种序列化的机制,用于交换系统所定义的数据类型的实例

        1)封装:  SOAP封装定义了一个整体框架,用来表示消息中包含什么内容,谁来处理这些内容,以及这些内容是可选还是必须的。

        2)编码规则:SOAP编码规则定义了一种序列化的机制,用于交换系统所定义的数据类型的实例

        3)PRC表示:SOAP RPC表示定义了一个用来表示远程过程调用和应答的协议

        4)绑定:SOAP绑定定义了一个使用底层数据协议来完成在节点之间交换SOAP封装的约定。

  • REST(Representational State Transfer),表述状态转移

是一种只用HTTP和XML进行Web通信的技术,可以降低开发的复杂度,提高系统的可伸缩性。它的简单性和缺少严格配置的文件的特性,使它与SOAP很好的隔离开来,REST从根本上来说只支持几个操作(POST,GET,PUT 和 DELETE),这些操作适用于所有的消息。

REST提出了如下的一些设计概念和准则:

        1)网络上的所有事物都被抽象为资源

        2)每个资源对应一个唯一的资源标识

        3)通过通用的连接件接口对资源进行操作

        4) 对资源的操作不会改变资源标识

        5) 所有的操作都是无状态的

4. SOA的生命周期

1)建模 (2)组装 (3)部署 (4)管理 (5)控制

5. SOA优缺点

优点

(1)编码灵活性 (2)明确开发人员的角色 (3)支持多种客户类型 (4)更易维护 (5)更好的可伸缩性 (6)更高的可用性 (7)利用现有资产 (8)更易于集成和管理复杂性 (9)更快的整合现实 (10)减少成本和增加重用

缺点

(1)可靠性 SOA 在事务的最高可靠性方面做的不够好,包括: 不可否认性、消息一定会被传输且仅传输一次以及事务撤回。

(2)安全性。由于SOA中的构件往往不尽相同,且有相互联系,想要保持在SOA架构中的安全性就十分复杂。

(3)编排。统一协调分布式软件以便构建有意义的业务流程是最复杂的,但它可以同时也最适合面向服务类型的集成,原因很显然,建立在SOA上的应用软件可以被设计成可以按需拆装、重新组装的服务。作为目前业务流程管理解决方案的核心,编排功能使IT管理人员能够通过已经部署的套装或者自己开发的应用软件功能,把新的元应用软件连接起来。

(4)遗留系统支持。

(5)语义: 定义事务和数据的业务含义,一直是IT管理人员面临的最棘手的问题。

(6)性能: 分布式系统之间往往有更多的网络开销。

6. SOA实现方法

SOA 只是一种概念和思想,需要借助于具体的技术和方法来实现它。从本质上来说,SOA是用本地计算模型来实现一个分布式应用,也有人成这种方法为“本地化设计,分布式工作”模型。CORBA、DCOM 和 EJB 都是属于这种解决方式,也就是说,SOA最终可以基于这些标准来实现。

实现SOA的方法比较多,目前比较主流的有Web Service、企业服务总线、服务注册表

6.1 Web Service

Web Service 的解决方案中,一共有3种工作角色。服务提供者服务请求者注册中心。其中注册中心是一个可选的角色。他们之间的交互和操作,构成了SOA的一种实现架构。

6.2 企业服务总线

ESB 的概念是从SOA发展起来的,他是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供了一个可靠的、可度量和高度安全的环境,并可帮助企业对业务流程进行设计和模拟,对每个业务流程实施控制和跟踪、分析并改进流程和性能。

 

ESB是由中间件技术实现并支持SOA的一组基础架构,是传统中间件技术与XML、Web Service等技术结合 的产物,是整个企业集成架构下的面向对象的企业应用集成机制。具体来说,ESB具有以下功能:

  • 支持异构环境中的服务、消息和基于事件的交互

  • 通过使用ESB,可以再几乎不更改代码的情况下,以一种无缝的入侵方式使现有系统具有全新的服务接口,并能够在部署环境中支持任何标准。

  • 充当缓冲器的ESB与服务逻辑相分离,从而使不同的系统可以同时使用同一个服务,不用在系统或数据发生改变时,改动服务代码。

  • 在更高的层次,ESB还提供注入服务代理和协议转换等功能。允许在多种形式下通过HTTP、SOAP和JMS总线的多种传输方式,主要是以网络服务的形式,为发表、注册、发现和使用企业服务或界面提供基础设施。

  • 提供可配置的消息转换翻译机制和基于消息内容的消息路由服务,传输消息到不同的目的地。

  • 提供安全和拥有者机制,以保证消息和服务的认证、授权和完整性。

6.3 服务注册表

参考

  • 《系统架构师》

关于作者:

犇叔,浙江大学计算机科学与技术专业,研究生毕业,而立有余。先后在华为、阿里巴巴和字节跳动,从事技术研发工作,资深研发专家。主要研究领域包括虚拟化、分布式技术和存储系统(包括CPU与计算、GPU异构计算、分布式块存储、分布式数据库等领域)、高性能RDMA网络协议和数据中心应用、Linux内核等方向。

专业方向爱好:数学、科学技术应用

关注犇叔,期望为您带来更多科研领域的知识和产业应用。

内容坚持原创,坚持干货有料。坚持长期创作,关注犇叔不迷路

SOA面向服务架构)是什么? 现在对SOA理解些了吗?SOA是一种面向服务的架构,基于分布式架构,它将不同业务功能按服务进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。httpshttpshttpshttps。... 阅读详情

相关推荐

系统架构师-面向服务架构(SOA)全解

按教材的分发,ESB是企业服务总线模式,而UDDI就是服务注册表模式,至于通信及通信格式这些问题,可以采用SOPA+WSDL的方案,这些都不是必须的,都可以根据实际情况调整。顾名思义,它首先是一门语言,这个语言就是用来描述web服务和通信,其实就是很常见的get/post等等方法,http或者https,端口号是多少。交换信息的简单的协议,是一个基于XML的协议。看图说故事,右边的微服务架构,第一眼就看到少了ESB,SOA把系统分为服务微服务把系统分为微服务,所以微服务=SOA?3. 微服务更倾向于。

qq_35119405的博客 4367

【软件定义汽车】【架构篇】SOA面向服务软件架构

本文参考:https://www.jianshu.com/p/799741994ce6 在传统的离散架构下,车内的ECU通过总线相互通信,但是它们之间的信号收发关系和路由信息都是静态的,是在编译阶段写死的。各个ECU会周期性的发出各种信号,如果需要在另外一个子网当中使用,还需要网关进行转发,出于负载的考虑,网关通常不会把所有信号都转发,如果预先定义功能中,不包含某个信号,而后续又要使用,除了修改业务所在单元之外,还需要对网关的配置进行修改。 如果车辆上市后,想在某个控制器上新增功能,可以通过OTA...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 2647

SOA架构和微服务架构的区别

1.SOA架构和微服务架构的区别 首先SOA微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件。 1.SOA(Service Oriented Architecture)“面向服务的架构”:他是一种设计方法,其中包含多个服务服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。 2.微服务架构:其实和 SOA 架构类似,微服务是在 SOA 上做的升华,..

usstmiracle的博客 1万+

SOA/软件架构设计---面向服务的架构(SOA详细解释)

文章比较多,但干货慢慢,请耐心阅读 面向服务的架构 迄今为止,对于面向服务的架构(Service-Oriented Architecture,SOA)还没有一个公认的定义。许多组织从不同的角度和不同的侧面对 SOA 进行了描述,较为典型的有以下三个: (1)W3C 的定义:SOA 是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口...

zhangxiaoxiao9527的博客 11万+

SOA面向服务架构)全面解析

SOA(Service-Oriented Architecture,面向服务架构)是一种将应用程序功能以“服务”的形式进行模块化设计的架构风格。这些服务是独立的功能模块,它们通过定义明确的接口进行通信,并可以跨不同的平台和技术栈相互协作。在SOA中,每个服务通常代表一个独立的业务功能(如客户管理、订单处理等),能够被其他服务独立地调用和复用。SOA的目标是通过服务复用和松耦合,实现灵活性、扩展性和可维护性,便于构建复杂的企业级应用。

hello.reader 1万+

自动驾驶软件架构之:中间件与面向服务SOA架构

文章目录 参考:自动驾驶软件架构之:中间件与SOA(二)

喜欢打篮球的普通人 705

软件架构设计系列总结—5—SOA面向服务架构简述

在上篇中我们简单谈了下架构设计中服务层的简单理解,在这里我们将继续服务层的架构,在本节我们将重点在于分布式服务。在分布式系统中表现层和业务逻辑层 并不处于同一物理部署,所以我们必须存在分布式服务,以契约方式发布于网络中,我们的关注点在于服务面向服务编程,这种通过组合业务逻辑暴露可用服务的架构叫做面向服务架构(SOA)。     SOA强调一个松耦合,基于宏服务的架构,通过契约暴露给服务消费者可

3890

Dubbo(一)—— 通过软件架构发展史对SOA面向服务、Dubbo框架理解

Dubbo(一)—— 软件架构发展史、SOA面向服务、Dubbo框架原理详解 1.软件架构发展史 All In One架构(简单单体模式) 如下图,所有的模块都在Service.java类中,包括数据访问代码,控制跳转代码,业务处理代码等。 优缺点对比 优点 将所有的代码都放在一个项目中,这样研发团队的任何一个人都可以随时修改任意的一段代码,或者增加一些新的代码。这种方式对于一个...

Jayden的博客 802

软件架构设计】SOA/软件架构设计---面向服务的架构(SOA详细解释)

SOA 是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的方法。SOA 并不是一个新鲜事物,而只是面向对象模型的一种替代。虽然基于 SOA 的系统并不排除使用 OOD 来构建单个服务,但是其整体设计却是面向服务的。由于 SOA 考虑到了系统内的对象,所以虽然SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。SOA 系统原型的一个典型例子是 CORBA,它已经出现很长时间,其定义的概念与 SOA 相似。

DreamSun的博客 1812

面向服务架构(SOA)中的软件架构设计及软硬件解耦方法论

面向服务架构(SOA)中,软件架构设计和软硬件解耦是非常重要的概念。软件架构设计涉及到如何组织和设计系统的各个组件,以实现系统的可扩展性、可维护性和可重用性。而软硬件解耦是指将软件系统与硬件设备之间的依赖关系降到最低,实现系统的灵活性和可移植性。通过上述方法论,我们可以在SOA中实现良好的软件架构设计和软硬件解耦。这些方法可以提高系统的可扩展性、可维护性和可重用性,同时降低系统的耦合度,增加系统的灵活性和可移植性。请注意,以上示例代码仅为演示目的,实际实现可能需要根据具体的业务需求进行调整和扩展。

GbkMobile的博客 465

SOA/软件架构设计—面向服务的架构(SOA详细解释)「建议收藏」

soa架构, 面向服务的架构

这里是菠萝味菠萝啤的博客 953

软件架构风格>面向服务的架构【SOA

本题第二空选择C选项,其他选项的说法都是错误的。ESB的定义通常如下:企业服务总线是由中间件技术实现的支持面向服务架构的基础软件平台,支持异构环境中的服务以及基于消息和事件驱动模式的交互,并且具有适当的服务质量和可管理性。微服务SOA技术的一种变体,云计算是网络云服务的一种技术,Multi-Agent System多智能系统是人工智能技术的一种应用。,其思想是提供一种标准的软件底层架构,各种程序组件能够以服务单元的方式“插入”到该平台上运行,并且组件之间能够以标准的消息通信方式来进行交互。

huaqianzkh的专栏 124

软件架构原理与实战:面向服务架构(SOA)的现代应用

1.背景介绍 软件架构是计算机科学和信息技术领域中的一个关键概念,它描述了软件系统的组件、它们之间的关系以及它们如何协同工作来实现系统的功能。在过去的几十年里,软件架构发生了很大的变化,随着互联网的发展和云计算技术的出现,服务架构(Service-Oriented Architecture,SOA)成为了一种非常受欢迎的软件架构风格。 SOA是一种基于服务的架构,它将软件系统分解为多个可组合的...

AI天才研究院 902

软件架构风格】面向服务架构(SOA)及其微服务演进

摘要(150字) SOA微服务的核心在于通过契约化接口实现业务与技术的解耦。服务抽象层次遵循对象→构件→服务的递进关系,Web Service基于WSDL/SOAP三元模型实现动态绑定。微服务强调限界上下文与独立数据存储,其分布式事务通过Saga(补偿机制)或TCC(Try-Confirm-Cancel)模式保障最终一致性。架构演进从ESB(中心化协议转换)转向Service Mesh(去中心化Sidecar代理),体现从强一致到高可用的设计权衡。数学化表达(如服务粒度函数、TCC状态机)揭示了分布式系统

一个努力飞行的菜鸟 496
上一篇: 软件工程-从规划、需求(DFD数据流图),到设计、实现和测试
下一篇: 软件设计模式(23中设计模式)
敩科炼技堂
博客等级 码龄16年 7512粉丝 54原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敩科炼技堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值