赵翔鹏的Blog Xiangpeng's Thinkpad

6十一/070

WS-CDL跟BPEL相比有什么价值?

问题:既然有BPEL标准,为什么又出了个WS-CDL? BPEL不够用的么?WS-CDL自身有什么优势?WS-CDL解决了bpel解决不了的问题么?

CDL描述问题的角度跟BPEL不同。与BPEL相比,BPEL强调的是以“我”为中心,描述我跟别人的交互;而CDL是从一个“导演”的层次来描述“他跟她交互,她再跟他交互”,导演要考虑各方如何协调演戏,但BPEL只考虑自己。总之,CDL从需求层面上描述不同 participant之间的交互过程,描述的是business protocol,或者说商业合同。

注意这里的一个前提是要存在多个不同的participant,这意味着我们描述的对象是跨组织的business process,此时CDL才能派得上用场。想象一个含有buyer、seller、bank、shipper等多方的场景,你可以写四个bpel流程,并把它们的并行作为这整个场景的描述,也可以写一个CDL流程作为这整个场景的描述。

既然用4个流程或1个流程都可以描述,那么CDL的好处是什么呢?在引入CDL之前,标准的开发流程是各方先定义自己的BPEL程序,然后把它们放在一起并行执行;这种bottom-up的方法可能会产生死锁等并行程序开发中固有的一些难题。

引入CDL后的开发模型是top-down的,先定义全局的CDL交互模型,然后用一个“编译器”从CDL自动或半自动地生成各方的BPEL描述;这样自动产生的BPEL代码一定不会死锁,一定跟全局模型一致(如果你的CDL到BPEL的“编译器”够强的话)。

必须客观承认的是,CDL还远远达不到工业应用的程度,目前的支持者只有Oracle,Adobe等“非主流”公司,上面所说的“编译器”还没有一个完美的实现。它还是比较新的一个东西,有很多地方人们还不清楚(但是正因为它不清楚,所以学术研究对它反而比较感兴趣)。而且,CDL是对需求的描述——在实际开发中,“需求”未必有人花太多功夫描述——这就是说,就算不引入CDL,还是照样可以开发;它不像BPEL是实现语言,必须采用。但这不代表CDL就没有用;打个比方,尽管严格进行需求分析的人不多,我们能说需求分析没有用么?

评论 (0) 引用 (0)

还没有评论.


Leave a comment

(required)

还没有引用.