当前位置: 首页 > news >正文

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进行负载测试时感到手忙脚乱&#xff1…...

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…...

【贪婪技术】

目录 知识框架No.1 贪婪技术一、问题引入二、基本思想三、问题实例:连续背包问题 No.2 最小生成树问题一、基本思想二、Prim算法1、主要思想和步骤2、算法效率 三、Kruskal算法1、主要思想和步骤 No.3 Dijkstra算法一、主要思想二、问题实例: No.4 哈夫曼…...

谈「效」风生 | 如何找到现有研发体系的「内耗问题」?

#第3期:如何找到现有研发体系的「内耗问题」?# 在上一期《谈到提升效能,我们应该如何下手?》我们聊到开始做研发效能的四个要点:评估现有流程、引入自动化工具、建立度量指标、持续改进。本期就围绕「评估现有研发体系…...

Linux第四章

文章目录 前言一、快捷键小技巧二、软件安装三、systemctl控制软件启动关闭四、软链接五、日期和时区六、ip地址和主机名七、配置linux固定ip地址八、网络请求和下载九、端口十、进程管理十一、主机状态监控十二、环境变量十三、linux文件的上传和下载十四、压缩和解压总结 前言…...

HCIA-RS实验-路由配置-静态路由缺省路由

在计算机网络中,路由器是实现数据包转发的重要设备。它通过查找路由表中的路由信息,将数据包从源地址转发到目标地址。而静态路由和缺省路由则是路由表中的两种重要信息,下面我们来详细了解一下它们的概念、特点和应用。 目录 简述 一、静态…...

Unity API详解——Quaternion类

Quaternion类又称四元数,由x、y、z和w这4个分量组成,属于struct类型。在Unity中,用Quaternion来存储和表示对象的旋转角度。Quaternion的变换比较复杂,对于GameObject一般的旋转及移动,可以用Transform中的相关方法实现…...

8个免费的PNG素材网站推荐

很多设计小白都不知道什么是PNG。事实上,PNG是一种支持透明度的图像格式。当你想在设计中将图像与背景或文本混合时,它就会派上用场。 如果你没有时间为你正在处理的设计创建透明的PNG图像,你也可以使用我收集的PNG素材网站,以便…...

ChatGPT技术原理 第二章:自然语言处理基础

目录 2.1 语言模型 2.3 词嵌入 2.4 注意力机制 2.5 生成式模型 2.1 语言模型...

国民技术N32G430开发笔记(8)- 内部Flash的读写操作

N32G430 内部Flash的读写操作 1、主存储区最大为 64KB,也称作主闪存存储器,包含 32 个 Page,用于用户程序的存放和运行,以及数 据存储。 每一页的大小为2K字节 2、IAP 升级我们将64K的flash分区如下: Boot 0x800000…...

JVM 基本知识

目录 前言 一、JVM 内存区域划分 1.1 程序计数器 1.2 栈 1.3 堆 1.4 方法区 二、 JVM 类加载机制 2.1 类加载需要经过的几个步骤 2.1.1 Loading - 加载 2.1.2 Linking - 连接 2.1.3 initialization(初始化) 小结 经典面试题 三、JVM 垃圾…...

【源码解析】流控框架Sentinel源码解析

Sentinel简介 Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。 主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 核心概念 资源 资源…...