SOA与中间件、基础件的发展
应运而生的SOA
美国著名的IT市场研究和顾问咨询公司Gartner预测:到2006年,采用面向服务的企业级应用将占全球销售出的所有商业应用产品的80 以上到2008年,SOA将成为绝对主流的软件工程实践方法。近几年全球各大IT巨头纷纷推出自己的面向服务的应用平台,纷纷表示自己将全面支持SOA。仿佛一夜之间SOA成为炙手可热的软件开发方法。其实SOA并非刚刚出现的新名词,而是很早以前就有人提出了面向服务的概念,只是以前没有现在这么多人关注而已。随着软件开发方法的不断发展,随着企业级应用系统愈来愈复杂,使得SOA成为了应运而生的软件工程方法。
什么是SOA
SOA 是Service Oriented Architecture的缩写,代表了一种软件开发方法。其核心思想是由擅长软件开发的技术人员把一个个的业务功能包装成一个个标准的服务,精通商业流程的专家通过组合这些服务可以很容易的搭建功能完善的企业应用,或者重新组合这些服务成全新的应用以满足企业的不断变化的需求。这里只是给出了SOA简单的介绍后面将会详细的讲述SOA架构。
应用软件开发方法的演变
应用软件开发方法在短短的几十年中经历了一次又一次的进化,然而每一次的进化给人们带来的好处都是一样的,那就是提高生产效率、减低生产成本,因此给投资者带来更丰厚的回报。回首软件开发方法的进化历程有如下几次重大的过程:面向函数(面向过程)、面向对象、面向组件以及迎面而来的面向服务软件开发方法。每一种软件开发方法都解决了特定的问题,但同时又不得不面对新的问题,因此不断的催生新的方法和手段。面向过程和面向对象的软件开发方法大家都已很熟悉了,因此不用多说,下面着重看一看基于中间件和基础件的面向组件的软件架构方法。所谓中间件是相对于以前的客户端/服务器结构而提出的把商业业务逻辑抽象成一个个组件,然后把这些组件放在中间层的应用服务器上运行,由应用服务器负责各个组件所需要的事务和安全等基础服务、以及组件的管理和监控等等。IT技术人员都知道要开发事务和安全这一类的基础服务需要专业的系统级的程序员来完成,而不是普通的应用程序员就可以轻松搞定的事情,或者说开发和维护这一类的基础服务需要耗费大量的人力财力,然而幸运的是事务和安全等基础服务可以独立于业务组件,因此有了当今正流行的各种中间件和基础件产品。这些中间件产品专注于基础服务的开发和维护,而应用程序员可以专注于业务组件的开发,因此对于开发各种企业应用如ERP,BPM以及电子政务等等各种应用系统的软件公司只需要购买专业的中间件产品,不用自己费时费力的开发和维护中间件和基础件产品。
当今流行的中间件平台有:SUN公司领导的J2EE平台,微软主导的COM/DCOM平台以及OMG公司主导的CORBA平台。正如我们所看到的有这样三种主流的技术,因此应用软件公司在开发应用软件时不得不在其中做出选择。在他们选定了一种中间件技术之后,所有的软件组件都在这个选定的中间件平台上面搭建。也有的比较大的软件公司选择的了多个平台,比如说他的ERP基于.NET平台,而CRM基于J2EE平台。随着各种应用软件的不断开发,一个个“信息孤岛”也就被无形中建立了起来,然而应用软件也越来越复杂,应用软件的客户对应用软件的要求也越来越高,其中最为典型的技术上的要求是:要求集成各种应用软件,各种应用软件产品必须能够互连互通,各种应用软件产品之间可以共享信息,互 相之间可以共享某些功能模块,而不需要重复开发。这些要求成为了基于中间件的面向组件开发的软件开发技术的心头之痛。虽然各种EAI的产品可以缓解一下这个心头之痛,但还是无法从根本上解决问题。除此之外,基于中间件的开发的产品耦合度过高,导致无法适应不断变化的应用软件需求,因此基于中间件的面向服务的软件开发方法SOA成为了人们关注的焦点。因为可以互操作的特性是SOA的一个重要的基础功能之一。SOA要求把业务功能包装成标准的服务,所谓标准的服务是服务之间可以互相调用,服务的技术实现对于客户端来说是透明的。客户端不用关心服务是如何实现的,不管它是用什么编成语言来开发的。服务可以用JAVA来实现,也可以用Microsoft C#来开发。
因此可以用下图来表示应用软件开发方法的演变过程:面向过程、面向对象、面向组件、面向服务。
SOA的抽象模型
要理解实施SOA,首先要对SOA的架构有个认识,SOA架构分为四大功能模块:
开发服务
发布服务
查找服务
使用服务
服务提供者开发出各种各样的有用的服务,经过严格测试后把服务发布到公共的服务注册表上,服务请求者通过查找服务注册表获得所需要的服务,然后便可以使用所需要的服务了。
SOA架构可以抽象为如下的模型:
SOA的最佳实践
Web Services作为SOA的最佳实践具有如下特征:
标准
Web Services的规范包括SOAP、WSDL、UDDI、XML,以及其他一系列的标准,这些标准是每一个Web Services实现必须要实现的。目前绝大部分的Web Services产品都支持这些标准,尤其是各大国际IT巨头。
松散的耦合
互操作
每个Web Services产品之间的互操作在很大的程度上决定了Web Services的成败,因此国际组织WS-I为Web Services互操作制定了标准以及测试包。
基于中间件
Web Services的大部分产品都基于某个中间件产品,因此可以把遗留应用中的功能组件包装成服务。因而这在很大的程度上可以保证现有的投资不至于浪费。
APUSIC与SOA
金蝶中间件(APUSIC)作为专业的中间件公司一直专注于中间件产品的研发,其通过了Sun公司的J2EE国际认证的旗舰产品Apusic应用服务器在中国的中间件市场扮演了重要的角色。经过多年的实践,Apusic应用服务器已有广泛的用户,金蝶中间件公司不仅提供给用户高效稳定的中间件产品,而且培训用户如何正确的使用中间件产品,帮助客户对客户的应用进行架构设计,因此中间件公司对中间件的优势和局限性有深刻的体会,从而更加确认SOA对于构建将来的应用的重要性。为了更好的满足用户的需求金蝶中间件公司已在Apusic应用服务器3.0中集成了Web Services的功能,已经开始在实际应用中实施SOA。Apusic Web Services是完全基于国际标准来实现的,支持SOAP、WSDL、UDDI、JAX-RPC、SAAJ、JAXM、JAXP等等标准。在开发Web Services时Apusic一直非常注重与其他产品的交互,经过测试Apusic Web Services可以与Bea Weblogic和Microsoft .NET等产品的Web Services实现互操作。并且可以通过WS-I(www.ws-i.org)的WS Base Profile 1.0互操作性测试。
相关文章:

SOA与中间件、基础件的发展
应运而生的SOA 美国著名的IT市场研究和顾问咨询公司Gartner预测:到2006年,采用面向服务的企业级应用将占全球销售出的所有商业应用产品的80 以上到2008年,SOA将成为绝对主流的软件工程实践方法。近几年全球各大IT巨头纷纷推出自己的面向服务的应用平…...

渗透测试 | 目录扫描
0x00 免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担…...

基于Springboot的班级综合测评管理系统的设计与实现
摘要 随着互联网技术的高速发展,人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理,交易等,而且过程简单、快捷。同样的,在人们的工作生活中,也就需要…...
比较全的颜色RGB值对应表 8位 16位
实色效果英文名称R.G.B16色实色效果英文名称R.G.B16色Snow255 250 250#FFFAFAPaleTurquoise1187 255 255#BBFFFFGhostWhite248 248 255#F8F8FFPaleTurquoise2174 238 238#AEEEEEWhiteSmoke245 245 245#F5F5F5PaleTurquoise3150 205 205#96CDCDGainsboro220 220 220#DCDCDCPaleT…...
freertos使用基础
FreeRtos快速入门 一,基础知识1.工作方式简介(不深入介绍原理)2,移值3,什么是内存管理 二,API的作用跟使用方法1,创建任务 最近跟着韦东山老师学习 FreeRTOS ,记录下来加…...
Spring Boot引用外部JAR包和将自己的JAR包发布到本地Maven库
Spring Boot引用外部JAR包 Spring Boot 项目可以通过在项目中引入外部 JAR 包来增强功能。以下是使用Spring Boot引用外部JAR包的步骤: 将外部JAR包添加到项目中,可以通过直接将JAR包复制到项目目录下的“lib”目录中,或者使用Maven的方式添…...

微信小程序原生开发功能合集十二:编辑界面的实现
本章实现编辑界面的实现处理,包括各编辑组件的使用及添加数据保存数据流程的实现处理。 另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下: 1. CSDN课程: https://edu.csdn.net/course/…...

基于3D渲染和基于虚拟/增强现实的IIoT原理的数字孪生平台的方案论文阅读笔记
基于3D渲染和基于虚拟/增强现实的IIoT原理的数字孪生平台的方案论文阅读笔记 论文原文链接:https://ieeexplore.ieee.org/abstract/document/9039804 本笔记对部分要点进行了翻译和批注,原文和翻译可参考链接阅读,此处不进行完整翻译。 论文…...

腾讯云镜YunJing——Agent定时任务脚本分析
缘起 如果你有台腾讯云主机,会发现默认有个叫 YunJing 的进程。 把它kill掉后,发现一段时间又出现了 这是为什么捏? 分析定时任务配置文件 通过crontab定时任务目录, 会发现有个叫yunjing的配置文件。 */30 * * * * root /usr/local/qc…...

如何使用java编写差分进化算法
差分进化算法属于一种进化算法,以全局最优性、收敛速度快等特点,得到很多学者的关注,并将其扩展到参数优化、数值优化、工程优化、路径优化、机器学习等一系列研究中。 而差分进化算法的原理即过程又是什么呢? 一、什么是差分进…...

Enterprise:如何在 Elastic 企业搜索引擎中添加对更多语言的支持
作者:Ioana-Alina Tagirta Elastic App Search 中的引擎(engines)使你能够索引文档并提供开箱即用的可调搜索功能。 默认情况下,引擎支持预定义的语言列表。 如果你的语言不在该列表中,此博客将说明如何添加对其他语言…...

SqlServer数据库中文乱码问题解决方法
这个问题在网上找了很多资料都没找到真正解决问题的办法,最终去了官网,终于找到问题的答案了,整理出来做个记录。 问题描述: 项目中遇到一个问题,sqlserver中的数据是ok的,结果保存到mysql中是乱码&#…...
跨域的五种最常见解决方案
在开发Web应用程序时,一个常见的问题是如何处理跨域请求。跨域请求是指来自不同源的请求,这些请求可能会受到浏览器的限制而不能被正常处理。在这篇文章中,我们将探讨跨域请求的常见解决方案,并了解每种解决方案的优缺点。 一、J…...

作为一个C++新手,我感兴趣的C++开源项目
2023年4月30日,周日晚上。 昨天完成了一个C项目后,想再开始一个C项目,但不知道做什么,于是决定看看有什么好的C开源项目。 今晚在网上逛了一圈后,发现了好多有趣的C开源项目。 参考文章: GitHub Top 10 …...

杭州云降价只是敲锣
1. 陈年旧事 大约是2015年,某友商宣布存储免费,当时我们公司如临大敌,我也被拽过去开会。后来我们才发现……对方的套路是: 文件存储原始收费是一毛钱。文档存储免费的条件是,需要客户当月有一次下载文件的行为才能免费…...

RabbitMQ笔记
一、MQ与RabbitMQ概述 1. MQ简述 MQ(Message Queue)消息队列,是基础数据结构中 “先进先出” 的一种数据结构,也是在消息的传输过程中保存消息的容器(中间件),多用于分布式系统之间进行通信。 …...
【Latex】如何在表格中使用footnote
Latex table cell中是不支持\footnote的。 如果你在table中用\footnote,那么要么这个脚注根本不显示出来,要么就会出现计数出错等问题。总之非常麻烦。 解决策略 笔者在搜集大量资料后,也并没有找到一种“完美的”解决方案。我们只能用一些…...

设计师常用的素材网站有哪个推荐
即时设计资源社区聚集了许多优秀的创作者,分享了大量的优质资源。 目前,社区资源数量已达到10000,包含图标、插画、原型、设计作品等多个素材类别。这些优秀的设计作品降低了设计师思维的成本,成为设计师的宝藏材料网站。 即时设…...

jmeter常用的命令行参数有哪些?常用的jmeter命令行如何编写
目录:导读 引言 一、JMete执行方式 二、JMete非GUI运行优点 三、jmeter非GUI运行参数 四、jmeter非GUI运行命令 4.1非GUI基本命令格式: 4.2非GUI并生成html报告基本命令格式 结语 引言 你是否在使用JMeter进行负载测试时感到手忙脚乱࿱…...

APP渗透—查脱壳、反编译、重打包签名
APP渗透—查脱壳、反编译、重打包签名 1. 前言1.1. 其它 2. 安装工具2.1. 下载jadx工具2.1.1. 下载链接2.1.2. 执行文件 2.2. 下载apktool工具2.2.1. 下载链接2.2.2. 测试 2.3. 下载dex2jar工具2.3.1. 下载链接 3. 查壳脱壳3.1. 查壳3.1.1. 探探查壳3.1.2. 棋牌查壳 3.2. 脱壳3…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...

JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...

篇章一 论坛系统——前置知识
目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...