什么是面向服务的体系结构?看完你就懂了
通过优锐课的java架构知识讲解中,了解面向服务的体系结构的特征以及什么构成基于Java的SOA基础结构。分享给大家学习参考。
面向服务的体系结构(SOA)是基于用于同步和异步应用程序的请求/答复设计范例的分布式计算的演变。应用程序的业务逻辑或各个功能被模块化,并作为针对消费者/客户端应用程序的服务呈现。这些服务的关键是它们的松散耦合性质。即服务接口独立于实现。应用程序开发人员或系统集成商可以通过组合一项或多项服务来构建应用程序,而无需了解服务的基础实现。例如,可以在.Net或J2EE中实现服务,而使用该服务的应用程序可以在其他平台或语言上。
SOA的好处是其与平台无关的方法以及Web服务之间更好的互操作性。本文是SOA的概述,包括构建Web服务时使用的一些工具和协议。
SOA和Web服务
面向服务的体系结构是可以使用Web服务实现的体系结构模式。 有关在Java中构建基于SOAP的RESTful Web服务的教程简介,请参见“ Java SE中的Web服务”(JavaWorld,2017年)。
面向服务的体系结构具有以下关键特征:
- ·SOA服务在与平台无关的XML文档中具有自描述接口; 用于描述服务的标准是WSDL或Web服务描述语言。
- ·SOA服务与通过XML Schema或XSD正式定义的消息进行通信。 消费者与提供者或服务之间的通信通常发生在异构环境中,很少或根本不了解提供者。 服务之间的消息可以视为企业中处理的关键业务文档。
- ·SOA服务由充当目录列表的注册表在企业中维护。 应用程序可以在注册表中查找服务并调用服务。 通用描述,定义和集成(UDDI)是用于服务注册表的标准。
为什么选择SOA?
IT企业基础结构在操作系统,应用程序,系统软件和应用程序基础结构之间是异构的。 一些现有的应用程序用于运行当前的业务流程,因此不能从头开始构建新的基础架构。 企业应迅速敏捷地响应业务变化; 利用对应用程序和应用程序基础结构的现有投资来满足新的业务需求; 支持与客户,合作伙伴和供应商互动的新渠道; 并具有支持有机业务的架构。 SOA具有松散耦合的性质,允许企业以粒度方式插入新服务或升级现有服务,以满足新的业务需求,提供使服务跨不同渠道可使用的选项,并将现有企业和遗留应用程序公开为服务 ,从而保护现有的IT基础架构投资。
云计算的SOA
了解有关Java企业中面向服务的体系结构的更多信息:
- 逻辑SOA:体系结构概述
- 面向现实世界的SOA
- ·确保SOA:你需要了解的内容
- ·精益SOA的企业模式
如图1的示例所示,使用SOA的企业可以使用一组通过标准接口公开功能的现有应用程序来创建供应链复合应用程序
图1.供应链应用程序。 单击缩略图以查看完整尺寸的图像。
服务架构
为了实现SOA,企业需要一种服务架构,其示例如图2所示。
图2.一个示例服务架构。 单击缩略图以查看完整尺寸的图像。
在图2中,几个服务使用者可以通过发送消息来调用服务。 这些消息通常由服务总线转换并路由到适当的服务实现。 该服务体系结构可以提供业务规则引擎,该业务规则引擎允许将业务规则合并到服务中或跨服务。 服务体系结构还提供了服务管理基础结构,用于管理服务和活动,例如审核,计费和日志记录。 此外,该架构还为企业提供了具有敏捷业务流程的灵活性,可以更好地满足Sarbanes Oxley(SOX)等法规要求,并且可以在不影响其他服务的情况下更改单个服务。
SOA基础架构
为了运行和管理SOA应用程序,企业需要SOA平台中一部分的SOA基础结构。 SOA基础结构必须支持所有相关标准和所需的运行时容器。 典型的SOA基础架构如图3所示。以下各节讨论了基础架构的各个部分。
图3.典型的SOA基础架构。 单击缩略图以查看完整尺寸的图像。
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绑定的Java API(JAXB),用于以标准方式与UDDI注册中心进行交互的XML Registry的Java API(JAXR)和基于XML的远程的Java API 过程调用(XML-RPC),用于调用Java EE 1.4中的远程服务,有助于开发和部署可跨标准J2EE容器移植的Web服务,同时与其他平台(如.Net)的服务进行互操作。
服务质量
企业中现有的关键任务系统可以满足高级要求,例如安全性,可靠性和事务处理。 随着企业开始采用服务体系结构作为开发和部署应用程序的工具,诸如WSDL,SOAP和UDDI之类的基本Web服务规范将无法满足这些高级要求。 如前所述,这些要求也称为服务质量。 与QoS有关的许多规范正在诸如Internet联盟(W3C)和结构化信息标准促进组织(OASIS)之类的标准机构中制定。 以下各节讨论了一些QoS工件和相关标准。
安全
Web服务安全性规范解决了邮件安全性问题。 该规范专注于凭证交换,消息完整性和消息机密性。 此规范的吸引力在于它利用了现有的安全标准,例如``安全断言标记语言(SAML)'',并允许使用这些标准来保护Web服务消息。 Web服务安全性是OASIS正在进行的一项工作。
可靠性
在典型的SOA环境中,服务使用者和服务提供者之间交换几个文档。 在使用服务体系结构的关键任务系统中,具有一次发送,一次发送,最多一次发送,消息重复消除,保证的消息传递和确认等特征的消息传递变得很重要。 WS-Reliability和WS-ReliableMessaging是解决可靠消息传递问题的两个标准。 这两个标准现已成为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通过利用现有的应用程序基础结构来组合新服务,为企业提供了更好的灵活性,从而可以灵活地构建应用程序和业务流程。
> 喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
> 如果你对java技术很感兴趣也可以交流学习,共同学习进步。
> 不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代
文章写道这里,欢迎完善交流。最后奉上近期整理出来的一套完整的java架构思维导图,分享给大家对照知识点参考学习。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java干货