什么是 SOA(面向服务的架构)?

Michael Chen | 内容策略师 | 2024 年 3 月 28 日

面向服务的架构 (SOA) 是一种软件设计方法,专注于从单个组件开始构建可扩展的功能性软件系统,也称为服务。服务可以相互交互以执行任务,例如允许某人只登录一次即可访问各种商业应用。在 SOA 中,重点在于模块化、可重用性和互操作性 — 当企业将复杂的应用分解为更小、更易于管理的构件时,就能够获得更大的灵活性和可扩展性。

服务并未硬编码到应用中。相反地,服务发布到注册表,当应用想要使用服务时,会要求注册表查找新版本。通过这种方式,人们可以轻松更改或更新服务,而无需详细了解应用。SOA 方法可以更轻松地适应不断变化的业务需求,并将提供相关功能的系统相集成。

通过 SOA,各个服务之间可以松散耦合,并根据需要进行通信和传输数据。例如,采用 SOA 方法来开发云技术软件可带来以下优势:

  • 开发周期更短。开发人员可以集成和再利用现有服务,无需从头开始构建许多功能。
  • 维护更轻松。SOA 支持单独维护每一个服务,而不会对更大的项目产生级联影响。通过隔离调试和故障排除,可以延长正常运行时间。
  • 适应性强。SOA 既可以保持向后兼容性,又有助于规划未来。开发人员可以将较旧的服务引入较新的环境中,甚至还可以利用更新的硬件和云基础设施,将过时的服务替换为较新的版本。
  • 提升可扩展性。服务由 SOA 管理层监视,如果由于需求增加而过度影响性能,则可以启动新的服务实例以提高性能。使用该服务的应用不会知道新的实例,它们只会看到操作级别仍然保持在可接受范围内。

面向服务的架构的示例包括:

  • 具有通用登录信息的网站和应用:许多企业想要创建一种应用环境,让员工只需使用一个密码即可访问所需的应用。SOA 架构支持由一组服务来处理验证管理,以供企业的应用使用。
  • 提供应用内 AI 或分析的应用:在云端运行系统的一个关键优势是,使用云技术服务来改善应用功能非常简单。云技术服务可以是很简单的,例如基于一组数据创建图形;但也可以是很复杂的,比如开发人员通过一组服务调用为应用添加 AI 功能。
  • 在线零售商:SOA 通过使用服务来获取库存数据、跟踪购买、安全地付款以及获取 AI 生成的数据(例如“客户也喜欢”是商品推荐),从而更轻松地开发和管理电子商务网站。

什么是 SOA(面向服务的架构)?

面向服务的架构 (SOA) 是一种设计范例,使用自包含、可重用的构件创建或补充应用(也就是服务),从而提供特定的功能,并且可以通过网络调用。每个服务都有明确定义的范围,可供架构中的其他组件或服务访问,以增强系统的整体功能和性能。

面向服务的架构中的服务的例子包括有付款处理服务、客户管理服务或可嵌入电商网站的产品推荐服务。此外,也有其他更加简单的服务,例如提供地球另一端城市的当前时间的服务。使用 SOA 可带来强大优势,其中的一个例子是可以在不更改需要使用该服务的应用的情况下切换付款处理器。

SOA 是一个模块化和灵活的软件基础设施,支持独立开发、测试和部署单个服务。该架构的两大关键优势是易于维护和可扩展性。

SOA 的工作原理是在应用框架内松散耦合服务。每个服务都将作为一个模块,根据请求提供输入/输出结果。应用不需要知道它正在使用的服务的版本,而是专注于检查注册表并查找提供所需功能的新服务。以下工作流显示了如何使用 SOA 模型构建零售商网站。

  1. 购物者使用可识别的电子邮件地址和密码进行单点登录。零售应用将此登录信息发送到授权服务以进行验证,并在通过验证后加载客户配置文件。
  2. 然后,购物者会搜索特定产品。货品列表与库存服务相连,该服务可提取客户所在的实体店和配送中心的可用数据。
  3. 客户使用集成的购物车服务结账,然后该服务会连接到付款处理服务以进行安全的交易。
  4. 交易完成后,买家可以使用其他服务从库存和发运物流服务中提取数据,以了解订单状态。

SOA 支持以现成的形式集成服务,从而加快此类站点的开发。在这个例子中,零售商不仅减轻了逐个开发每个模块的负担,而且无需跟踪服务更新。IT 可以简单地使用经过审核并具有已验证的功能、安全性和可用性的服务。

SOA 开发的关键是模块化思维,需要了解服务集成的机遇所在。在云端开发的应用可以轻松利用作为 Web 服务实施的各种 SOA 式服务。

2024 年 CIO 不可忽视的 10 大云技术趋势

模块化和灵活的 SOA 基础设施为采用云技术的企业带来了重大优势。以下是其他主要趋势。

面向服务的架构的常见问题解答

面向服务的架构有哪些示例?

对于消费者,面向服务的架构的其中一个示例是面向跑步爱好者的应用。该应用无需构建距离跟踪和地图的自定义工具,而是可以集成电话 GPS 设备和现有地图服务(例如 Google Maps)。该应用还可以从国家气象局提取当地天气信息。该应用需要做的就是为跑步者无缝呈现这些服务的数据。

SOA 与微服务有何不同?

SOA 和微服务具有类似的目标,即通过基于网络的函数调用为应用提供功能。然而,SOA 适合在更广泛的、通常更高的级别上使用。微服务则适合在应用级别使用,可为一个高度专业化的任务提供服务,以便根据需要重复执行。例如,用于安全登录的验证插件属于是 SOA 的一部分;但是,可重复执行的加密口令服务则属于是微服务。微服务可以在 SOA 服务中调用,也可以在较大的项目中集成。在此示例中,验证服务将使用加密微服务完成工作。其中,覆盖范围是两者之间的主要区别。

面向服务的架构有哪些主要特征?

面向服务的架构的主要特征包括:

  • 独立服务的松散耦合,无论是单独由内部开发的还是从第三方获得许可的,都可以一起用于构建更大的应用。
  • 互操作性使服务可以插入到各种软件系统中并进行更新,而不会影响应用的性能。
  • 该服务无需了解应用,即可根据需要提高和降低可扩展性。
  • 消除维护工作,软件开发人员不负责维护他们所使用的服务。

面向服务的架构适合用于什么地方?

只要存在独立的服务来满足系统要求,面向服务的架构就可以用于几乎任何应用。由于服务开发生态系统广泛,大多数软件创建者都可以找到满足需求的服务,即使是高度自定义的项目,也仍然能够使用独立的服务进行身份验证或提取地图数据。

注:为免疑义,本网页所用以下术语专指以下含义:

  1. 除Oracle隐私政策外,本网站中提及的“Oracle”专指Oracle境外公司而非甲骨文中国 。
  2. 相关Cloud或云术语均指代Oracle境外公司提供的云技术或其解决方案。