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

SOA是什么

一、SOA是什么
 
SOA的全称是Service-Oriented Architecture,面向服务架构。是一种架构,不是一种具体的开发技术。
 
要真正理解什么是SOA需要从软件开发的技术发展史谈起。
 
真正的软件开发从开始到现在经历了四个阶段,也可以说成是四代:
1、汇编语言开发
2、面向过程的软件
3、面向对象的组件开发
4、面向服务的架构开发,也是今天要谈论的SOA架构
 
SOA与前面三代的软件开发技术对比,不同点是SOA超越了软件开发语言本身。是一种面向服务的架构,与软件开发语言无关。
 
但就软件开发本身来说,SOA是一种技术,又超越了所有具体的技术。
 
二、SOA的技术革命
 
SOA既然能成为第四代软件开发技术,究竟带来什么革命。
 
首先,SOA是一种开发思想。是一种松耦合的框架。可以让软件超越开发语言。
 
其次,SOA的开发需要SOA体系的支撑,就像J2EE应用一样,离不开应用服务器。SOA也一样,也有一个类似J2EE服务器的东西支持着整个SOA体系架构----ESB( 
Enterprise Service Bus),企业服务总线。通过这个总线,将多个系统连接起来。
 
其次,SOA是基于消息请求响应的一个系统,对请求类型有高度的兼容性。与一个Web应用容器相比,web应用容器只能处理HTTP请求,而 SOA的ESB可以接受HTTP、FTP、WebService、JMS...等请求。这就使得SOA架构具有高度的兼容性,可以将不同的平台集成到一起,从而相互协调工作。
 
三、SOA火起来的真正原因
 
1、软件开发技术的不断提高。
 
2、硬件性能的提升,价格下降,投出SOA所消耗的成本为企业所能忍受。
 
3、SOA受到了IMB、Oracle、Sun、Microsoft等大公司的热力追捧,被捧红了,实际上,一直以来都是这些公司在引领软件应用的潮流。
 
4、SOA技术革命每年有上千亿美元的市场价值。软件要升级,这些服务提供商才可以买出更多的中间件服务器,卖出更多的硬件,赚取更多利润。
 
5、很多企业的软件应用系统已经满足不了信息高度集成化的要求,为了提高企业的核心竞争力,企业不惜重金,上SOA。
 
6、SOA的招牌很响亮,超越了一切,兼容了一切。它不摒弃旧系统,而是将很多旧系统继承起来,就可以实现。-----实际上,我个人认为这是一个骗局。
 
四、SOA最有前景的舞台
 
1、基于SOA是的思想和技术,SOA最适合最擅长的就是系统集成。而系统集成的关键就是提取公共的有价值的服务。各个系统通过暴露服务,经过ESB这条总线连接后,就将几个系统集成起来了。这在新一代软件开发中也许会得到应用。
 
2、SOA的架构注定SOA在中小企业内部没有多大价值。中小企业的摊子还不够大。
 
3、SOA系统集成难点在于抽取公共的服务。对于老的系统来说,抽取服务就是抽筋。很难很难,意味着要修改软件,要适合SOA的胃口。因此,对一些不同语言开发的系统来说,使用SOA进行系统实际上是扯淡。
 
五、SOA发展现状
 
对SOA口号叫的最响的是IBM,出书最多的也是IBM,成功的案例还没看到。所有的大公司都在忽悠,希望拿到第一笔大单。
 
SOA以来ESB,ESB本身也是一种中间件,或者说是一个增强了的企业应用服务器。目前开源的有几个,也没见过成功的案例。估计SOA技术从起步到成熟还有很长一段路要走。ESB的实现还需要一个发展过程。
 
相反与SOA有紧密联系WebService技术已经深入人心。现在用的比较多。

(转)


本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/31/1923306.html,如需转载请自行联系原作者


相关文章:

  • Apache HttpCore (理解IO基础)
  • 启动eclipse时出现“Failed to load the JNI shared library jvm.dll”错误及解决
  • 软件项目技术点(3)——多画布职责分离
  • 浅尝springboot中的Actuator包(一)
  • 【使用教程】论Windows下必备的抓包工具Fiddler2如何安装证书(查看Https)
  • RPC学习
  • js动画(三)
  • Django admin 自定制
  • B4X 大疆 dji开发
  • 微软Azure首席架构师John Gossman就微软加入Linux基金会一事答疑
  • mysql5.5以上my.ini中设置字符集
  • Codeforces 758A Holiday Of Equality
  • redhat配置caffe
  • CCF201312-1 出现次数最多的数(100分)
  • 如何在Flutter工程中添加Android AAR文件
  • 【译】JS基础算法脚本:字符串结尾
  • Google 是如何开发 Web 框架的
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • CentOS 7 防火墙操作
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • JAVA SE 6 GC调优笔记
  • javascript 哈希表
  • jQuery(一)
  • Js基础知识(一) - 变量
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • SpriteKit 技巧之添加背景图片
  • windows下mongoDB的环境配置
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • Yii源码解读-服务定位器(Service Locator)
  • Zsh 开发指南(第十四篇 文件读写)
  • 大主子表关联的性能优化方法
  • 对超线程几个不同角度的解释
  • 分布式熔断降级平台aegis
  • 高性能JavaScript阅读简记(三)
  • 构建二叉树进行数值数组的去重及优化
  • 记录一下第一次使用npm
  • 使用Swoole加速Laravel(正式环境中)
  • 原生Ajax
  • 从如何停掉 Promise 链说起
  • 湖北分布式智能数据采集方法有哪些?
  • ​iOS安全加固方法及实现
  • #微信小程序:微信小程序常见的配置传值
  • (1)Android开发优化---------UI优化
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (floyd+补集) poj 3275
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (三)uboot源码分析
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (译) 函数式 JS #1:简介
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET Reactor简单使用教程
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net连接MySQL的方法