SOA构架介绍

1.SOA定义

SOA面向服务的架构是一种计算机环境设计、开发、部署和管理离散模型的方法,SOA中所有的功能都被定义成立独立的服务,所有的服务通过总线(ESB)或者流程管理连接。这种松耦合的结构使得服务器在交互的过程中无需考虑双方内部细节,以最小的代价整合已经存在的各种异结构。主要有3种抽象级别:操作、服务和业务流程

操作:通常会导致读、写、修改一个或多个持久性数据

服务:代表了操作的逻辑分组

业务流程:为了实行特定业务目标而执行的一组长期运行的动作或活动

2.SOA的特征

松耦合:松耦合旨在使用者和提供者在服务实现和用户如何使用服务方面隔离,基于服务接口的信息,信息接口能兼容更多中传输方式,基于消息可以采用同步和异步的传输。

粗粒度:选择正确的有效的粗粒度服务,有助于组合出新的业务流程和应用程序。

服务粒度:指的是服务所公开功能的范围,一般分为粗粒度和细粒度

粗粒度:能够提供高层业务逻辑的可用性服务

细粒度:能够提供少量的业务流程可用性的服务

标准化接口:SOA通过服务接口的标准化描述,使得该服务可以在任何异构平台和任何用户接口中使用。包括:传输协议、消息格式等。

3.服务构件和传统构件得区别:

(1).服务构件往往是粗粒度的,传统构件往往是细粒度居多

(2).服务构(SCA)件主要是使用标准化的接口描述语言接口,传统构件主要是具体的API形式

(3).服务构件的实现与具体的语言无关,传统构件需要绑定某种特殊的语言

4.SOA设计原则

  1. 明确定义接口
  2. 粗粒度
  3. 松耦合
  4. 自包含和模块化:服务封装了在业务层稳定,重复出现的活动和构件,实现服务的功能实体完全独立
  5. 互操行,兼容性,策略声明mian

5.面向服务的分析与设计SOAD

SOAD分为三层:

①基础设计层:采用了OOAD的思想,主要目标是能够进性快速而有效的设计、开发以及执行灵活且可扩展的底层服务构件

②体系结构层:采用EA的理论框架,以表示业务服务的逻辑构件为中心,并且集中于定义服务之间的接口和服务级协定

③业务层:采用了BPM规范

6.SOA关键技术

1.发现服务层:帮助客户端应用程序解析远程服务位置,UDDI规范描述了服务的概念提供标准接口,企业可以发布自己的服务提供其他企业查询和调用,也可以查询特定服务描述信息“一次注册到处服务”

2.描述服务层:为客户端应用程序提供正确地与远程服务交互的描述信息,WSDL为服务提供者提供以xml格式描述服务请求的标准格式,将网络服务描述为能够进行消息交换的通信端点集合。

3.编码格式层:为客户端和服务器之间提供一个标准的,独立与平台交换编码风格XML实现

4.传输协议层:提供网络通信协议(http,smip)

5.消息格式层:保证客户端应用程序和服务器端在格式设置上保持一致,通过SOAP实现,SOAP定义了服务请求者和提供者之间的消息传输规范

7.SOA实现方法

1.Web Service

服务提供者:

服务请求者:

服务注册中心:

2.服务注册表

3.企业服务总线ESB

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

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

相关文章

MATLAB--Number Manipulation II

例1.Problem 2193. Mysterious digits operation (easy) What is this digit operation? 0 -> 01 -> 9121 -> 944 -> 615 -> 51243 -> 7... 这是一个数字运算。具体规则如下: 0 变为 01 变为 9121 变为 944 变为 615 变为 51243 变为…

RocketMQ(一)

作用 1. 限流削峰 2. 异步解耦 组成 Producer:消息的发送者,生产者;举例:发件人 Consumer:消息接收者,消费者;举例:收件人 Broker:暂存和传输消息的通道&#xff1…

矩阵稀疏扫描 - 矩阵

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、Java代码五、测试用例提示 前言 本人最近再练习算法,所以会发布一些解题思路,希望大家多指教 一、题目描述 如果矩阵中的许多系数都为零,那么该矩阵就是稀…

Rust编程语言的特点及其适合做什么

Rust编程语言的特点 Rust是一门系统级编程语言,它有如下特点。 1. 类C的语言语法 Rust的具体语法和C/C类似,都是由花括号限定代码块,还有一样的控制流关键字,例如if、else、while和for。然而,也并非所有的C或者C关键…

Scratch四级:第07讲 编程数学02

第07讲 编程数学02 教练:老马的程序人生 微信:ProgrammingAssistant 博客:https://lsgogroup.blog.csdn.net/ 讲课目录 常考的数学问题项目制作:“求最大公约数”项目制作:“求最小公倍数”项目制作:“早餐…

RAG讲解

现有的LLM已经具备了理解、生成、逻辑和记忆能力,RAG(Retrieval Augmented Generation)则是为其套上外挂,使LLM能够访问训练数据来源之外的权威知识库,并生成领域特定的内容,而无须重新训练模型。 RAG的优势 经济高效&#xff1a…

Meilisearch使用过程趟过的坑

Elasticsearch 做为老牌搜索引擎,功能基本满足,但复杂,重量级,适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需求,极快,单文件,超轻量。 所以,对于中小型项目来说…

opencompass实践

参考教程 https://github.com/InternLM/Tutorial/blob/camp2/opencompass/readme.md 下载opencompass,配置必要的环境之后,解压下载的数据集 cp /share/temp/datasets/OpenCompassData-core-20231110.zip /root/opencompass/ unzip OpenCompassData-co…

如何远程操作服务器中的Python编译器并将运行结果返回到Pycharm

文章目录 一、前期准备1. 检查IDE版本是否支持2. 服务器需要开通SSH服务 二、Pycharm本地链接服务器测试1. 配置服务器python解释器 三、使用内网穿透实现异地链接服务器开发1. 服务器安装Cpolar2. 创建远程连接公网地址 四、使用固定TCP地址远程开发 本文主要介绍如何使用Pych…

RPA正常跑,cmd输入cookies跑不出来,如何解决??

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

Python从0到POC编写--模块(三)

base64模块: base64模块是用来对字符进行base64编码解码 这个大家应该都比较熟悉了。 常用的两个方法有 b64encode 和 b64decode b64encode 进行base64编码 编码: >>> import base64 >>> string hello world >>> r ba…

SQL-递归查询

运行环境: Mysql8以上,递归查询功能在8以上版本被正式引入 一、SQL递归查询的概念 递归指的是通过调用函数或过程或自身来解决问题的方法,常用于一些具有规律性循环的操作。SQL递归查询是基于一组初始数据,通过递归查询&#xf…

Java 中正则表达式简介与应用

1. 正则表达式简介 正则表达式(Regular Expression,简称RE)是一种用来描述字符串规则的语言,它可以用来匹配、查找和替换字符串。正则表达式在各种编程语言中都得到了广泛的应用,例如: 文本编辑器&#x…

Spring-全面详解

Spring,就像是软件开发界的一个超级英雄,它让编写Java程序变得更简单、更灵活。想象一下,如果你要盖一栋大楼,Spring就是那个提供各种工具、框架和最佳实践的建筑大师,帮助你高效、优雅地搭建起整个项目。 Spring是啥&…

机器人系统ros2-开发实践06-将静态坐标系广播到 tf2(Python)-定义机器人底座与其传感器或非移动部件之间的关系

发布静态变换对于定义机器人底座与其传感器或非移动部件之间的关系非常有用。例如,最容易推断激光扫描仪中心框架中的激光扫描测量结果。 1. 创建包 首先,我们将创建一个用于本教程和后续教程的包。调用的包learning_tf2_py将依赖于geometry_msgs、pyth…

【机器学习】集成学习在信用评分领域实例

集成学习在信用评分领域的应用与实践 一、引言二、集成学习的概念与原理三、集成学习在信用评分中的应用实例四、总结与展望 一、引言 在当今金融数字化快速发展的时代,信用评分成为银行、金融机构等评估个人或企业信用风险的重要工具。然而,单一的信用评…

代码随想录算法训练营第五十天

十分后悔昨天没有把题写完再去玩&#xff0c;今天要受苦啦。 309.最佳买卖股票时机含冷冻期 class Solution { public:int maxProfit(vector<int>& prices) {vector<vector<int>>dp(prices.size(),vector(4,0));dp[0][0] -prices[0]; //买入dp[0][1]…

Map、Set和Object的区别

Set ES6提供了新的数据结构Set&#xff0c;类似于数组&#xff0c;但成员值是唯一的&#xff0c;没有重复的值 Set本身是一个构造函数(要 new)&#xff0c;用来生成Set数据结构 Set 对象允许你储存任何类型的唯一值&#xff0c;无论是原始值或者是对象引用 每个值在 Set 中…

WebRTC 中的 ICE 实现

WebRTC 中的 ICE 实现 WebRTC 中的 ICE 实现Candidate 种类与优先级ICE 策略P2P 连接完全锥型 NATIP 限制锥型 NAT端口限制锥型 NAT对称型 NATNAT 类型检测如何进行 NAT 穿越 网络中继TURN 协议中转数据WebRTC 使用 TURN 协议STUN/TURN 服务器的安装与部署 WebRTC 中的 ICE 实现…

数据库原理及应用--事务

事务是一组操作的集合&#xff0c;是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 比较经典的事务:银行转账业务。 张三向李四转1000&#xff0c;这个时候&am…