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

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

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

如果不控制,会出现多个系统之间存在多种交互方式: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. Cursor--游标

    游标--cursor['kɜːsə]   概念:                         在执行SQL语句时,Oracle服务器将分配一个内存区域,不仅存储这个语句,还存储语句的结果 — 称为 ...

  2. linux 常用软件安装-目录

    nginx apache php mysql oracle tomcat memcached mongodb sqlserver

  3. 使用FTP删不掉文件的解决方法

    今天在清理自己的服务器的时候发现曾经上传了一些png文件,中文命名的,权限是718,如果权限为777就可以删掉但是很奇怪的是执行权限修改也不行,改不掉: 最后的解决方法就是使用windows 随便打开 ...

  4. SQL Server数据库连接类SQLHelper.cs

    using System; using System.Collections.Generic; using System.Text; using System.Configuration; using ...

  5. [DevExpress]ChartControl之SeriesTemplate示例

    关键代码: using System; using System.Data; using System.Windows.Forms; using CSharpUtilHelpV2; using Dev ...

  6. php截取字符串的实例代码(支持utf-8)

    分享下php中截取字符串的例子,支持utf-8格式. 1,截取字符串 <?php $string="2006年4月我又长大了一岁!"; echo substr($string ...

  7. QT定制有标题的扁平化下拉框控件

    关键字:QT,QComboBox,QLineEdit,QListView,QPushButton,QMenu,QWidgetAction,setStyleSheet OS:Windows 7 方法一: ...

  8. 面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结

    基础篇:操作系统.计算机网络.设计模式 一:操作系统 1. 进程的有哪几种状态,状态转换图,及导致转换的事件. 2. 进程与线程的区别. 3. 进程通信的几种方式. 4. 线程同步几种方式.(一定要会 ...

  9. Android中获取应用程序(包)的大小-----PackageManager的使用(二)

    通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidMani ...

  10. 找不到 com.google.zxing.ResultMetadataType 异常解决

    在 https://github.com/zxing/zxing 下载二维码扫描 将 android 导入,code打成jar包运行时 报 06-14 23:43:08.690: E/AndroidR ...