现在,让我们从逻辑的角度来研究自顶向下方法。自顶向下方法考虑由企业SOA中间件应用程序组成的应用程序的目标。这个目标又分成子目标,每个子目标更进一步分成更小的单元。这个过程一直继续下去,直到达到SOA中间件应用程序的金字塔的底部为止。
显然,确保所有子目标都顺利地进行互操作非常重要。如果目标针对的是提供一个服务或一组服务,那么服务互操作性就成为首要关注的事情。然而,如果目标针对的是实现策略和规则,那么我们就需要将重点放在策略的互操作性上。
在现实世界中,并不存在单纯的以数据为中心、基于流程或策略互操作性。相反,我们通常碰到的都是数据、流程、服务和策略互操作性混合在一起。每种互操作性类型所占的比例可以动态地变化,这取决于每个Web服务如何模块化、设置优先级、最优化,以及如何通过松耦合的方式使彼此的交互达到最大程序。同样,它也依赖于Web服务所运行的平台(例如开放的Eclipse体系结构)。
自底向上方法
从物理的角度来说,自底向上方法将基本的Web服务组件定义为最小的基础部分。这使您可以将它与上一层更大的元素组合在一起,继续这个过程,直到所有部分都在金字塔顶点处集成为一个完整的复杂Web服务和关系的中间件应用程序为止,如图2所示。

图2. 自底向上方法
这个物理角度假定系统的所有部分都可以顺利地进行互操作。互操作性的含义依赖于Web服务交互的类型:以数据为中心、业务流程或组合。应用程序之间互操作性的每种类型所占的比例可以动态地变化。
从逻辑的角度来说,自底向上方法从作为SOA企业目标的基础构件的子目标(例如服务组件)开始。作为一名开发人员,您可以与分析人员一起,将它们组合成上一层的更大目标。继续这个过程,直到所有的子目标都在金字塔的顶点处集成为一个SOA中间件的企业目标为止。
确保所有的子目标都将顺利地进行交互非常重要。如果子目标针对的是提供一个服务或一组服务,我们首要关注的事情就是子目标之间的服务互操作性。然而,如果子目标针对的是实现策略和规则,那么我们关心的事情就变成子目标之间的策略互操作性。
旁路方法
从物理的角度来说,旁路方法(如图3所示)允许您在自顶向下或自底向上方法的旁路添加或删除Web服务组件。这使您能够在保持现有中间件完整的同时,更好地响应变更的设计和开发需求。旁路角度假定要添加的组件将可以与现有的组件顺利地交互。同样,它也假定要删除的组件将不会破坏剩余组件之间的互操作性。

图3. 旁路方法
从逻辑的角度来说,旁路方法使您能够从在自顶向下或自底向上方法的旁路添加逻辑Web服务的子目标开始。这使您可以添加诸如新的Web服务的服务类型和位置这样的子目标。您可以使用任一方法的旁路从逻辑Web服务中删除子目标。
您还可以更改Web服务的子目标,以便重用它来开发各种中间件应用程序。请确保在逻辑上添加、删除或者更改子目标时,Web服务之间的互操作仍然能够在生产环境中顺利地进行。您还需要确保在测试环境中运行的Web服务能够顺利地出色工作。
嵌入式方法
从物理和逻辑的角度来说,嵌入式方法是上述三种方法的混合,至少要嵌入金字塔某层中的两级或三级深。在这个嵌套、两级嵌入式方法示例中,您可以在自底向上方法中嵌入自顶向下方法(请参见图4),或者反过来。您也可以在自顶向下或自底向上方法中嵌入旁路方法。