什么是SOA(service-oriented architecture)?

了解面向服务的体系结构的特征以及基于Java的SOA基础结构的组成

面向服务架构(Service-oriented architecture,SOA)是基于同步和异步应用程序的请求/应答设计范式的分布式计算的发展。应用程序的业务逻辑或单个功能是模块化的,并作为客户机/客户机应用程序的服务呈现。这些服务的关键是它们的松耦合特性;即服务接口独立于实现。应用程序开发人员或系统集成商可以通过组合一个或多个服务来构建应用程序,而不必知道服务的底层实现。例如,服务可以在.Net或J2EE中实现,使用服务的应用程序可以在不同的平台或语言上。

SOA的好处是它的平台中立方法和web服务之间更好的互操作性。本文概述了SOA,包括构建web服务时使用的一些工具和协议

SOA和web服务
面向服务的体系结构是一种可以使用web服务实现的体系结构模式。请参阅“JavaSE中的Web服务”(JavaWorld,2017),了解如何在Java中构建基于SOAP的RESTful Web服务的教程介绍。

面向服务的体系结构具有以下关键特征:

  • SOA服务在独立于平台的XML文档中具有自描述接口;用于描述服务的标准是WSDL或Web服务描述语言。
  • SOA服务与通过XML Schema或XSD正式定义的消息通信。消费者和提供者或服务之间的通信通常发生在异构环境中,很少或根本不了解提供者。服务之间的消息可以看作是企业中处理的关键业务文档。
  • SOA服务由充当目录列表的注册表在企业中维护。应用程序可以在注册表中查找服务并调用服务。通用描述、定义和集成(UDDI)是用于服务注册中心的标准。
  • 每个SOA服务都有与其相关联的服务质量(quality of service,QoS)。一些关键的QoS元素是安全需求,例如身份验证和授权、可靠的消息传递和关于谁可以调用服务的策略。

为什么是SOA?

IT企业基础设施跨操作系统、应用程序、系统软件和应用程序基础设施是异构的。一些现有的应用程序用于运行当前的业务流程,因此从头开始构建新的基础设施不是一种选择。企业应敏捷地应对业务变化;利用现有的应用和应用基础设施投资来解决新的业务需求;支持与客户、合作伙伴和供应商交互的新渠道;并提供支持有机业务的体系结构。SOA具有松散耦合的性质,允许企业以颗粒状的方式插入新服务或升级现有服务,以解决新的业务需求,提供使服务能够跨不同渠道消耗的选项,并将现有企业和遗留应用程序暴露为服务,从而保护现有的IT基础设施投资。

如图1所示,使用SOA的企业可以使用一组通过标准接口公开功能的现有应用程序来创建供应链复合应用程序。
在这里插入图片描述

架构

消费者可以通过发送消息来调用服务。这些消息通常由服务总线转换并路由到适当的服务实现。此服务架构可以提供一个业务规则引擎,该引擎允许将业务规则合并到服务中或跨服务。服务架构还提供了一个服务管理基础设施,用于管理诸如审计、计费和日志记录等服务和活动。此外,该体系结构为企业提供了灵活的业务流程的灵活性,更好地满足了像Sarbanes Oxley(SOX)这样的管理要求,并且在不影响其他服务的情况下改变了个性化服务。

SOA基础设施

为了运行和管理SOA应用程序,企业需要一个SOA基础设施,它是SOA平台的一部分。SOA基础设施必须支持所有相关标准和所需的运行时容器。典型的SOA基础架构如图3所示。以下各节讨论基础结构的各个部分。

SOAP, WSDL, UDDI

在撰写本文时,WSDL、UDDI和SOAP是SOA基础架构的基本组成部分。WSDL用于描述服务;UDDI用于注册和查找服务;SOAP用作在服务使用者和服务提供者之间发送消息的传输层。虽然SOAP是web服务的默认机制,但是替代技术可以完成服务的其他类型的绑定。使用者可以在UDDI注册中心中搜索服务,获取具有描述的服务的WSDL,并使用SOAP调用服务。

WS-I基本配置文件

Web服务互操作性组织提供的 WS-I Basic Profile,文件正成为服务测试和互操作性所需的另一个核心部分。服务提供者可以使用基本概要文件测试套件测试服务在不同平台和技术之间的互操作性。

Java EE 和 .Net

尽管Java EE和.Net平台是SOA应用程序的主要开发平台,但SOA绝不局限于这些平台。Java EE这样的平台不仅为开发人员提供了自然参与SOA的框架,而且由于其固有的特性,还为SOA世界带来了成熟且经验证的可伸缩性、可靠性、可用性和性能基础设施。规范,如用于将XML文档映射到Java类的Java API for XML Binding(JAXB)、用于以标准方式与UDDI注册中心交互的Java API for XML Registry(JAXR)和用于基于XML的远程过程调用(XML-RPC)的Java API,用于调用Java EE 1.4中的远程服务有助于开发和部署可跨标准J2EE容器移植的web服务,同时跨其他平台(如.Net)与服务进行互操作。

服务质量

企业现有的关键任务系统满足诸如安全性、可靠性和事务性等高级需求。随着企业开始采用服务体系结构作为开发和部署应用程序的工具,WSDL、SOAP和UDDI等基本web服务规范将无法满足这些高级需求。如前所述,这些要求也称为服务质量。许多与QoS相关的规范正由诸如万维网联盟(W3C)和结构化信息标准促进组织(OASIS)等标准机构制定。下面的部分讨论一些QoS工件和相关标准。

安全性

Web服务安全规范解决了消息安全性问题。此规范侧重于凭据交换、消息完整性和消息机密性。这个规范的吸引力在于它利用了现有的安全标准,如安全断言标记语言(SAML),并允许使用这些标准来保护Web服务消息。Web服务安全是一项持续的OASIS工作。

可靠性

在典型的SOA环境中,服务使用者和服务提供者之间交换多个文档。在使用服务架构的任务关键型系统中,具有一次和仅一次传递、最多一次传递、重复消息消除、有保证的消息传递和确认等特性的消息传递变得非常重要。WS-Reliability和WS-reliable messaging是解决可靠消息传递问题的两个标准。这两个标准现在都是OASIS的一部分。

策略

服务提供者有时要求服务使用者与某些策略进行通信。例如,服务提供者可能需要Kerberos安全令牌来访问服务。这些需求被定义为策略断言。策略可以由多个断言组成。WS-Policy规范了如何在服务使用者和服务提供者之间通信策略。

编排

随着企业开始采用服务架构,服务可以用来集成数据、应用程序和组件的筒仓。集成应用程序意味着过程需求(如异步通信、并行处理、数据转换和补偿)必须标准化。BPEL4WS或WSBPEL(Web服务业务流程执行语言)是一种OASIS规范,用于处理服务编排,其中业务流程是使用一组离散服务创建的。WSBPEL现在是OASIS的一部分。

管理

随着企业中随着服务的增长而公开的服务和业务流程的数量不断增加,一个允许系统管理员管理在异构环境中运行的服务的管理基础设施变得非常重要。Web服务分布式管理(WSDM)将指定根据WSDM实现的任何服务都将由符合WSDM的管理解决方案管理。

WS-coordination和WS-Transaction规范分别讨论了其他QoS属性,如合作伙伴之间的协调和涉及多个服务的事务,这也是OASIS的工作。

结论:SOA的好处

虽然SOA概念不是新的,SOA与现有的分布式技术不同,因为大多数供应商接受它,并拥有使SOA能够实现的应用程序或平台套件。SOA具有普遍存在的标准集,为企业现有资产或投资带来更好的可重用性,并允许您创建可以在新的和现有的应用程序之上构建的应用程序。SOA允许对应用程序进行更改,同时保持客户机或服务使用者与服务实现中发生的演进更改隔离。SOA允许升级单个服务或服务消费者;不必完全重写应用程序或保持不再满足新业务需求的现有系统。最后,SOA通过利用现有的应用基础设施来构建新的服务,为企业以灵活的方式构建应用程序和业务流程提供了更好的灵活性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值