面向服务的架构(SOA)是一种架构类型,而不是产品或项目。SOA与过去的架构相比有了很大的改进,它拿来和利用以前出现的架构的最佳实践。因此,SOA是架构的一次演进,而非革命。
各家 企业的IT部门通常拥有可以被大体分类为后端和前端的应用。后端可以被认为是这家企业的所有业务层和数据层的组合,前端层是表示层的组合。
IT的后端包括在J2EE、Microsoft .NET、CICS大型机以及其他多种包含企业的业务逻辑的技术上开发的所有应用。它还包括保存的程序、数据库中的或其他多种格式的数据。
前端包括所有可能的业务渠道,这些渠道可以是基于Web的或基于桌面的,也可以是暴露给合作伙伴和客户的Web服务或Enterprise JavaBeans(EJB)。
SOA在后端发挥作用。它是用于企业骨干网的架构。SOA描述了组织后端的更好的组合方式,主要提供已有IT资产的高灵活性(对变化的更快响应)和对已有IT资产重用。正是这两个特征使SOA具有了作为一种企业架构的最大吸引力。
若想使SOA发挥作用,后端必须被划分为不同的服务。每个服务执行特定的业务任务。一旦构成一个集合的服务被确定,它们可以串联在一起构成一个业务流程。
SOA实际上将流程逻辑与业务逻辑相分离。业务逻辑作为服务提供。流程逻辑通过将这些服务连接在一起来构成。
编排引擎提供对执行BPEL的支持,从而使执行业务流程变得更容易。
我们可以利用BPEL构建流程逻辑,可是我们如何构建服务呢?一个服务就是一个特定的业务任务。构建服务的第一步是确定系统中所需要的服务。业务分析人员应当确定可重用的业务任务,并且还提供任务的颗粒度。这种任务可以作为服务暴露。
例如,在一家银行中,业务分析可帮助确定检查账户余额的任务是否应当成为服务,或者确定现金转账是否应当成为服务。在后一种情况下,转账金额服务应当成为更大的业务流程的一部分。
一旦确定服务后,SOA要求服务可以从任何类型的客户程序调用,不依赖于客户程序的实现语言或平台。Web服务或SOAP技术是暴露服务的更好方式之一。
SOA争取最大的可重用性。已有业务逻辑可以通过编写将它们包裹起来的外壳来暴露为服务,从而使业务逻辑可供异构环境中的不同系统使用。
例如,一个Microsoft .NET前端应用可以使用作为提供对业务任务支持的服务暴露的J2EE后端。流程逻辑与业务逻辑的分离使系统更具灵活性。
大多数业务变化与流程逻辑有关,而不是与业务逻辑有关。在保持核心业务不变的同时,新的流程常常被引进,或者已有流程被修改。因此,实施变化只需要修改或创建BPEL脚本,从而提供对变化的更快响应。
如果任何业务任务缺失的话,只有包含这个业务逻辑的服务必须被开发和测试。因此,这种架构支持从基础开始的增量式开发,从而减少总体风险、变化费用和开发工作本身。
本文粗线条地描述了SOA的基本情况,可以作为所有正在设法了解SOA是否适用于自己所在企业的人员的起点。
SOA的特性
* SOA描述了组织后端的更好的组合方式,主要提供已有IT资产的高灵活性(对变化的更快响应)和对已有IT资产重用。
* SOA实际上将流程逻辑与业务逻辑相分离。
* SOA争取最大的可重用性。已有业务逻辑可以通过编写将它们包裹起来的外壳来暴露为服务,从而使业务逻辑可供异构环境中的不同系统使用。