面向服务的体系结构(SOA)

时间:2020-01-09 10:44:23  来源:igfitidea点击:

面向服务的体系结构(SOA)是一种体系结构,其中独立的系统和应用程序通过公开和使用服务相互通信。服务是使用开放标准定义的,这使得相互通信更容易实现,并且对专有通信协议的依赖性降低。

从DOA到SOA

SOA遵循一种分布式对象体系结构(DOA)的思想,其中应用程序中的对象可以在服务器之间自由移动并相互远程调用等。这种思想是,调用另一个对象的对象不必知道被调用的对象是否位于本地。 ,或者远程。这对于调用对象应该是透明的。

由于太细粒度的分布式对象通信既非常复杂,又不能很好地执行,因此该体系结构正逐渐被废弃。

分布式对象很复杂,因为调用远程对象时比调用本地对象时出错的可能性更大。例如,我们通常需要两阶段提交事务来协调分布式事务,其中单阶段事务可以在本地进行。

此外,我们对因不必要的进程外通信以及在背后的"容器"或者"服务器"之间移动对象而引起的通信开销的控制较少。因此,应用程序设计人员希望能够控制对象的位置,以降低复杂性并提高性能。

取而代之的是,引入了粒度更小的移动服务。服务可以移动,但是它们通常不会像人们想象的那样动态地移动分布式对象。此外,当我们调用服务时,通常会知道我们正在调用远程实体。这意味着我们可以更好地控制复杂性和性能。

有人讽刺地说,SOA代表" Same Old Architecture",实际上与事实相差不远。今天的服务与昨天的远程过程调用协议非常相似。主要区别在于,当今的服务越来越多地通过开放标准(例如SOAP,REST等)进行通信,这意味着通信层变得更易于实现。但是,SOA并不是"投资回报率"的最大提升者,有些作者希望我们相信这一点。

另一个区别是SOA引入了一组新概念,并试图标准化整个行业中的一些现有概念。其中一些概念是:

  • 企业服务总线
  • 服务组成
  • 服务交易
  • 服务库
  • 服务编排