SOA Notes
1、什么是SOA
SOA是一个既简单又复杂的技术。简单地说,SOA就是一组设计原则,这些设计原则既有SOA特有的,如服务是第一概念[CBDI],业务和IT对齐,为灵活而构建;也有被早已被业界广泛接受和使用的,如松散耦合、隔离关注、模块化、可重用性等。复杂地说,SOA是由这些设计原则衍生出的各种技术,如SOA成熟度模型、服务建模方法学、SOA编程模型、企业服务总线、服务注册库等。
SOA 解决方案由可重用的服务组成,带有定义良好且符合标准的已发布接口。SOA 提供了一种机制,通过这种机制,可以集成现有的遗留应用程序,而不管它们的平台或语言。
从概念上讲,SOA 中有三个主要的抽象级别:
· 操作:代表单个逻辑工作单元(LUW)的事务。执行操作通常会导致读、写或修改一个或多个持久性数据。SOA 操作可以直接与面向对象 (OO) 的方法相比。它们都有特定的结构化接口,并且返回结构化的响应。完全同方法一样,特定操作的执行可能涉及调用附加的操作。
· 服务:代表操作的逻辑分组。例如,如果我们将 CustomerProfiling视为服务,则 按照电话号码查找客户、按照名称和邮政编码列出顾客和保存新客户的数据就代表相关的操作。
· 业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。业务流程通常包括多个业务调用。业务流程的例子有:接纳新员工、出售产品或服务和完成订单。
2、为什么OOAD、EA 和 BPM的还不够
诸如面向对象的分析与设计(Object-Oriented Analysis and Design,OOAD)、企业体系结构(Enterprise Architecture,EA)框架和业务流程建模(Business Process Modeling,BPM)这样的现有开发流程和表示法仅仅涵盖了支持目前出现在 SOA 中的体系结构模式所需的部分要求。
SOA 方法在加强已经制定的良好通用软件体系结构原则(如信息隐藏、模块化和问题分离)的同时,还增添了附加的主题,例如,服务编排、服务库和服务总线中间件模式,在建模时需要对它们给予特别的关注。
但是要记住不是OOAD等就没有用处了,Grady Booch 宣称“像对问题的良好抽象和良好的分离这样的工程基础决不会过时”,不过,他也指出“还是有现实的机会提升抽象的级别。过去的经验表明,必须将抽象的级别提升到公司处理的业务领域,从而将整个企业 IT 前景都纳入考虑的范畴。
3、BPEL和SOA
BPEL是实现SOA的一种工具。可以通过BPEL来整合现有的企业内部资源(服务),从而提供流程化的管理。而且,整体是大于部分的总和的,所以整合后的服务又会产生新的功能和可能性。个人认为这才是BPEL存在的意义。
Web 服务的业务流程执行语言(Business Process Execution Language for Web Services,BPEL4WS)规范,其定位是成为整合方面的 Web 服务标准。您可以创建能够如完成 Web 服务调用、操纵数据、抛出故障或终止一个流程等工作的不同活动,然后将它们连接起来,从而创建出复杂的流程。这些活动可以嵌套到结构化活动中,结构化活动定义了其中的活动的运行方式,如是串行或是并行还是取决于某些条件。
作为可执行流程的实现语言,BPEL4WS 的作用是将一组现有的服务整合起来,从而定义一个新的 Web 服务。因此,BPEL4WS 基本上是一种实现这样的整合的语言。与其它任何 Web 服务一样,整合服务的接口也被描述为 WSDL portType 的集合。整合(称为流程)指明了服务接口与整合的总体执行的配合情况。
4、BPEL、WSBPEL和 BPEL4WS之间的区别
没有区别。均指相同的标准。
5、BPEL能做什么?不能做什么?
BPEL能够对业务流程进行建模,包括流转(顺序,并行,互斥)和数据(每个步骤地输入输出)。
BPEL不能具体执行原子业务。即BPEL只能对现有原子业务进行组合而不能产生新的原子业务。BPEL也不能存储流程数据。BPEL只是一个标准,不涉及具体的实现方法。