SOA架构的理解

news2025/1/31 11:21:17

1. SOA概述

SOA(Service-Oriented Architecture,面向服务的架构)是一种在计算机环境中设计、开发、部署和管理离散模型的方法。SOA不是一种新鲜事物,它是在企业内部IT系统重复构建以及效率低下的背景下提出的。在SOA模型中,所有的功能都被定义成了独立的服务,所有的服务通过服务总线(ESB)或流程管理器来连接。这种松散耦合的结构使得能够以最小的代价整合已经存在的各种异构系统,当然,由于需要实现对各种异构系统的适配(通常使用ESB来完成不同系统之间的协议转换及数据格式转换),因此,其本身也会引入更多的复杂性。

一个典型的SOA结构如下图所示:

其中,对于其中的单个服务而言,其内部结构一般如下:

2. SOA设计原则:

 SOA的设计原则包括:

  • 明确的接口定义:接口需满足稳定、明确、封装性等要求。
  • 自包含与模块化:实现服务的功能实体是完全独立自主的,独立进行部署、版本控制、自我管理和恢复。
  • 粗粒度:服务数量不应太多,依靠消息交互而不是远程过程调用。
  • 松耦合:减少各个服务间的相互依赖和影响,各个服务的位置、实现技术、当前状态以及私有数据,对服务请求者不可见。
  • 互操作性、兼容性和策略声明。

3. SOA实现方法

SOA作为一种架构设计的概念和思想,需要借助具体的技术和方法来实现。目前SOA的主流实现方法包括:Web Service、服务注册表和企业服务总线。

3.1 Web Service

3.2 服务注册表

服务注册表(Service registry)提供一个策略执行点,在这个点上,服务可以在SOA中注册,从而可以被发现和使用。大多数商用服务注册产品支持服务注册、服务位置和服务绑定功能。

3.3 企业服务总线ESB

ESB(Enterprise Service Bus)将企业中各个不同的服务连接在一起。因为各个服务是异构的,没有统一的标准,各个异构系统对外提供的接口是各式各样的,SOA使用ESB来屏蔽异构系统对外提供的不同接口,以此来达到服务间高效的互联互通。

 4. SOA关键技术

与SOA紧密相关的技术主要有UDDI、WSDL、SOAP和REST等,这些技术都是以XML为基础发展而来的。

4.1 UDDI

 UDDI(Universal Description Discovery and Integration,统一描述、发现和集成)提供了一种服务发布、查找和定位的方法,是服务的信息注册规范,以便该服务被发现和使用,同时它也定义了一种编程接口。该技术规范主要包括数据模型、API和注册服务三部分。

4.2 WSDL

WSDL(Web Service Description Language,Web服务发现语言)是基于XML语法对服务进行描述的语言,包括服务实现定义和服务接口定义。服务实现定义描述服务提供者如何实现特定的服务接口,包含服务和端口描述。服务接口定义是一种抽象的、可重用的定义,行业标准组织可以使用这种抽象的定义来规定一些标准的服务类型,服务实现者可以根据这些标准定义来实现具体的服务。

4.3 SOAP

SOAP(Simple Object Acess Protocol,简单对象访问协议)定义了服务请求者和服务提供者之间的消息传输规范,该协议通过HTTP承载XML格式化的消息。通过SOAP,应用程序可以在网络中进行数据交换和远程过程调用(RPC)。SOAP主要包括封装、编码规则、RPC表示和绑定四个部分。

4.4 REST

REST(Representational State Transfer,表达性状态转移)是一种针对Web服务的设计和开发方式,通常使用HTTP、XML、URI和HTML等流行协议或标准,可以有效降低开发的复杂性,提高系统的可伸缩性。REST对信息的操作基本只支持POST、GET、PUT和DELETE,这些操作基于如下的设计理念:

  • 网络上的所有事物都被抽象为资源;
  • 每个资源对应一个唯一的资源标识;
  • 通过通用的连接件接口对资源进行操作;
  • 对资源的各种操作不会改变资源标识;
  • 所有操作都是无状态的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nexus 3 清理docker镜像

该文章提供了一种清理nexus3中存储的docker镜像的一种新思路 查看docker repo 比如你的docker repo名字叫做test-repo,然后在nexus3首页的seatch下面找到docker,点进去随便查看一个已经上传的镜像 记住上面的Name选项,之后要用到 设定清理…

centos7 oracle19c安装||新建用户|| ORA-01012: not logged on

总共分三步 1.下载安装包:里面有一份详细的安装教程 链接:https://pan.baidu.com/s/1Of2a72pNLZ-DDIWKrTQfLw?pwd8NAx 提取码:8NAx 2.安装后,执行初始化:时间较长 /etc/init.d/oracledb_ORCLCDB-19c configure 3.配置环境变量,不配置环境变量,sq…

【Linux快速入门】文件目录操作

文章目录概念1. Linux文件系统概述2. Linux文件目录结构3. Linux文件和目录操作3.1 文件操作3.1.1 创建文件3.1.2 复制文件3.1.3 移动文件3.1.4 删除文件3.1.5 查看文件3.1.6 输出指令3.1.7 >和>>指令3.2 目录操作3.2.1 创建目录3.2.2 复制目录3.2.3 移动目录3.2.4 删…

Lesson 8.3 ID3、C4.5 决策树的建模流程 Lesson 8.4 CART 回归树的建模流程与 sklearn 参数详解

文章目录一、ID3 决策树的基本建模流程二、C4.5 决策树的基本建模流程1. 信息值(information value)2. C4.5 的连续变量处理方法三、CART 回归树的基本建模流程1. 数据准备2. 生成备选规则3. 挑选规则4. 进行多轮迭代5. 回归树的预测过程四、CART 回归树…

关于推荐系统的详细介绍

简介推荐系统是一种信息过滤系统,能够自动预测用户对特定产品或服务的偏好,并向其提供个性化的推荐。它通常基于用户的历史行为、个人喜好、兴趣和偏好等,通过数据挖掘和机器学习算法,在大数据的支持下生成个性化的推荐内容&#…

智云通CRM:与权力者沟通的策略有哪些?

权力者通常具备两个特点:忙和目标导向 1.忙 权力者都很忙(不忙也会装出很忙的样子),时间精力有限,销售人员眼里的大项目在权力者看来很有可能只是他诸多工作中的一项。因此,即使有不满者的引荐,…

ChatGPT露馅了,它明明就是人

让人工智能理解句子成分和语义,这看起来是件不可能的事,看过流浪地球的都知道,那里面的人工智能哪怕发展到2057年,也听不懂比喻和反问。 那最近大火的chatGPT能不能听懂冷笑话呢?它不仅能写代码、论文,居然…

Spring学习——拦截器

拦截器概念 拦截器(Interceptor )是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行作用: 在指定的方法调用前后执行预先设定的代码阻止原始方法的执行 拦截器与过滤器区别 归属不同:Filter属于Servlet技术&#xff0…

[oeasy]python0101_尾声_PC_wintel_8080_诸神的黄昏_arm_riscv

尾声 回忆上次内容 回顾了 ibm 使用开放架构 用 pc兼容机 战胜了 dec 小型机apple 个人电脑 触击牺牲打 也破掉了 自己 软硬一体全自主的 金身 借助了 各种 软硬件厂商的 力量 最终完成了 pc架构上 的 大一统 操作系统层面 IBM 计划让 msdos和cp/m 分庭抗礼为什么 最后微软…

NC xml配置文件不能生产java文件

在NC开发过程中,新增、或修改了xml文件,在开发工具eclipse中生成或重新生成Java文件,发现生成不了相对应的Java文件。如下图,选中xml文件后,右键点击SpringXml to Java 这种情况其实一般都是xml配置文件有问题&#…

敏捷项目管理的概念,以及与传统项目管理的区别

较之瀑布等传统项目管理模式,敏捷是“适应性的”,而非“预设性的”。团队采用敏捷项目管理可以提高交付速度、协作效率、以及响应市场变化的能力。在这里向大家详细介绍敏捷项目管理的定义、与传统项目管理的区别,以及一些主流的敏捷项目框架…

下一代ERP系统是什么样的呢?什么是智能化ERP系统?AI能改变ERP系统吗?

下一代ERP系统是什么样的呢?什么是智能化ERP系统?AI能改变ERP系统吗?导读1. 用户体验:2. 作业、分析和智能一体化2.1 ERP之采购管理:2.2 ERP之零售商品管理:2.3 ERP之会计和财务管理3. 系统处理大数据导读 …

嵌入式Linux从入门到精通之第十六节:U-boot分析

简介 u-boot最初是由PPCBoot发展而来的,可以引导多种操作系统、支持多种架构的CPU,它对PowerPC系列处理器的支持最为完善,而操作系统则对Linux系统的支持最好目前已成为Armboot和PPCboot的替代品。 特点: 主要支持操作系统:Linux、NetBSD、 VxWorks、QNX、RTEMS、ARTOS、L…

Vue3分页器(Pagination)

自定义传入: 当前页数(current),默认为1每页条数(pageSize),默认为10只有一页时是否隐藏分页器(hideOnSinglePage),默认为false数据总数(total&a…

Java进阶(下篇2)

Java进阶(下篇2)一、IO流01.File类的使用1.1、File类的实例化1.2、File类的常用方法11.3、File类的常用方法21.4、课后练习02、IO流原理及流的分类2.1、IO流原理2.2、流的分类2.3、IO 流体系03、节点流(或文件流)3.1、FileReader读入数据的基本操作3.2、…

Linux应用学习——多线程

多线程 PART1——线程相关概念 ​ 线程时参与系统调度的最小单位。被包含在进程之中,是进程中的实际运行单位。一个进程可以创建多个线程,多个线程实现并发运行,每个线程执行不同的任务。 线程时最基本的运行单位,而进程不能运行…

顺序表——“数据结构与算法”

各位CSDN的uu们你们好呀,今天小雅兰的内容是数据结构与算法里面的顺序表啦,在我看来,数据结构总体上是一个抽象的东西,关键还是要多写代码,下面,就让我们进入顺序表的世界吧 线性表 顺序表 线性表 线性表&…

为什么要用VR全景?5个答案告诉你

看中了刚上市的一款新车,再也不用等车展、去4s店才能仔细观赏,点开手机就能“置身”车内近距离观看每一处细节,点击关灯开灯、关门关门,除了摸不到,和在现场几乎没有区别; 准备买房的时候,没人愿…

Git 基础(一)—— Git 的安装及其配置

目录 一、Git 的下载与安装 1、Linux 环境 2、Windows 环境 (1) 下载 Git 安装包 (2) 安装 Git 二、Git 配置 1、配置用户信息 2、查看配置信息 3、Windows 环境下配置文件的位置 一、Git 的下载与安装 1、Linux 环境 在保证网络环境畅通的情况下,直接输…

L298N 直流电机驱动模块与 Arduino

L298N 直流电机驱动模块与 Arduino 原文地址 L298N 电机驱动器可以控制两个直流电机的速度和旋转方向。 此外,它还可以控制双极步进电机,例如NEMA 17。如果您想了解更多信息,请查看本教程。 L298N电机驱动器和Arduino控制步进电机&#xff…