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

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

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

如果不控制,会出现多个系统之间存在多种交互方式: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. SQL SERVER 遇到Unable to find the requested .Net Framework Data Provider. It may not be installed. (System.Data)

    今天新装的SQLSERVER 2012 EXPRESS 用于客户端程序 安装完成后打开登陆SQLSERVER 一切正常 当查看表定义.视图结构时,弹出一下内容 Unable to find the r ...

  2. Linux 下添加普通用户,登陆并删除

    adduser 命令.LINUX创建用户的命令useradd -g test -d /home/test1 -s /etc/bash -m test1注解:-g 所属组 -d 家目录 -s 所用的SH ...

  3. IIS上的错误与解决方案

    1.未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序. 解决方案:在IIS上打开该网站应用程序池-->高级设置-->启动32位程序-->选True

  4. [C#]AccessUtils

    关键代码: using System; using System.Data; using System.Data.OleDb; namespace CSharpUtilHelpV2 { /// < ...

  5. 购买 CDRTools 2 正式版

    联系方式: Email:396390927@qq.com QQ: 396390927    QQ群: 26326434  组件价格: ¥50元/用户,免费更新: 此物为数字商品,并经过测试完全可用,谢 ...

  6. WPF ListBox的DataTemplate例子

    <ListBox Name="lbLogInfo"> <ListBox.ItemTemplate> <DataTemplate> <Gri ...

  7. NodeJs环境部署

    node cli.js install npm -gf npm install express -gd

  8. butterknife7.0.1使用

    1.官网:http://jakewharton.github.io/butterknife/ Introduction Annotate fields with @Bind and a view ID ...

  9. 十八、mysql 内存优化 之 myisam

    .key_buffer 索引块大小 set global hot_cache.key_buffer_size = ; //设置大小 show variables like 'key_buffer_si ...

  10. IOS6开发环境环境配置

    IOS6开发环境环境配置http://www.wizzer.cn/?p=2438http://diybbs.zol.com.cn/1/34037_629.htmlhttp://diybbs.zol.c ...