本文已使用 Google Cloud Translation API 自动翻译。
某些文档最好以原文阅读。
面向服务的体系结构 (SOA) 是一种用于软件开发的体系结构样式,用于创建高度模块化、可扩展且易于维护的应用程序和服务。它基于松散耦合的服务,这些服务通过简单对象访问协议 (SOAP) 等 Web 服务协议进行通信。这种架构用于开发独立于平台、语言和硬件的分布式软件应用程序。
面向服务的架构 (SOA) 最初由计算机科学家和软件工程师 David Chappell 在 2000 年代初期提出,作为对越来越难以维护的传统单体架构的替代方案。 Chappell 将 SOA 开发为一种更加模块化和可扩展的软件开发方法。
在随后的几年中,SOA 势头强劲,并被许多组织广泛采用。它允许更有效地使用资源,并支持开发可跨多种平台和语言使用的服务。
在面向服务的架构中,应用程序被分解成更小的、独立的服务,这些服务可以松散耦合并独立部署。这些服务通过简单对象访问协议 (SOAP) 等 Web 服务协议相互通信。这允许采用更加模块化和可扩展的软件开发方法,并使维护应用程序更加容易。
面向服务的体系结构中的服务通常基于作为工作流实现的业务流程。然后将此工作流程分解为可在多个应用程序中重复使用的单独服务。
例如,用于创建发票的工作流可能包括用于创建发票的服务、用于生成发票 PDF 版本的另一服务以及用于将发票发送给客户的服务。这些服务中的每一个都可以在其他应用程序中使用,例如会计系统或客户服务系统。
让我们来看一个面向服务架构的简单示例。
想象一下,您正在构建一个基于 Web 的应用程序来帮助人们节省能源费用。此应用程序需要访问来自多个来源的数据,例如能源供应商、使用数据和客户信息。
在面向服务的体系结构中,您可以为这些数据源中的每一个创建单独的服务。例如,能源供应商服务将提供能源价格数据,使用数据服务将提供能源使用数据,客户信息服务将提供客户人口统计数据。
然后可以将这些服务集成到 Web 应用程序中,并用于为用户生成报告和其他信息。这使得维护应用程序变得更加容易,并确保对一项服务的任何更改都不会影响其他服务。
面向服务架构的主要好处是它允许采用更加模块化的软件开发方法。这使得维护应用程序变得更加容易,并允许开发人员跨多个应用程序重用组件。它还可以更轻松地扩展应用程序,因为服务可以独立部署。
然而,使用面向服务的架构有一些潜在的缺点。例如,可能很难在多个服务之间保持一致的状态,如果设计不当,服务之间可能会发生冲突。此外,服务的维护成本可能很高,因为它们需要定期更新和测试。