SOA 本身是应该如何将软件组织在一起的抽象概念。它依赖于用 XML 和 Web 服务实现并以软件的形式存在的更加具体的观念和技术。此外,它还需要安全性、策略管理、可靠消息传递以及会计系统的支持,从而有效地工作。您还可以通过分布式事务处理和分布式软件状态管理来进一步地改善它。
SOA 服务和 Web 服务之间的区别在于设计。SOA 概念并没有确切地定义服务具体如何交互,而仅仅定义了服务如何相互理解以及如何交互。其中的区别也就是定义如何执行流程的战略与如何执行流程的战术之间的区别。而另一方面,Web 服务在需要交互的服务之间如何传递消息有具体的指导原则;从战术上实现 SOA 模型是通过 HTTP 传递的 SOAP 消息中最常见的 SOA 模型。因而,从本质上讲,Web 服务是实现 SOA 的具体方式之一。
尽管我们觉得 Web 服务是实现 SOA 的最好方式,但是 SOA 并不局限于 Web 服务。其他使用 WSDL 直接实现服务接口并且通过 XML 消息进行通信的协议也可以包括在 SOA 之中。正如在别处指出的,CORBA 和 IBM 的 MQ 系统通过使用能够处理 WSDL 的新特征也可以参与到 SOA 中来。如果两个服务需要交换数据,那么它们还会需要使用相同的消息传递协议,但是数据接口允许相同的信息交换。
既为了建立所有这些信息的适当控制,又为了应用安全性、策略、可靠性以及会计方面的要求,在 SOA 体系结构的框架中加入了一个新的软件对象。这个对象就是企业服务总线(Enterprise Service Bus,ESB),它使用许多可能的消息传递协议来负责适当的控制、流甚至还可能是服务之间所有消息的传输。虽然 ESB 并不是绝对必需的,但它却是在 SOA 中正确管理您的业务流程至关重要的组件。ESB 本身可以是单个引擎,甚至还可以是由许多同级和下级 ESB 组成的分布式系统,这些 ESB 一起工作,以保持 SOA 系统的运行。在概念上,它是从早期比如消息队列和分布式事务计算这些计算机科学概念所建立的存储转发机制发展而来的。
SOA 可以与许多其他技术结合在一起使用,然而,组件的封装和聚合在其中扮演着重要的角色。如前所述,SOA 可以是一个简单对象、复杂对象、对象的集合、包含许多对象的流程、包含其他流程的流程,甚至还可以是输出单一结果的应用程序的整体集合。在服务之外,它可以看作是单个实体,但是在其自身中,它可以具有任何级别的复杂性(如果必要的话)。出于性能方面的考虑,大多数 SOA 服务并没有下降到单一对象的粒度,并且更适合于大中型组件。