论面向服务架构(SOA)设计及其应用

论面向服务架构(SOA)设计及其应用

马旺旺

(石家庄铁道大学,河北省石家庄市,050000)

摘 要 SOA分层架构的核心思想是运用 SOA 理论将现有的信息系统分解成多个独立的粗粒度 Web 服务 , 信息的集成即变成 Web 服务之间的交互 , 从而隐藏了原信息系统的位置和实现技术。面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。本文将从定义、基础结构、六大基本要素、三大角色、五大特性和自身实践相结合具体阐述面向服务框架的设计与应用。

关键词:面向服务;架构;软件;SOA

 

On the design and application of SOA

Ma Wangwang

(Shijiazhuang Tiedao University,Shijiazhuang City, Hebei Province,050000)

Abstract:The core idea of SOA layered architecture is to use SOA theory to decompose the existing information system into several independent coarse-grained web services, and the integration of information becomes the interaction between web services, thus hiding the location and implementation technology of the original information system.Service Oriented Architecture (SOA) is a component model, which divides the different functional units of an application (called services) and links them through well-defined interfaces and protocols between these services. This paper will elaborate the design and application of service-oriented framework from the definition, infrastructure, six basic elements and its own practice.

Key word:  Service oriented;  framework;  software;  SOA

 

0引言

传统的架构,软件包是被编写为独立的(self-contained)软件,即在一个完整的软件包中将许多应用程序功能整合在一起。实现整合应用程序功能的代码通常与功能本身的代码混合在一起。更改一部分代码将对使用该代码的代码具有重大影响,这会造成系统的复杂性,并增加维护系统的成本。而且还使重新使用应用程序功能变得较困难,因为这些功能不是为了重新使用而打的包。SOA旨在将单个应用程序功能彼此分开,以便这些功能可以单独用作单个的应用程序功能或“组件”。这些组件可以用于在企业内部创建各种其他的应用程序,或者如有需要,对外向合作伙伴公开,以便用于合作伙伴的应用程序。

1详细介绍

面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。

对松耦合系统的需要来源于业务应用程序需要,根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。

2基础结构

一,SOAP, WSDL, UDDI

WSDL,UDDI和SOAP是SOA基础的基础部件。WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服务提供者之间传送消息。SOAP是Web服务的默认机制,其他的技术为可以服务实现其他类型的绑定。一个消费者可以在UDDI注册表(registry)查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。

二,WS-I Basic Profile

WS-I Basic Profile,由Web服务互用性组织(Web Services Interoperability Organization)提供,是SOA服务测试与互用性所需要的核心构件。服务提供者可以使用Basic Profile测试程序来测试服务在不同平台和技术上的互用性。

三,J2EE 和 .Net

尽管J2EE和.NET平台是开发SOA应用程序常用的平台,但SOA不仅限于此。像J2EE这类平台,不仅为开发者自然而然地参与到SOA中来提供了一个平台,还通过他们内在的特性,将可扩展性,可靠性,可用性以及性能引入了SOA世界。新的规范,例如 JAXB(Java API for XML Binding),用于将XML文档定位到Java类;JAXR(Java API for XML Registry)用来规范对UDDI注册表(registry)的操作;XML-RPC(Java API for XML-based Remote Procedure Call)在J2EE1.4中用来调用远程服务,这使得开发和部署可移植于标准J2EE容器的Web服务变得容易,与此同时,实现了跨平台(如.NET)的服务互用。

3六大关键要素

一个SOA系统要具有以下六大关键要素——基础设施、已有资源、企业服务、流程模型、服务展现和系统工具(包括开发、测试和管理工具等)。在基础设施和已有资源都已具备的基础上,开发和构建一个SOA系统要包括以下几方面的工作:

一,首先需要设计开发出符合标准的服务,这是整个SOA系统最核心的要素。

二,基于标准服务,借助流程编排工具和建模工具,组织构造流程,生成流程模型,更好地满足业务需求。

三,实际构建和开发SOA系统,具体包括服务和应用程序的开发,数据的访问、处理和管理,及对服务各种形式的展现等。

4三种角色

SOA架构中有三种角色:

服务提供者:服务提供者注册自己的服务,注册信息包含系统信息,服务名称,服务的ip和端口号,服务请求的url, 服务的权重等

服务注册中心:注册中心提供注册服务的中心存储,和向服务消费者push服务变更通知

服务请求者:服务消费者在启动时获取所需服务注册信息(根据系统名称+服务名称),将服务注册信息缓存在本地,监听服务信息的变更,更新本地的缓存。服务消费者根据本地缓存的服务提供者信息负载,来转发请求。对服务提供方提供心跳检测。

5 五大特性

服务自治:服务自治原则要求单个服务在底层逻辑控制方面要尽可能是独立和自包含的,服务不依赖于访问它的客户端或其他服务。服务可以独立的进行部署以及实施版本策略和安全策略。

依赖开放的标准:SOA的一个目标是让不同厂商开发的服务能够进行互相操作,这样就需要依赖于一个开放的被不同厂商普遍接受的标准。SOA采用基于消息的通讯方式,从消息交换的角度来想就是要求消息自身标准化,在此方法SOAP(简单对象访问协议)消息的采用对消息承载的内容提供了一致性的表示。另外SOA真正的被用于企业级应用时,还需要考虑一下额外因素,比如消息安全、可靠传输、事务的支持等。要实现真正意义上的跨平台操作,实现这些特性的互操作方式同样需要一种开放的标准定下来。在这方面一些主流的IT厂商比如:微软、IBM和BEA等联合一些国际组织如:W3C、OASIS、WS-1等,对标准和规范的指定做出了极大的贡献,这些标准和规范定义在Web Service规范中。

支持跨平台:能够让不同平台进行通讯是SOA产生的最主要动机。正因为SOA采用的开放的标准,才使跨平台得以实现。跨平台最大的好处就是促进了异质系统的集成,使Java应用能够调用.NET平台暴露出来的服务接口。此外使用标准的服务兑现有逻辑的封装,实现了对历史遗留应用的重用,也给企业提供了一种节约成本的捷径。

组合和复用:按照提供功能大小的差异,不同的服务具有不同的粒度。我们可以把提供具有最小粒度功能实现的服务成为原子服务,多个原子服务可以通过合理的组合,编排成一个新的聚合型服务。功能的复用是我软件设计思想不变的主题,SOA鼓励创建具有高复用的服务。服务的组合性另一方面也促进了服务的重用。为了提高服务的复用程度,SOA甚至强调了创建与场景无关的服务,这样同样的服务就在不同场景的解决方案中使用了。

松耦合:SOA通过契约实现客户端对服务的调用,双方只需要采用能够匹配的契约就能保证正常的交往。基于契约的服务交往,又进一步促进了服务的自治,只要契约不发生改变,服务本身的实现就可以自由的变化,因此这样的耦合度是极低的。

6自身实践

在我构建SOA系统时,遇到的问题主要是如何打通一个系统与一个系统之间同一用户之间信息共享的问题,本来是同一用户,但是在每个系统之间都有自己的一张“身份证”,互相独立。就像生活中我们经常遇到的一个提示一样:“ QQ和微信是独立的体系,账号信息不互通。”解决方法就是根据信息特点,建立统一的管理平台。统一认证在实际的开发过程中也尤为重要,统一认证的实现是基于SOA的架构。为了保证软件的信息安全,我们往往设定有些界面只有用户登录后才能访问,这必然就会带来每次身份认证的繁琐操作,不仅浪费时间而且容易遗忘密码,解决方法就是将身份验证这一功能模块发布成一种服务,其他的软件可以通过UUDI查找该服务,然后将该服务与服务的实现进行绑定。

5总结

服务导向架构并不是一种全新的解决方案;相反,SOA是技术与架构的自然进化。系统架构一直在不断进步,与商业保持高度一致。系统设计师与商家很早就认识到将技术与商业流程相协调的重要性,包括充分应用并合理化技术资源,以及为商业提供更好的支持。

 

参考文献:

[1] 百度百科,SOA (面向服务的架构),https://baike.baidu.com/item/SOA/2140650

[2] SOA(Service-Oriented Architecture)面向服务的分布式架构详解,持.之.以.恒,https://blog.csdn.net/zl834205311/article/details/80333531

[3] SOA面向服务架构详解,顺其自然~,https://blog.csdn.net/fuhanghang/article/details/83961606

[4] 浅谈SOA,禾码大叔,https://www.cnblogs.com/jun-ma/p/5341027.html

[5] SOA系列之基本特性,邵鸿鑫,https://blog.csdn.net/u010926964/article/details/48734265

 

 

posted @ 2020-05-15 11:39  _小白兔  阅读(1189)  评论(0编辑  收藏  举报