面向服务的体系结构(SOA)是一种体系结构方法, 其中应用程序利用网络中可用的服务。在此体系结构中, 通过Internet上的通信呼叫提供服务以形成应用程序。
- SOA允许用户将现有服务中的大量功能组合在一起以形成应用程序。
- SOA包含一组设计原则, 这些原则构造了系统开发并提供了将组件集成到一致且分散的系统中的方法。
- 基于SOA的计算将功能打包到一组可互操作的服务中, 这些服务可以集成到属于单独业务域的不同软件系统中。
面向服务的体系结构中有两个主要角色:
- 服务提供者:服务提供者是服务的维护者, 也是使一项或多项服务可供他人使用的组织。为了广告服务, 提供者可以将它们与指定服务性质, 使用方式, 服务要求以及所收取费用的服务合同一起发布在注册表中。
- 服务使用者:服务使用者可以在注册表中找到服务元数据, 并开发所需的客户端组件以绑定和使用服务。
服务可以聚合从其他服务检索到的信息和数据, 或者创建服务工作流以满足给定服务使用者的请求。这种实践称为服务编排。另一个重要的交互模式是服务编排, 它是没有单点控制的服务的协调交互。
SOA的组件:
SOA指导原则:
- 标准化服务合同:通过一个或多个服务描述文件指定。
- 松耦合:服务被设计为独立的组件, 维护关系以最小化对其他服务的依赖性。
- 抽象:服务由服务合同和说明文件完全定义。他们隐藏了逻辑, 这些逻辑封装在实现中。
- 可重用性:设计为组件的服务可以更有效地重用, 从而减少开发时间和相关成本。
- 自治:服务可以控制它们封装的逻辑, 从服务使用者的角度来看, 无需了解其实现。
- 可发现性:服务由描述文档定义, 描述文档构成补充元数据, 可通过这些补充元数据有效地发现它们。服务发现提供了一种利用第三方资源的有效手段。
- 可组合性:使用服务作为构建块, 可以实现复杂的操作。服务编排和编排为组成服务和实现业务目标提供了坚实的支持。
SOA的优点:
- 服务可重用性:在SOA中, 应用程序是由现有服务组成的, 因此可以重用服务以创建许多应用程序。
- 易于维护:由于服务彼此独立, 因此可以轻松更新和修改它们, 而不会影响其他服务。
- 平台无关:SOA允许通过组合从不同来源(独立于平台)获取的服务来制作复杂的应用程序。
- 可用性:SOA设施可应要求轻松提供给任何人。
- 可靠性:SOA应用程序更可靠, 因为它易于调试小型服务而不是大型代码
- 可扩展性:服务可以在环境中的不同服务器上运行, 这增加了可伸缩性
SOA的缺点:
- 高昂的开销:每当服务交互时, 都会完成服务输入参数的验证, 这会降低性能, 因为这会增加负载和响应时间。
- 高投资:SOA需要大量的初始投资。
- 复杂的服务管理:服务交互时, 它们将消息交换给任务。消息数可能以百万计。处理大量消息成为一项繁琐的任务。
SOA的实际应用:无论是否提到SOA, 我们周围都以许多方式使用它。
- 许多军队和空军使用SOA基础架构来部署态势感知系统。
- SOA用于改善医疗保健交付。
- 如今, 许多应用程序都是游戏, 它们使用内置功能来运行。例如, 某个应用可能需要GPS, 因此它会使用设备的内置GPS功能。这是移动解决方案中的SOA。
- SOA帮助维护博物馆的虚拟存储池, 以存储其信息和内容。