论面向服务架构设计

 

1、引言

随着互联网的高速发展,电子商务的逐渐繁荣 ,企业内部、 企业之间的信息交流越来越依赖于 Internet /Intranet。随之而发展的 Web Service为分布式计算提供了支持。但是传统的SOA的实现采用的都是一种紧耦合、 非通用的接口设计 , 无法满足跨企业的分布式系统的信息共享 , 无法使软件得到最大限度的重用 , 不能实现实时系统 , 因而一直没有得到很好的应用。

今天的 SOA 与过去不同的是基于已广泛接受的 Web 服务标准 ,从而提供了在每个不同的厂商解决方案间的相互性。SOA 是一种粗粒度、松耦合的软件体系架构,其应用的

所有功能均被定义成可调用的、独立的服务。服务是定义良好的、自约束的,它们之间的状态和上下文相互独立,不应该依赖于其它服务的上下文和状态。服务基于标准、精确定义的接口通信,通信可能涉及简单数据传递,两个或更多的协作服务,而服务可被有序编排从而构建复杂的业务流程。

2.Web Service

2.1 Web Service描述

       Web Service是一种基于服务组件的开放的软件平台 ,是面向服务的 Internet 应用 ,通过对 Web Service 的构建 , 人们期望得到一个可编程的 Internet 。 Web Service 将软件模块看成一种 Internet /Intranet上的服务单元 , 借助XM L和广泛应用的 Web协议 , 实现分布式的计算和异构平台的信息集成。Web Service的体系结构,是基于 Web服务提供者、 Web服务请求者、 Web服务注册代理的不同操作来实现的

2.2 Web Service技术

       XM L 在 Web Service 中不是一个单独的协议 ,但他却是 Web Service的核心技术。 XM L为 Web Service提供了统一的数据格式 , 包括消息、 服务描述以及工作流的描述

等不同层次的协议 ,都采用 XML 作为定义语言。 XM L 的数据描述机制奠定了 Web Service革命的技术基础。SOAP 是用于交换 XML 编码信息的轻量级协议。 他使用基于 TCP/IP的应用层协议 HTTP, SM TP, FTP等 ,可以与现有的通信大量兼容。WSDL是借助 XM L来描述一个网络服务或端点 , 用于定义 Web Service 以及调用方式。UDDI提供了在 Web上描述并发现商业服务的框架 ,是面向 Web服务的信息注册中心的实现标准和规范。

2.3 Web 服务运行时环境

Web 服务运行时环境主要包括 SOAP 消息的侦听, SOAP 消息处理以及后端Web 服务实现的执行. 由于运行时环境的实现是基于 Java 的开发, 所以继承了 Java 自身的特点, 与平台无关, 可以运行于多个操作系统之上. 运行时环境前端采用侦听器的形式接收绑定在不同协议之上的 SOAP 消息( 如 HTTP 协议、SMTP 协议和 FTP 协议) , 当侦听器接收到不同协议的报文时, 从中析取出 SOAP 消息, 利用 Java 中的RMI 机制调用 Container Invoker 对象. 由于采用了RMI 机制, 降低了消息接收者和处理者之间的耦合度, 不同协议的侦听器可以调用相同的 Con-tainer Invoker 对象, 实现了 Web 服务运行时环境的分布式架构.

3 SOA服务设计

3.1 SOA服务中的设计

       SOA中的服务是封装成用于业务流程的可重用组件的应用程序函数。服务提供信息或简化业务数据从一个有效的、 一致的状态向另一个状态的转变。用于实现特定服务的流程并不重要 ,只要他响应您的命令并为您的请求提供高质量的服务就可以了。 因此 SOA 中服务的定义是根据软件项目要实现的目标及需求 ,将软件设计成一系列可以重复执行的独立的活动序列 , 这些活动就是服务 , 编码实现就是一个可重复地调用的服务组件。 SOA中服务的设计就是依据最小粒度原则将软件设计成一系列可重复执行的独立服务。

SOA 中强调服务应该是独立的、 自包含的请求 , 在实现时他不需要从一个请求到另一个请求的信息或状态。服务不应该依赖于其他服务的上下文和状态。 当需要依赖时 , 他们最好定义成通用业务流程、 函数和数据模型 , 而不是实现构件。当然 , 请求者应用程序需要服务调用之间的持久状态 , 但是这不应该与服务提供者分开。

3.2 SOA中服务的描述

传统的 SOA中的服务描述通常没有统一的描述语言 ,只有在同一系统中用同一种规范的描述语言才能相互明白对方服务的功能 , 因而每一个服务组件实现的服务的描述不能使大家都明白。所以传统的 SOA 中服务描述的不统一性决定异构平台的软件复用和通信非常困难 , 大家都不知道需要的服务到哪里去找 , 找到的服务又没法执行。

4 基于web的SOA服务

在理解SOA和Web服务的关系上,经常发生混淆。根据2003年4月的Gartner报道,Yefim V. Natis就这个问题是这样解释的:“Web服务是技术规范,而SOA是设计原则。特别是Web服务中的WSDL,是一个SOA配套的接口定义标准:这是Web服务和SOA的根本联系。”从本质上来说,SOA是一种架构模式,而Web服务是利用一组标准实现的服务。Web服务是实现SOA的方式之一。用Web服务来实现SOA的好处是你可以实现一个中立平台,来获得服务,而且随着越来越多的软件商支持越来越多的Web服务规范,你会取得更好的通用性。

基于 Web 服务的 SOA 要求开发者从服务集成的角度来设计应用软件。 SOA要求开发者超越应用软件来思考 , 并考虑复用现有的服务 , 或者检查如何让服务被重复利用。 SOA鼓励使用可替代的技术和方法 (例如消息机制 ) ,通过把服务联系在一起而非编写新代码来构架应用。经过适当构架后 ,这种消息机制的应用允许公司仅通过调整原有服务模式而非被迫进行大规模新的应用代码的开发 ,使得在商业环境许可的时间内对变化的市场条件做出快速的响应。

4.1 SOA信息间通信

基于 Web 服务的 SOA 的通信结构如图 4所示。服务请求者 (Web客户 )到服务提供者的绑定与服务之间是通过 Internet使用 SO AP协议 , 以 XM L消息的方式传送的 , 是松耦合的连接方式。这样可以通过方便的调用服务来强调互操作性和位置透明性。这就意味着 , 服务请求者不知道提供者实现的技术细节 , 比如程序设计语言、 部署平台等。服务请求者往往通过消息调用操作 请求消息和响应 ,而不是通过使用 API和文件格式。这个松耦合使会话一端的软件可以在不影响另一端的情况下发生改变 ,前提是消息模式保持不变。在一个极端的情况下 , 服务提供者可以将以前基于遗留代码 (例如 , COBOL 的实现完全用基于 Java 语言的新代码取代 ), 将原有遗留代码封装为Web应用服务。 当 Web客户有新需求增加时直接通过Web客户代理到 UDDI注册中心查询所需服务进行重新编排执行 , 而不像传统 SOA,面向过程及面向对象技术那样需要修改整个系统。

4.2 SOA的软件过程体系的层次结构

SOA 一共分为 7层。第一层是操作系统层 , 即服务终端层 , 包括服务提供者和服务请求者 , 这一层由不同的操作系统、 不同的信息平台组成 ; 第二层是组件层 , 不同的操作系统、 信息平台根据最小粒度划分法将商业逻辑过程或项目划分为若干独立的最小功能和逻辑服务组件模块 , 并实现这些模块 ; 第三层是服务层 ,这一层根据商业过程将独立的服务组件模块组合为复合组件 ; 第四层为商业过程层 , 这一层根据商业过程对服务组件进行编排形成服务流 ,也就是业务逻辑流程流设计 ; 第五层是表示层 , 这一层其实不属于 SOA, 但是由于 Web Service相关标准的提出及其不同平台的信息集成需要使得表示层作为一种用户接口 ; 第六层是集成层 ,也就是企业服务总线层 ,这一层通过可靠的并且智能化的路由策略、 传输协议和交换机制来实现服务的集成 ; 第七层是服务质量、 安全、 管理的监视层 , 这一层通过特定工具、 响应机制和标准来监视 SOA的运行 , 以确保服务质量。

5 结语

       将 Web Service同 SOA结合起来可以基于现有的系统投资来发展 , 而不需要彻底重新创建系统 ; 有效的利用现有资产 ; 能使不同企业的应用程序之间 , 基础架构的开发和部署变得更加一致 , 从而使基础架构成为商品化元素 ;同时服务组件的创造性重用大大缩短了设计、开发、测试和部署产品的时间 ; 开发成本也随之大大下降 ; 降低了项目开发过程中的风险 ; 业务逻辑流程流的清晰表示和更改能促进软件产品的持续改进 ; 还体现了以流程为中心的软件体系结构。因此 , 基于 Web Service的 SOA架构将引导 下 一代软件 工程革命。 本文 主要研 究了基 于 WebService 的 SOA 的整体思想、 通信结构和层次结构 , 进一步的工作将着力于服务如何表述、 业务逻辑流程流设计、服务的发现、 安全性等问题。

 

 

参考文献:

【1】面向服务架构参考模型及应用研究,李建华,陈松乔,马 华

【2】基于 Web 服务的软件服务体系结构的研究与实现,刘伯超,马晓轩,葛 声,怀进鹏

【3】基于 Web服务的面向服务 ( SOA) 架构研究,吴家菊, 刘刚 , 席传裕

      

 

posted @ 2020-05-15 16:08  九离  阅读(234)  评论(0编辑  收藏  举报