`
freesoul
  • 浏览: 929 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

SOA大家谈-SOA的基本概念与企业应用集成

阅读更多
最近两年都在做与企业应用集成和SOA相关的一些工作,并且有一些心得和总结,但总觉得在一个小的范围内难以获得思维的碰撞,总是希望更多的人参与进来一起讨论,一起提高。
所以准备把我个人以前的一些总结和PPT拿出来,与大家一起谈谈SOA这个不算新但却十分活跃的话题。


该贴描述的是我自己两年前对SOA的理解,现在可能已经有所不同了,但是为了追寻思维的轨迹,并引起大家的话题,还是从基础的说起。
首先说说SOA的基本概念,然后重点讨论它的主要应用方向——企业级应用和集成应用问题,并把落脚点放到中小型的制造企业,尤其是典型的企业应用(可能有些朋友不了解,不过没关系,很容易理解)。


给别人或者师弟师妹们谈到“面向服务的架构”,我总会给他们解释什么是“架构”。我会回答:架构是一种风格。就像“架构”的英文单词来源于建筑一样,构建软件与建筑很类似。那么架构就是某种建筑所体现的风格,比如一说到“亭台楼阁”大家就联想到苏州园林,说到“教堂”可能想到哥特风格的建筑,这两者很容易区分,为什么呢?那就是因为他们具有迥异的“建筑风格”。所以SOA刚开始流行的时候,很多人就在强调,SOA与实现无关,它是一种新的软件思维方式,这就好比不同风格的建筑都可以用钢筋水泥做成一样。


框架应该是我们谈论最多的,什么Spring,Strust2,Seam或者.Net,那么这些框架与架构之间怎么区别呢?
我的理解是架构是一种软件的应用模式,而框架是一个实实在在的软件系统,并且框架是与实现和语言密切相关的
我们可以用某种框架去实现某种架构风格,而架构思想又指导框架的实现方式。典型就是SOA的思想催生了SCA、SDO等规范和实现。


理解架构之后,那么SOA的核心理念应该就是服务了。


这个是当初被Copy烂了的图,应该是SOA的雏形,但更加确切的说,它描述的是Web services应用的一种模式,因为目前SOA典型的实现方式仍然是Web services


Thomas Erl的那本经典的SOA著作中描述了服务的许多特性和之间的关系,而在我看来,对于中小型的企业应用,首要的问题应该是“服务的松散耦合性”,这是我个人最为看重的。和许多小公司开发人员一样,有过系统逻辑耦合紧密,用户需求的不断变化(我们戏称为变态需求)导致系统配置项不断增多用以应付不同的客户和不同的需求,最后结果确是改好一个BUG,引出十个BUG。所以我认为SOA让我们看到了松散耦合的希望(有希望总是好的)


除了单个的应用系统,已有系统和新系统的集成问题对于中小企业也日渐显现。比如一般企业都会有财务软件,后续为了办公规范上了OA,之后规模扩大,生产管理问题突出,引入了行业ERP,但这些系统如何融合,如何实现数据、流程等多方面的集成,就变得很困难。传统的有一些EAI产品,但是价格昂贵且负责,不适合小企业,SOA的出现也为应用集成开辟了新的方向。有人会说SOA也很复杂啊(像SAP的NetWeave),但正像SOA承诺的那样,渐进式的慢慢来,如果有一个简单易用的SOA集成平台满足特定行业的需求,将典型应用作为服务挂接上去,不是挺好吗?(本帖目的就和大家探讨如何构建自己的SOA平台,希望有经验的朋友发表看法)


比如一个典型的模具制造企业,规模不大,但是慢慢随着发展,管理系统和IT应用也会不少,也有需求将各个系统串起来,这就引导我们去思考简单、易用、廉价的集成平台的问题。


那么如何根据我们实际的需求去设计一个集成平台框架呢?架构思想这时就起到了关键的作用。相信很多朋友看到开源文档——Roy Thomas Fielding(REST架构创始人)的那篇经典的论文,它为我们思考架构提供了很好的思路。
这又使我联想到了“建筑”,可能第一种方法比较适合于设计创造性的建筑,比如鸟巢,第二种可能适合于实用性建筑,比如杭州湾跨海大桥。那么我们做软件的目的当然是为了满足客户需求,而不是炫耀自己的架构多么的优秀,自然会选择第二种方式去设计我们的架构。


从用户需求推导出系统约束,由约束来添加满足约束的架构方式或组件,最后由导出的架构风格指导我们选择一些已有的东西去搭建我们的架构实例。

以下就是一般制造型企业架构的推导过程(可能略显粗糙,主要只是表达这个过程)












好了!现在架构风格已经基本成形了。它与SOA风格不谋而合,应用系统的功能暴露为服务,服务无状态,因此和相互组合成新的流程(BPEL)和应用,状态管理由服务端拿到了客户端(广义的客户端),中间通过统一的数据格式来交换数据(XML)


咦!既然这样,是不是也可以利用一些开源的组件构建我们自己的SOA集成平台呢?上图就是一个简单的框架说明


那么各个核心组件之间的调用关系如何呢?上图描述了大致的过程。用Portal作为统一的用户界面,调用由ESB处理的各种数据消息(不管这些数据从何而来,去向何方),UDDI中存放着已有的服务,BPEL将需要的服务组合起来,形成流程,并发布为新的服务,注册到UDDI,ESB只需要根据配置找到对应的服务和业务规则,对XML文件进行传递、映射等等,这样数据不就集成了嘛,通过Portal也可以看到集成的效果了吗?虽然不够理想,但应该就是这样,呵呵


好了,有了大致框架,应该分析一下某些应用了。我们很清醒,小团队是做不出通用的产品的(要不SAP就倒闭了,呵呵),通用的产品中小企业也是买不起的,那么我们就应该重点放在SOA能解决什么具体问题。
比如CAD、CAE的集成问题,这些常用的软件通常需要与管理系统管理,但绝大部分企业就是Excel导出、导入来实现数据交互,我们就可以尝试用Web services通过SOA平台来实现无缝的集成。


好了,今天就写一些关于SOA和集成有关的感触,后续有时间将一点一点展开,希望大家来拍砖:)
  • 大小: 27.6 KB
  • 大小: 20 KB
  • 大小: 39.6 KB
  • 大小: 43.9 KB
  • 大小: 42.7 KB
  • 大小: 80 KB
  • 大小: 71.6 KB
  • 大小: 78.2 KB
  • 大小: 24.2 KB
  • 大小: 21.5 KB
  • 大小: 176.2 KB
  • 大小: 33.2 KB
  • 大小: 34.9 KB
  • 大小: 45.4 KB
  • 大小: 44.3 KB
  • 大小: 56.7 KB
  • 大小: 48.5 KB
  • 大小: 40.7 KB
  • 大小: 164.8 KB
分享到:
评论
7 楼 czx566 2008-12-09  
但我认为服务和业务还是有区别的

  第一操作的元素是不一样的,一个是数据,一个是服务
  第二编排和协同的定制者不一样,第一个是百分百的程序员,第二个有可能是实际业务人员!

 
6 楼 czx566 2008-12-09  
顶楼上的。

   其实业务 和 服务的关系
    有点像 服务于数据的关系

套用楼上的话,我也可以这么解释

在大多的场景下,服务 表现为 流程,是 数据的 编排和协同。

具体分为如下: 数据的构造(包括开发和组合), 数据的管理(包括 数据的注册和治理), 数据的编排(包括 数据的编排和编制)。

5 楼 hongsoft 2008-12-09  
我对  业务即服务 这句话不敢苟同。

在大多的场景下,业务 表现为 流程,是 服务的 编排和协同。

SOA是面向服务的,具体分为如下:服务的构造(包括开发和组合),服务的管理(包括服务的注册和治理),服务的编排(包括服务的编排和编制)。
4 楼 fjlyxx 2008-12-02  
boyingking 写道
拍砖,呵呵:

   "what is SOA"中讲到的概念“面向服务”,个人认为:业务即为服务,服务即为业务。在不同的架构中,业务有不同的标准,不同的体现,不同的定义,SOA中其以服务来标准化业务,体现业务。显然“用业务表达流程”的说法不太确切。面向对象将一切都体现为对象,面向服务,即是“一切皆为服务”。
 
    另外,其中一些图 描述的思想已经有些过时了,我想楼主的一些内容是06年前后的,现在已经发生了很大的变化。

   


不要忘记了SOA平台也可以提供自己的服务,因为SOA有自己的流程.业务不是服务,也许是业务和业务的协同才是SOA的服务.
3 楼 czx566 2008-11-21  
哦,楼上的,那些思想过时了,愿听其详
2 楼 boyingking 2008-11-12  
拍砖,呵呵:

   "what is SOA"中讲到的概念“面向服务”,个人认为:业务即为服务,服务即为业务。在不同的架构中,业务有不同的标准,不同的体现,不同的定义,SOA中其以服务来标准化业务,体现业务。显然“用业务表达流程”的说法不太确切。面向对象将一切都体现为对象,面向服务,即是“一切皆为服务”。
 
    另外,其中一些图 描述的思想已经有些过时了,我想楼主的一些内容是06年前后的,现在已经发生了很大的变化。

   
1 楼 czx566 2008-10-30  
好文章,不过约束4 与 约束5 之间的差异没感觉出来。

不过我认为
    在SOA方面,业内似乎更关注 如何去整合 原有的应用
返而在构建新的应用中如何遵循SOA的架构,却很少注意。。。。。

相关推荐

    SOA与企业应用集成

    【SOA与企业应用集成】 企业信息化建设的深化与规模化是现代企业发展的重要趋势。随着企业不断投入信息化建设,系统间的异构性成为阻碍规模化发展的关键问题。不同平台、数据库和开发语言的系统使得信息共享和协作变...

    Oracle-Soa-Suite-Datasheet.pdf

    - **应用场景**:实现企业和企业间的集成。 ##### 34. WSIF Bindings - **功能**:支持Web服务Internet Federation (WSIF) 绑定。 - **应用场景**:确保与标准Web服务的互操作性。 ##### 35. JDeveloper - **...

    SOA实践 -- 使用IoC和AOP重构SOA应用

    "SOA实践 -- 使用IoC和AOP重构SOA应用" 这个标题揭示了本文档将探讨面向服务架构(Service-Oriented Architecture, SOA)的实际运用,特别是在应用中如何利用控制反转(Inversion of Control, IoC)和面向切面编程...

    SOA实践---构建基于Java_Web服务和BPEL的企业级应用

    《SOA实践—构建基于JavaWeb服务和BPEL的企业级应用》共分8章,第1章对SOA基本概念和原则进行了讲解,第2章介绍《SOA实践—构建基于JavaWeb服务和BPEL的企业级应用》核心案例SOAgent,第3章和第4章讲述面向服务的...

    论SOA在企业集成架构设计中的应用.docx

    论 SOA 在企业集成架构设计中的应用 从胶凝砂砾石坝施工质量监控系统的开发经验出发,探讨了 SOA 在企业集成架构设计中的应用实践。SOA 作为一种粗粒度、松耦合的架构,具有松散耦合、粗粒度服务、标准化的接口、...

    需求分析--基于SOA架构的企业应用集成.pdf

    本文档主要探讨了基于SOA(Service-Oriented Architecture,面向服务的架构)的企业应用集成中的需求分析,以天津市电力公司2006年7月的项目为例,涵盖了系统概要、功能需求等多个方面。 1. 概要 概要部分通常是对...

    SOA-VS-微服务架构对比分析.docx

    微服务更适合快速迭代、小团队开发的互联网项目,而SOA则更适合大型企业级应用,需要处理复杂集成和流程管理的情况。随着技术的发展,两者并非互相排斥,而是可以相互借鉴,结合使用,以达到最佳的系统设计效果。

    SOA 技术白皮书--面向服务架构

    **核心理念**:SOA的核心在于构建一系列可重用的服务,这些服务可以通过网络进行交互,并且在需要时能够灵活地组合成新的应用程序或业务流程,从而提高企业的灵活性和响应能力。 **技术特点**: - **松耦合**:服务...

    基于SOA的K-means算法.rar_K._SOA_SOA ALGORITHM_means_算法

    总的来说,这个压缩包提供了一个研究和实践SOA与K-means算法集成的实例,对于理解和优化聚类算法,特别是在处理大规模、复杂数据集时,具有很高的参考价值。学习和分析这些代码可以帮助开发者或研究人员提升在机器...

    企业集成(SOA EAI ESB比较)

    企业集成(Enterprise Integration)是实现这一目标的关键技术之一,它涵盖了多种方法和技术手段,如服务导向架构(SOA)、企业应用集成(EAI)以及企业服务总线(ESB)。本文旨在澄清这些术语,并提供它们之间的...

    基于SOA企业应用集成框架研究与实现

    SOA架构 企业应用集成 分布式架构 面向服务的SOA架构

    Next Generation SOA A Real-World Guide to Modern Service-Oriented Computing.pdf

    - SOA实践的技术方向可能包括云服务的集成、大数据处理和物联网(IoT)的应用。 ### 下一代面向服务的IT企业 1. **构建下一代SOA基础设施** - 构建符合SOA原则的企业级IT基础设施是确保业务灵活性和IT效率的关键...

    SOA架构在企业业务集成中的应用与研究.pdf

    SOA架构在企业业务集成中的应用与研究.pdf

Global site tag (gtag.js) - Google Analytics