胡长城(银狐999)BLOG

专注SOA,MDA,EAI,BPM,工作流,J2EE;个人主页http://www.javafox.org

胡长城ID:james999
549088次访问,排名71好友0人,关注者48
J2EE,Workflow,BPM,EAI,SOA,工作流
james999的文章
原创 185 篇
翻译 0 篇
转载 2 篇
评论 620 篇
银狐999的公告
个人主要工作流文档可从 javafox live网络硬盘下载

最近评论
shendl:胡兄现在在国内公司吗? 什么公司,什么Workflow产品吗?
subarasiyi:不知道楼主是否听说过Interstage BPM?
这个在Gartner的评价中也是非常高的
friendoyc:这个可能是自动回复,不是Layna Fischer回答你的问题。
friendoyc:可以在b节点处加个判断条件,如果b成立则a-c-b-d,如果b不成立则a-c-d
friendoyc:可以在b节点处加个判断条件,如果b成立则a-c-b-d,如果b不成立则a-c-d
文章分类
收藏
    相册
    50 Relational Blogs
    Hongsoft博客
    J2EE与ERP禅话
    Peter's Blog
    俠盜躶奔漢
    切尔斯基(RSS)
    动物园的猪
    胡奇
    赵斌BLog
    阿飞外传
    55 Workflow Preacher
    Ekkart Kindler
    Michael zur Muehlen
    Wil van der Aalst
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 我对SOA的反思:SOA架构的本质收藏

    新一篇: 《SOA中国路线图》可圈可点之处 | 旧一篇: 参加“SOA产业链及企业软件趋势研讨会”的感想

     
           年初的时候,写过一篇名为“国内EAI正当时,BPM为时尚早,Workflow持续增长,SOA依然概念”的Blog日志。那个时候,我认为SOA还依然是个很“虚”的概念。而现在,我只能说:Sorry,那时候的我,错了。SOA已经不再是概念,而是一个实实在在的构架了。
     
           在写完那篇帖子之后,我一直在反思SOA到底是什么,是一种什么样的架构。因为在在TIBCO中国研发中心工作的原因,可以接触到TIBCO的一些最新的SOA产品。
     
           虽然了解到一些基于SOA构架的产品,但总觉得依然“隔着一层纸”,并不清楚什么才是真正的SOA架构。
           很多时候,我依然会认为SOA构架只是满足把应用暴露成Service(或者说是WebService),以SOAP等之类的消息进行信息的传输,以及基于Service之间的一些业务逻辑的整合应用(比如BPEL)等。
           我相信,这样的困惑,在国内很多中间件产品、应用产品中都存在,在很多国内的开发人员、架构师心中也存在。
     
           昨天,有幸参加了CSDN主办的“SOA产业链及未来企业软件趋势”研讨会,收获不小。参见昨天写的blog随感“参加“SOA产业链及企业软件趋势研讨会的感想”。经过那些专家们(毛新生、Tiger、李勇、梁耀文等)的解惑,对SOA是一种什么样的构架,有了一些更深刻的认识。
           但说真的,如果不是目前在TIBCO中国研发中心工作的经历,以及所接触到一些国外最新产品构架的巨变,仅凭昨天的听讲,也很难把握毛先生他们所说的那些SOA理念。
           具体昨天有哪些重要的理念就不在重复的叙述了,参看“参加“SOA产业链及企业软件趋势研讨会的感想”,里面有详细的叙述。
     
           今天只谈反思:SOA架构的本质
     
           刚刚看到一篇新闻,讲的是SAP代号为A1S的新产品软件设计方法,参见“新闻分析:解密代号A1S”。这和昨天研讨会上,SAP的李勇先生,所阐述的一些观点很类似:SAP的产品在往SOA架构迁移中,经历了三个大的步骤:第一步,提供更好的服务层面的容器或平台的支持;第二步,把业务抽象成服务,确切地说,是抽象业务对象(Business Object);第三步,把面向垂直或水平层面的各个产品,基于业务对象进行整合。
          
           事实上,这就包含了昨天各个专家所阐述的SOA架构的本质:一切围绕业务对象(Business Object)或业务模型(Business Model),至于“服务”,只是这些业务模型暴露出来的形式,因为以统一的服务形式暴露出来,更便于不同供应商和客户之间的信息交互
           在Gartner十年前提出SOA概念的时候(1996年),尚没有web service技术。SOA架构的本质,并不是说把你的应用或者组件包装成Service就是SOA,而是说,你需要基于一种构架,能够让你的产品能够更适应“业务敏捷性(Business Agility)”。但是这种业务敏捷性仅仅是一家提供商或产品是很难满足的,肯定需要各个不同的供应商协助完成,不同的产品之间能够比较容易的进行消息交互。这样的灵活度肯定不是传统的基于消息的EAI产品所能够满足的,需要一种新的协议或标准来支撑。—— 当Web Service诞生之后,所有的大厂商都发现这是一种非常符合他们需求的技术。
     
           但是服务的本质,是在后端能够提供一套“业务模型”。而制成这种业务模型或业务对象构建的技术,正好就是前几年所热炒的“模型驱动构架(Model-Driven-Architecture)”。事实上,现在各大厂商都在基于这个构架在转变自己的产品构架,BEA,IBM,TIBCO都在进行着这样的巨变。
     
           在回头想想我们常说的“SOA真理三角”:数据(Data)——组件架构(Component Architecture)——组合(Composition)。因为几乎所有的业务模型最终需要被“业务对象+业务组件”反映出来,而它们之间需要进行一系列的组合和交互,来满足业务的处理
           在SOA联盟组织的SDO和SCA标准,正是用于解决数据和组件模型描述的问题,这方面几乎所有的EAI厂商都加盟进来了,IBM、BEA、IONA、Oracle、SAP、Sybase、TIBCO、Software AG等等,这其中好包含国内的普元软件。
     

    发表于 @ 2007年05月12日 21:07:00|评论(loading...)|编辑

    新一篇: 《SOA中国路线图》可圈可点之处 | 旧一篇: 参加“SOA产业链及企业软件趋势研讨会”的感想

    评论

    #netpit 发表于2007-05-14 17:46:14  IP: 121.34.62.*
    业务构件=业务对象+业务组件
    业务流程=流程+业务构件+人
    #hanzi 发表于2007-05-15 09:04:45  IP: 218.56.61.*
    还是不太明白。
    soa是为了满足业务敏捷性,那么它的表现形式是什么?是web services吗?它是基于业务对象、业务模型的,那么它在原来的模型驱动开发的理论上有什么创新?
    #onemonth 发表于2007-05-15 09:11:29  IP: 222.183.17.*
    一看SOA的内容就应该知道,它不过就是明确提出计算机只是个手段而已,需要写N篇牛叉标题党心得blog,反思这么久才明白吗?看来玩概念还是得看中国人啊。
    #netpit 发表于2007-05-15 12:28:44  IP: 121.34.62.*
    服务不一定就是web services,中国软件业这么多年被外国大公司的概念玩的快死掉了.

    人家老美,10几年前DOS下的系统现在还在用呢?

    低水平的重复开发,只是为了适应新的操作系统.

    而业务的把握上,越做越差. 技术先进(国外大厂商宣传的先进)了,对业务的支持力度反而下降了.

    中国的软件于是做不出满足本土用户满意的产品,而是不断地用所谓先进的工作和理念制造出一个个地软件垃圾.
    #james999 发表于2007-05-15 13:04:46  IP: 124.42.38.*
    to onemonth:
    其实所有的新概念,新技术,新标准,都是人们在探索如何更好的解决IT系统的应用性、服务性所作出的努力。SOA已经不仅仅是是概念了,web service,soap,wsdl,webserive-policy,sca,sdo,esb等等标准技术,都是在一步步的完善和探索。
    #软件业的流氓 发表于2007-05-16 09:39:12  IP: 60.208.111.*
    当你去一个按摩店做按摩的时候,你选择了一个常规的保健服务,在服务过程中,你某一方面的欲望被激起,希望提供更特别的服务,跟不上趟的按摩店的按摩技师会告诉你,先生我们不提供这种服务,没有这个环节;随需应变的按摩店的技师会告诉你,先生我再帮你叫一个愿意提供特服的技师过来,如果这个店里面没有,老板甚至可以帮你从别的店里面调特服技师过来,等你爽完了之后,原先的按摩技师继续给你提供常规的保健服务。
    基于人提供的服务流程是铁板一块?还是可以灵活组装的?这也是一种SOA。
    #SOA320 发表于2007-05-16 22:30:55  IP: 219.133.155.*
    哈哈,说得太有意思了.SOA中的概念实在太多了,让人有时都搞不清方向,过于复杂的东西很难让人接受,谁会有兴趣去处学习另一个Corba呢? 也许SOA需要经过很长的一段时间才被人接受,当然能够了解SOA的全面那肯定是个天才了, 哈哈,
    不过这样的人肯定很难找的.




    #swkr 发表于2007-06-03 15:34:55  IP: 124.147.153.*
    SOA早已不是概念,
    SOA设计时在考虑完整性和扩展性的同时,
    同样要注重安全性。

    http://www.netfetch.cn/netfetch/article.asp?id=942
    #xiaoshubj 发表于2007-07-04 17:40:22  IP: 203.222.183.*
    你终于明白SOA的现状和TIBCO公司的核心战略方向了.阿门
    #james999 发表于2007-07-05 17:29:47  IP: 124.42.38.*
    to xiaoshubj:有时间聚聚,好好聊聊。
    #xiaoshubj 发表于2007-07-11 14:07:41  IP: 203.222.183.*
    这个烂论坛.老是不能发布评论.登录半天才进来.
    TO James999,没准我们见过面.你前段时间去北京银行做POC了么?
    #james999 发表于2007-07-11 22:26:51  IP: 125.33.87.*
    to xiaoshubj:俺没有去做POC,这是PSG团队的事情。我是研发团队。不过我和PSG团队很熟,所以很多情况知道的不少。
    #hared 发表于2007-08-06 14:26:59  IP: 207.46.55.*
    看大家老是在说什么业务敏捷,OK,什么是业务?业务敏捷是什么意思?业务敏捷与SOA之间有必然的关系吗?
    既然SOA只是一种计算机的系统实现方式而已,那么,这个业务怎样被模型化,形成对象?

    有一些东西,想当然是不可以的。
    #james999 发表于2007-08-06 17:15:18  IP: 124.42.38.*
    to:hared:
    这个问题非常棒。我们可以做个简单的推理:首先应该都不否认当然企业的业务敏捷度很大程度上来自于其信息化成都的高低吧。再其次,当信息化逐渐复杂的以后,一个企业的信息数据和处理必然会涉及到内部的多的信息系统,也会涉及到外部Parter的信息系统,所以必然需要一种技术构架来解决“互通互联”的问题。另一方面问题,也就你所说的:业务如何被模型化,这个是逐渐发展的Model Driven Architecture所追求的,当然,目前模型驱动在各家实现中会有一定自己的诠释,但是这个一个大方向。
    ———— SOA不是一个万能药,其是现阶段各个厂商为了解决客户此类问题所提供的一种构架方案和思路。面对SOA,事实上有很多实现手段,但基本上都是围绕这个两个基本问题引申的。——(银狐999)
    #hared 发表于2007-08-07 10:08:28  IP: 207.46.55.*
    to james999:
    我明白你的意思,但是我想你没有明白我的意思;
    方法人人都有一套,可是做出什么东西就不知道了,既然提了这么多的概念,那么一个前提:定义这些概念的内涵和外延;这个是大前提,为什么,因为我们一再的说SOA可以支持业务的敏捷,可是如果连业务是什么,业务敏捷的范围都不知道,如何可以确定SOA的边界和内容,该不会是说我这个架构因为这样,不管你的业务如何变化,我都可以支持,可是拜托,这种糊弄小孩的话也说得出来,如果这样,还要搞这些方法论干嘛?
    至于你提到的“首先应该都不否认当然企业的业务敏捷度很大程度上来自于其信息化成都的高低吧”,如果能能够回到我前面的问题,这句话你的问题我想应该是很清楚的。

    hared.
    #james999 发表于2007-08-07 13:07:17  IP: 124.42.38.*
    to hared:
    我说说对你的看法的理解,你看看是否符合你的初衷。我想你的意思是“应该把重点放在业务构建”上。如果要说“业务系统”比较典范的一个企业和产品,就是SAP了,从R/3到如今的NetWeaver,业务一直是其核心。但是即使曾经的R/3已经做的很强“可配置的模块化”,并且将ARIS/EPC模式应用到极致的情况,但在新一代产品构架中,SAP依然在突出两点构架:MDA和SOA。—— 为什么会这样的,因为SAP也在寻找新的机构构架来和模式来解决“业务构建”问题,也在寻早新的构架解决“互通互联”问题。
    —— 一个完整的产品,需要完善的“方法论”“参考模型”“解决方案”“技术实现”等等多方面的融合,而SOA在这里面,也只是一部分内容而已。
    —— 不否认,目前我们确实把“SOA”的作用扩大化了,毕竟很多情况下这是“厂商宣传”的策略,但是从一种解决方案解决来说,SOA也的为大家提供了一套参考构架和新设计思想。但是,至于企业能够领悟多少,能够做的多深,那就是“诸侯争霸”了。
    #hared 发表于2007-08-07 15:24:03  IP: 207.46.55.*
    to james999:
    这个我的思路可能还是和你的不同,如果你能够做到在谈SOA的时候,把SOA或者其它的类似的东西抛开,是否能够定义出这些需求的边界?
    MDA也好,SOA也好,在我的观点,这些已经是一个结果,或者是一种理念的实现,可是问题是,比如队以MDA,我们知道要做模型,模型驱动,可是只是建立模型这样简单吗?
    还是一句话,业务系统:业务是什么?业务系统又是什么?
    很多东西,我们说的很顺口,可是是否真正理解它的含义?
    我的意思并不是“应该把重点放在业务构建”,而是理解和确定业务的内涵和外延,然后准确构建,再考虑用什么样的系统去实现这个业务需求。
    我们很多时候,不是不懂系统如何建,而是不知道系统建设的边界和尺度,根本原因,在于不能够清晰的表达出需求,就像清晰的定义出业务的含义一样。

    hared.
    #james999 发表于2007-08-07 21:21:21  IP: 125.33.72.*
    to hared:
    业务的确不容易表达,但这并不表示不可以“抽象”。只是对业务的抽象的好与坏,深与浅的问题。业务数据的存储可以抽象成“关系数据表的关系”,业务的逻辑处理可以通过一些“规则”来表达,业务的展现有“表单”表达。当然一个业务比上面说的要复杂很多很多,实现起来肯定需要多种技术支持,但是再复杂的业务也有“可抽象”的表示。—— 这就像编程语言,当不断编程以后,人们发现有“设计模式”可以帮助你抽象一些问题;再后来人们发现“分析模式”可以帮助抽象更业务化的问题。
    ——至于MDA,SOA,EDA等等构架方案,只是人们在解决一些问题之后,抽象出来了一种方式。
    ——如果你是从事某个行业/领域开发的,比如财务系统,抽象出来总是围绕:凭证、汇总、明细帐、总帐、报表。当然对于不同企业,这几个方面会有一些自己的特色和细化,但是如果你看到了一些共性,那么也就看到了“抽象”。
    ——没有任何人会说,上SOA就一定是业务敏捷的系统,业务信息系统能够支持敏捷的关键要素还是“如何解决你的业务表示问题”。但是仅仅解决了业务表示问题,这是不够的,我们需要更加灵活的表示(对了,这就需要对业务进行更深层次的抽象,那么MDA是不是可以给你一定参考的呢?)。你的业务还需要与别人的业务进行更加容易的沟通交互,那么传统的EAI肯定有所局限,那么SOA是不是也有一些可参考的价值呢?
    #hared 发表于2007-08-08 11:04:15  IP: 207.46.55.*
    to james999:

    很遗憾,我觉得你并没有理解我要表达的意思;我想我在前面的说法已经很清楚了,我的核心不是谈MDA,不是谈SOA,也不是谈抽象,但是正如你所说的“至于MDA,SOA,EDA等等构架方案,只是人们在解决一些问题之后,抽象出来了一种方式”,可是问题是,你理解这些问题是什么吗?更进一步,能够完整和准确的表述出这些问题吗?注意,这里我并没有任何有关抽象的内容,都是实实在在的东西。
    我这里还没有谈到任何与实现有关的任何东西,我一直在说得,恰恰就是如何去准确的分析和表述这些不同的问题,完整地理解,精确的描述,但是决不是抽象。
    我的前面说的很清楚:对于这些概念,我想人人都可以说出一些,单是核心的问题是你真的明白他们的准确含义吗?如果明白含义,那又包含什么样的准确内容?
    我一直在问的是这个东西是什么,可是你一直在回答的是可以用这种方法去做。
    #james999 发表于2007-08-08 12:42:05  IP: 124.42.38.*
    to hared:
    请问你如何去表述业务?是用doc的文档来一个字一个字的描述客户的业务呢,还是一行行code来实现。
    很明显,都两个东西都是需要的。
    你需要用“文字”来表述客户的业务,你页需要用“code”来实现业务在计算机上的运行。
    那么,当然用code来实现的时候,你总不会都是“if else”这样的一行行的代码吧。是的,你可能会构造出一些“对象Object”,当你构造这些对象的时候,你就已经在抽象了。
    一个个对象,可能也无法满足你的需求,毕竟有些业务太复杂,可能还会被好几个模块使用,你不得不在进行进一步封装,于是你就封装成了一个“组件Component”。这还是“抽象”。
    如果再进行下去呢?你可做更多层面、方向的抽象和封装。
    #hared 发表于2007-08-08 14:06:56  IP: 207.46.55.*
    to james999,

    真的很遗憾,到现在你还没有抓住我的point。

    我一直在说的是business, 这里有系统吗?没有,这里有模块吗?也没有,同样,这里也没有任何的代码存在。

    我一直在说得是一个事情的表述,定义它的边界,定义它的内容,定义它的状态,可是,这些一定要用code吗?当你明白需要解决的问题,用什么方式实现不过是个形式而已,工具人人都有,方法论遍地都是,可是如果你的心里没有树,你又如何讲的出树,如何画的出树?

    如果我是客户的话,你这样来给我讲方案,你觉得我会接受吗?完全不知道我的需求,不知道我在做什么,只是告诉我可以把它们变成对象,然后用户代码实现,又是component,又是抽象,又是SOA,又是模型,可是这些对象是什么?说得清吗?

    什么是本质? 理解吗?本来是简单的问题,非要把他搞得如此复杂,方法论只不过是解决问题的一种工具而已,可是你真的明白这个方法论为什么要定义成这个样子?难道只是会用这样简单?

    用ROSE来画UML人人都会,可是你明白这些不同的diagram的含义吗?为什么会有序列图?为什么会有交互图,为什么会有use case?用他们要表述什么内容,这些清楚吗?

    还用我继续解释吗?
    #james999 发表于2007-08-08 15:48:49  IP: 124.42.38.*
    to hared:
    看来我们没有必要在争论下去了,因为站在的立场不同。我想你可能更多的是站在“客户需求分析”的角度来考虑问题,而我作为一个开发人员,是站在“如何构架一个系统来满足客户需求”的角度来考虑问题。—— 虽然不论是项目经理、开发人员、销售人员都最终是要给客户交付一个可运行信息系统,但是操作手法和考虑视角毕竟还是有所差别的。
    By the way,如果你认为Rose才能表示业务,那就太偏激了。
    再补充一点:你说“方法论只不过是解决问题的一种工具而已”,事实上,方法论是更应该是一个“指导思想和方向”。而我们就是要依据一些方法论,来构架出一套解决业务问题的平台和方案,而开发人员需要在这套方案和构架上完善业务的边边角角,最终实现一套业务系统。——当然,这期间,把客户的业务需求搞清楚,描述清楚,是至关重要的。
    #hared 发表于2007-08-08 22:42:12  IP: 210.77.120.*
    to james999:

    我再一次的说多一句:我真的,真的非常遗憾,你到现在为止都没有明白我讲的这些内容是什么含义。

    1. 我对rose的表述是这个意思吗?rose只是一个工具而已,对于工具,不在于知道如何用这么简单,关键是明白这些工具的原理,才能对症下药,才有可能画出正确的东西,记住,是可能而已。另外,我可以告诉你的是,在表述业务时,我从来不跟客户谈论rose,我只是用他们理解的语言谈论而已,不同的是我比他们说的更全,更准确,更直接,更简单而以。
    2. 业务只是边边角角吗?这个如果你是这样理解的话,这个不应该是从一个谈论架构的expert的话。
    3. 既然你是:是站在“如何构架一个系统来满足客户需求”的角度来考虑问题:我前面讲了这么多的客户需求,你有没有明白我的意思?只是客户需求这样而已?从开发的角度,你理解这个需求的程度有多深?你如何发现客户给你的需求就是完整的,正确的?
    4. 方法论难道不是工具吗?那么按照你的说法,这个是一个什么样的指导思想和方向?不能明白设计的本质,只是套一些方法论就能解决问题吗?可笑!
    5. 既然你都要知道,把客户的需求搞清楚,描述清楚,是至关重要的,可是,我从第一个回帖就在问你,如何搞清楚?如何描述清楚?这个难道不是我一再强调的需求的外延和内涵吗?问题是如何做到这个?
    6. 站的立场:这里我只能这么说,我和你站在同一个立场,只是你看不到我这个层面而已。我说的这些东西,只不过是希望能够以一个旁观者的角度,客观的看待一个问题而已。问题一直存在,就像宇宙里的恒星一样,你没有看到,并不意味着它就不在那里。

    问题本来很简单,但是大家偏偏要用复杂的方法去解决,结果把自己也绕进去了。

    最后再回一句:我其实看了很多你写的东西,公平的讲,确实有很多东西来自于你的体验,来自于你的经验的总结,可是,正如我前面讲的,这些东西,你在写得时候,引用了很多其他的内容,可是一个前提:对于我们搞IT的,非常重要的,就是自己要明白这些内容的确切含义,不能图一时口快,脱口而出,对不懂的人,可能看得兴奋流汗,其实是在误人子弟。
    如果你能悟出我讲的“本质”的含义,你就会看到其实这些东西的本质真的很简单,你就可以明白我这些内容的确切含义。但是,现在,你还没有到这个程度。

    到此为止吧,多说无益。

    hared.
    #xuguoxin 发表于2007-09-13 22:28:47  IP: 218.83.43.*
    可以具体介绍下SOA应用的场景吗
    我描述个具体应用 你看下是否算SOA设计,
    1.在一个HR软件中会有企业内计算员工的薪资统计模块。很可能在今后其他MIS系统中也会用到这个模块提供的统计功能,那就可以直接把该模块做成WEB SERVICE,可以让外部的系统使用。
    #james999 发表于2007-09-15 15:55:35  IP: 125.33.78.*
    to xuguoxin:
    并不是把某个系统或某个模块对外的接口暴露成web service就是SOA了。当然,暴露成web service方式,会有很多好处,比如ws与语言无关的。
    但是,您所说的这种方式,的确可以说是SOA的应用或设计,虽然它的构架并不是很复杂。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 银狐999