每个系统上都有多种业务逻辑,这就像在一个小超市中,一个人负责收银、清洁、摆货、咨询等各种各样的事情,当来超市的顾客多到一定程度,这个人就没办法再负责这么多的事情了,系统也同样如此。

第一个现象就是系统多元化带来的问题,可采用对公用逻辑的部分进行抽象的方法,形成多个按领域划分的共用业务逻辑系统;第二个现象是系统访问量、数据量上涨后带来的典型问题,当超市的顾客不断增加时,通常超市采取分工的方式更好地服务顾客。同样,对系统而言,也会采取拆分系统的方式来解决。

在构建了共用业务逻辑系统拆分系统后,最明显的问题就是系统之间如何交互。

如果不控制,会出现多个系统之间存在多种交互方式:Http、TCP/IP+NIO、Hessian/RMI、WebService等;同步、异步等方式可能都会出现,这会导致开发人员每访问一个公用业务逻辑系统或拆分出来的系统后,都有可能要学习不同的交互方式;同时也会造成各开发团队重复造轮子,提供不同交互方式用的框架,这对于应用的性能、可用性而言,也带来了极大的挑战。

对于以上问题,很容易想到的解决方法就是统一交互的方式,SOA无疑是实现这种方式的首选。

SOA全称是:面向服务构架,它强调系统之间以标准的服务方式进行交互,各系统可采用不同的语言、不同的框架来实现,交互则全部通过服务的方式进行。

一、基于SCA实现SOA平台

SCA:Service Component Architecture.

发布服务: 服务遵照SOA以接口方式对外提供,发布服务首先要求系统本身已经有相应的接口实现。为了减少对系统实现的侵入,通过XML定义Component映射到系统奔上的接口实现上。在定义Component后,则可将Component实现的接口已服务的方式发布。

支持的通信和交互方式: SCA标准默认提供的通信方式为SCA、WebService和JMS三种。SCA方式是指由框架根据运行状况来选择采用相应的通信方式,例如框架发现需要调用的服务在同一JVM中,则会自动切换为本地调用,如在不同JVM中,则会采用WebService或JMS等方式;WebService的实现为Http方式:JMS则可用多种方式来实现,例如TCP/IP、HTTP等,这取决于具体的SCA框架。

二、基于ESB实现SOA平台

ESB只是一个概念,核心思想是基于消息中间件来实现系统间的交互。

基于消息中间件所构建的此系统交互的中间场所称为总线,系统间交互的数据格式采用统一的消息格式,由总线完成消息的转化、路由,发送到相应的目标应用,基于ESC构建的系统结构:

通常ESB框架须具备以下5个要素:

  1. 标准的消息通信格式

ESB框架中,要定义系统发送及接收消息时的消息格式,以便各个系统保持同样的方式与总线通信。

2. 消息路由

消息路由是指当总线接收到消息后,根据消息中的数据来决定需要调用的系统。

3. 支持多种的消息交互类型

消息交互时要支持请求/响应和发布/订阅等方式,请求/响应方式会更加方便实现同步请求,发布/订阅方式则更加方便实现异步的消息广播。

4.  支持多种网络协议

总线要和多个系统进行交互,通常要支持多种网络协议,例如:TCP/IP、UDP/IP、HTTP等

5.   支持多种数据格式并能够进行相互转换

多个系统均须发送消息至总线,并由总线将消息转发,但各个系统消息中的数据格式可能不一致,此时总线要支持数据的转换。

SOA基础的更多相关文章

  1. SpringCloud学习之soa基础

    一.soa简单介绍 1)面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.SOA是解决复杂业务模块,提高扩展性,维护性,可伸缩 ...

  2. 如何从零开始实现一个soa远程调用服务基础组件

    说起soa远程调用基础组件,最著名的莫过于淘宝的dubbo了,目前很多的大型互联网公司都有一套自己的远程服务调用分布式框架,或者是使用开源的(例如dubbo),或者是自己基于某种协议(例如hessia ...

  3. SOA 实现:服务设计原则

    http://www.ibm.com/developerworks/cn/webservices/ws-soa-design/ 引言 面向服务的体系结构(Service-Oriented Archit ...

  4. 论SOA架构的几种主要开发方式

    转: http://blog.csdn.net/chenleixing/article/details/44926955  面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络 ...

  5. ERP_Oracle Erp发展趋势基于SOA电子商务方案

    2014-01-12 Created By BaoXinjian

  6. 解决JDeveloper运行慢的设置/BPM/SOA Server JVM参数设定

    最近在使用 Jdeveloper 10.1.3.3 版本时发现速度奇慢无比,后经Google,发现如下解决方案:在 jdev.conf 文件的末尾加上如下两行,速度即可得到显着的提高, jdev.co ...

  7. 论SOA架构的几种主要开发方式【转】

           面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署.组合和使用.服务层是SOA的基础,可以直接被应用调用,从而有效控制系 ...

  8. 了解SOA是什么!

    面向服务架构 面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来 ...

  9. 浅析深究什么是SOA?(转)

    http://blog.vsharing.com/fengjicheng/A1059842.html 阅读提示: 本文探讨SOA概念背后的核心内涵,如何将SOA落地的实务方法. 金蝶中间件作为全球领先 ...

随机推荐

  1. oracle pl/sql的操作大全

    --删除该用户及下面的所有关联 DROP USER fspdrs CASCADE; --创建一个用户 create user fspdrs identified " default tabl ...

  2. 题目1444:More is better

    时间限制:3 秒 内存限制:100 兆 特殊判题:否 提交:1362 解决:640 题目描述: Mr Wang wants some boys to help him with a project. ...

  3. 2014年辛星完全解读Javascript第六节 对象

    随着面向对象的普及,现在很多语言都在支持面向对象,Javascript也不例外,所谓对象,就是拥有属性和方法的数据.这里的属性其实就是变量,这里的方法,其实就是函数.但是Javascript的面向对象 ...

  4. 百度地图 获取矩形point

    http://developer.baidu.com/map/jsdemo.htm#f0_7  鼠标绘制点线面 <!DOCTYPE html><html><head> ...

  5. 10个优秀的Objective-C和iOS开发在线视频教程

    如果你自己开发iOS应用,你肯定会发现网上有很多资源.学习编程的一个最好的方法就是自己写代码,而开始写代码的最快的方式就是看其他人怎么写.我们从海量视频和学习网站中整理出了我 如果你自己开发iOS应用 ...

  6. 关于搭建Android环境的时候遇到 'could not find adb.exe!'的问题

    关于'could not find adb.exe'的问题 问题原因: 文件所处位置和Android_home变量指路径不一致 文件路径: 解决方法: 直接将相关文件退拽至变量值的路径下即可 小结:a ...

  7. MongoDB的C#驱动基本使用

    转载:http://www.cnblogs.com/wilber2013/p/4175825.html MongoDB的官方C#驱动可以通过 这个链接 得到.链接提供了.msi和.zip两种方式获取驱 ...

  8. 相似元素存在的意义---HTML&CSS

    1.<q> 效果: 告诉浏览器这是一段短引用,让浏览器以合适的方法来显示 注: 不能直接以双引号直接代替<q>,因为有些浏览器<q>的效果不是双引号. 不要忘了移动 ...

  9. CQRS学习——Storage实现(EF+Code First+DynamicReponsitory)[其四]

    [这里是的实现,指的是针对各个数据访问框架的一个基础实现] 目标 定义仓储/QueryEntry的基本功能 实现仓储的基本功能,以利于复用 实现一些常用的功能 提供一些便利的功能 目标框架 博主使用的 ...

  10. EF+lambda表达式 实现LIKE模糊查询

    s => s.XianWID.StartsWith(str) 匹配以str开头的 s => s.XianWID.EndsWith(str) 匹配以str结尾的 s => s.Xian ...