`

SOA是英文Service-Oriented Architecture,即面向服务架构的缩写

阅读更多
  1. SOA是英文Service-Oriented Architecture,即面向服务架构的缩写。  
  2.   
  3. 这个词汇最近一两年频频出现在各种技术期刊上。但是一直以来对于SOA到底是什么没有明确的回答;SOA有什么特点?适合用于解决哪些问题?与其他的技术有什么区别与联系?Web Service和SOA又是什么关系?SOA的出现对于软件架构设计有什么影响?本文将就上面提到的这些问题,尝试根据作者自己的理解给出SOA的定义;总结出SOA特有的三个基本特征;然后以HTTP协议为例对这些特征进行解释;最后简要的说明SOA对今后软件架构设计可能带来的影响。    
  4. SOA定义     
  5. 下面是作者给SOA下的一个定义:  
  6. SOA是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。从这个定义中我希望表达的前提有下面两点:     
  7. 1) 软件系统架构:SOA不是一种语言,也不是一种具体的技术而是一种软件系统架构,它尝试给出在特定环境下推荐采用的一种架构,从这个角度上来说,它更像一种模式(Pattern)。因此它与很多已有的软件技术比如面向对象技术,是互补的而非互斥的。它们分别面向不同的应用场景,用来满足不同的特定需求。     
  8.   
  9. 2) SOA的使用范围:需求决定同时也限制功能。SOA并不是包治百病的万灵丹,它最主要的应用场合在于解决在Internet环境下的不同商业应用之间的业务集成问题。  
  10.   
  11. 在下面我们会详细讨论Internet的各种特点如何决定SOA的特点,这里我们只需要先简单回顾一下Internet环境区别于Intranet环境的几个特点:     
  12. a) 大量异构系统并存,计算机硬件工作方式不同,操作系统不同、编程语言也不同;    
  13. b) 大量、频繁的数据传输仍然速度缓慢并且不稳定;     
  14. c) 版本升级无法完成,我们根本就无法知道互联网上有哪些机器直接或者间接的使用某个服务。     
  15.   
  16. 基于上面的前提,下面就让我们一起看一下SOA的基本特征。     
  17.   
  18. SOA三大基本特征     
  19. 1 独立的功能实体    
  20. 在Internet这样松散的使用环境中,任何访问请求都有可能出错,因此任何企图通过Internet进行控制的结构都会面临严重的稳定性问题。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,如.NET Remoting,EJB,COM或者CORBA,都需要有一个宿主(Host或者Server)来存放和管理这些功能实体;当这些宿主运行结束时这些组件的寿命也随之结束。这样当宿主本身或者其它功能部分出现问题的时候,在该宿主上运行的其它应用服务就会受到影响。   SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列(Message Queue),冗余部署(Redundant Deployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。     
  21.   
  22. 2 大数据量低频率访问     
  23.   
  24. 对于.NET Remoting,EJB或者XML-RPC这些传统的分布式计算模型而言,他们的服务提供都是通过函数调用的方式进行的,一个功能的完成往往需要通过客户端和服务器来回很多次函数调用才能完成。在Intranet的环境下,这些调用给系统的响应速度和稳定性带来的影响都可以忽略不计,但是在Internet环境下这些因素往往是决定整个系统是否能正常工作的一个关键决定因素。因此SOA系统推荐采用大数据量的方式一次性进行信息交换。     
  25.   
  26. 3 基于文本的消息传递     
  27. 由于Internet中大量异构系统的存在决定了SOA系统必须采用基于文本而非二进制的消息传递方式。在COM、CORBA这些传统的组件模型中,从服务器端传往客户端的是一个二进制编码的对象,在客户端通过调用这个对象的方法来完成某些功能;但是在Internet环境下,不同语言,不同平台对数据、甚至是一些基本数据类型定义不同,给不同的服务之间传递对象带来的很大困难。由于基于文本的消息本身是不包含任何处理逻辑和数据类型的,因此服务间只传递文本,对数据的处理依赖于接收端的方式可以帮忙绕过兼容性这个的大泥坑。   此外,对于一个服务来说,Internet与局域网最大的一个区别就是在Internet上的版本管理极其困难,传统软件采用的升级方式在这种松散的分布式环境中几乎无法进行。采用基于文本的消息传递方式,数据处理端可以只选择性的处理自己理解的那部分数据,而忽略其它的数据,从而得到的非常理想的兼容性。     
  28.   
  29. HTTP协议:一个典型的SOA实现   每一项新技术都是在一些旧的技术基础上发展出来的。正如XML根本思想来自于在60年代就已经出现的早期标记性语言一样,SOA虽然这两年才出现,但是它所表达的观念应该说在网络这种分布式系统结构出现不久就已经广泛应用了。例如我们最熟悉的HTTP协议就是一个非常典型的SOA架构设计。HTTP协议的工作过程简单叙述如下:     
  30.   
  31. 1) 客户端,通常是通过浏览器,向服务器端以文本的方式发送一个请求,索取一个Web页面;     
  32.   
  33. 2) 服务器端接收到这个请求之后,根据请求的内容进行处理并且返回一个符合HTML语法的文本;     
  34.   
  35. 3) 客户端接收到服务器端的响应文本后调用本地的程序,通常还是浏览器,把返回的HTML文本的内容展现出来。     
  36.   
  37. 下面来看一下HTTP协议如何满足了SOA的特点:     
  38. * 独立的功能实体:作为服务器端的Web服务器是绝对不会因为客户端的状况变化而改变的,它总是非常稳定地按照自己的内在逻辑运行,响应外部的请求,管理自己的资源和数据。这里一个非常好的例子就是Web服务器对缓存(Cache)的处理,很多Web服务器为了提高性能都或多或少的对数据进行缓存,但是缓存数据、刷新数据这些于客户端完全无关的操作完全由服务器端独立完成,完全不受客户端的影响。     
  39.   
  40. * 大数据量低频率访问:对于一个HTTP请求来说,客户端与服务器之间访问的边界非常简单:就是一个请求,一个响应,没有任何其它的信息往返。无论客户端申请的网页上除了文字之外还有什么信息,对于客户端来说,它发出的请求只是简单的告诉Web服务器它所需要的网页的位置;至于为了生成这个网页,服务器端是否需要访问数据库,执行Servlet或者其它的CGI程序对客户端而言,都是完全透明的。  
  41.   
  42.    * 基于文本的消息传递:迄今为止兼容性最好的系统可能就是HTTP协议支撑的大部分的web应用了,我们可以在Windows平台下用IE查看互联网上一个Linux+Apache服务器上的由Perl脚本自动生成的网页。这里的关键就是所有内容都是以格式化的文本方式传递的,不管Perl脚本如何执行,只要它的输出是符合HTML规范的网页,就可以被客户端的浏览器解释。而由于不同的操作系统上对于相同的HTML的解释遵循相同的规范,因此不同操作系统下仍然能够看到一致的用户界面。   我们上面基本描述了SOA作为一种软件架构有哪些特点,下面让我们一起看看Web Service与SOA的关系。   SOA与Web Service   Web Service是就现在而言最适合实现SOA的一些技术的集合,事实上最近SOA的火爆在很大程度上归功于Web Service标准的成熟和应用的普及为广泛的实现SOA架构提供了基础。下面让我们看看Web Service中的各种协议是如何互相工作来满足SOA所需的特点的:     
  43.   
  44. * 独立的功能实体:通过UDDI的目录查找,我们可以动态改变一个服务的提供方而无需影响客户端的应用程序配置。所有的访问都通过SOAP访问进行,只要WSDL接口封装良好,外界客户端是根本没有办法直接访问服务器端的数据的。     
  45.   
  46. * 大数据量低频率访问:通过使用WSDL和基于文本(Literal)的SOAP请求,我们可以实现能一次性接收大量数据的接口。这里需要着重指出的是SOAP请求分文本方式和远程调用(RPC)两种方式,正如上文已经提到的,采用远程调用方式的SOAP请求并不符合这点要求。但是令人遗憾的是现有的大多数SOAP请求采用的仍然是远程调用(RPC)方式,在某些平台上,例如IBM WebSphere的早期版本,甚至没有提供文本方式的SOAP支持。     
  47.   
  48. * 基于文本的消息传递:Web Service所有的通讯是通过SOAP进行的,而SOAP是基于XML的,不同版本之间可以使用不同的DTD或者XML Schema加以辨别和区分。因此只需要我们为不同的版本提供不同的处理就可以轻松实现版本控制的目标。   SOA对于软件架构设计的影响   无论您现在的系统是否牵涉到基于Internet的业务集成,采用SOA推荐的架构都对提高您系统的扩展性有很大帮助,下面是在系统中引入SOA后需要在软件架构方面做出的改变:     
  49.   
  50. * 使用基于文本方式的SOAP调用,摆脱远程调用中出现的函数参数类型等与数据无关的信息,保证所有SOAP传递的都是有意义的商业数据。依赖于Schema,而不是类定义对这些数据进行解释。     
  51.   
  52. * 传统的三层Web应用将可能变成四层结构:传统意义上的商业逻辑层将被进一步划分为存放每个会话(Session)信息的客户逻辑层和与状态无关Sateless的SOA层。   
  53.   
  54.   
  55.   
  56. WSDL   
  57.   
  58. Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。  
  59.   
  60. 怎样向别人介绍你的Web service有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的Web service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的Web service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Web service。解决方法是:用机器能阅读的方式提供一个正式的描述文档。Web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述Web service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应Web service的代码。   
  61. ================================================================================================  
  62. WSDL用来提供对服务的描述 ,它的主要构成要素有五个:   
  63. 1)Types: 定义WSDL定义中所用到的数据类型,即XML Schema Types  
  64. 2)Message : 对一组消息的输入和输出参数的定义  
  65. 3)portType : 定义Web服务的操作  
  66. 4)  Binding :描述特定服务接口的协议、数据格式、安全性和其它属性.  
  67. 5)  Services : 制定特定服务的URL和提供的调用接口,包含一组端口元素 
分享到:
评论

相关推荐

    AgileEAS.NET SOA中间件数据库设计说明书(SQLite) V5.01

    这份文档详细阐述了如何在SOA(Service-Oriented Architecture,面向服务架构)环境中进行数据库设计,以满足敏捷软件工程的需求。 第一章 概述 1.1 编写目的: 此文档的主要目的是为开发团队提供一个清晰的指南,...

    SOA架构与拒绝连接异常处理

    SOA 架构是 Service-Oriented Architecture 的缩写,指的是面向服务的架构。它是一种软件架构模式,旨在实现不同系统之间的集成和互操作。SOA 架构的核心思想是将应用程序分解为不同的服务,每个服务都可以独立地...

    SOA.rar_SOA

    标题"SOA.rar_SOA"中的"SOA"是Service-Oriented Architecture(面向服务架构)的缩写,这表明压缩包内的内容可能与使用SOA设计原则构建的软件系统相关。描述中提到的是一个基于ExtJS开发的项目协作系统的实例,ExtJS...

    dictionary-user-1.8.0.zip

    "SOA"是Service-Oriented Architecture(面向服务架构)的缩写,是一种设计模式,允许通过网络在独立的软件组件之间共享功能。因此,"apisoa"很可能是一个提供了服务接口的库,使得开发者能够轻松地构建和消费服务。...

    IBM公司SOA架构师培训资料

    【IBM公司SOA架构师培训资料】是一份深入解析服务导向架构(Service-Oriented Architecture,简称SOA)的专业文档,旨在培养具有IDB(可能是IBM的缩写)背景的SOA架构师。这份绝密的培训资料包含了对IBM产品在SOA...

    cxf+spring 无包

    "soa"代表Service-Oriented Architecture(面向服务架构),这是一种设计软件系统的方法,其中服务是独立的、可重用的组件,可以通过网络进行通信。 在【压缩包子文件的文件名称列表】中只提到了"cxf",这可能意味...

    soa技术文档关于官方的规定

    SOA(Service-Oriented Architecture,面向服务架构)是一种软件设计模式,它强调将功能封装为独立的服务,这些服务可以通过网络进行交互,实现业务流程的整合。在SOA架构中,每个服务都有明确的边界,可以独立部署...

    面向 ESB 的体系结构模型汇总

    SOA(Service-Oriented Architecture),即面向服务架构,是一种设计和构建软件系统的新范式。SOA的核心思想是将应用程序的不同功能模块划分为一系列可重用的服务,这些服务通过标准化的接口进行通信,以实现松散...

    基于服务质量的面向服务数据挖掘系统研究.pdf

    文档最后提到的SOA和IT相关的缩写(如SOAIT),可能指的是面向服务架构在IT行业中的应用,以及如何通过IT架构来提升服务整体性能。例如,通过服务组合、服务重用等方式,构建更加灵活和高效的服务型数据挖掘系统。 ...

    AgileEAS.NET SOA中间件数据库设计说明书(MySql) V5.11

    这份文档旨在规范和指导开发人员在构建基于.NET的SOA(Service-Oriented Architecture,面向服务架构)应用时,如何有效地利用MySQL数据库来支持中间件的运行。 第一章概述部分,主要介绍了编写这份说明书的目的、...

    SOA架构搭建SSM框架的网上商城系统

    在"SOA(Service-Oriented Architecture)架构搭建SSM框架的网上商城系统"中,SOA是一种面向服务的设计理念,强调将业务功能抽象为独立的服务,这些服务之间通过标准的接口进行通信,以实现系统的松耦合和可重用性。...

    封面模板.doc封面模板.doc

    "SOA"是Service-Oriented Architecture(面向服务架构)的缩写,是一种软件设计策略,它提倡将应用程序构建为可独立部署的服务集合,这些服务之间通过标准协议进行通信。"Getting started with Tuscany——— ...

    SOA Using

    【标题】:“SOA Using”通常指的是使用某种技术或框架实现面向服务架构(Service-Oriented Architecture, SOA)的方法。SOA是一种设计原则,它提倡将复杂的系统分解为独立、可重用的服务,这些服务通过标准接口进行...

    istack-commons-soimp-2.19.zip

    首先,"istack-commons-soimp-2.19.zip"很可能包含了一组通用的Java库,"soimp"可能是"SOA (Service-Oriented Architecture) Import/Export"的缩写,这通常用于在不同服务之间进行数据交换和互操作性。SOA是一种设计...

    《软件架构设计》

    “11EASoSSoS”可能指的是企业应用集成(Enterprise Application Integration, EAI)和面向服务的架构(Service-Oriented Architecture, SOA),这是构建企业级应用和系统集成的两种主要方法。 “SystemFramework”...

    软件开发讲座报告.pdf

    - SOA(Service-Oriented Architecture):面向服务的架构,是一种设计方法。 - Struts1.4、Struts2、Spring、Hibernate:这些都是流行的Java Web开发框架,用于构建Web应用。 - Tapestry:一种基于组件的Java ...

    soaoffice项目开实例源码

    首先,我们要理解SOA(Service-Oriented Architecture,面向服务架构)的概念。SOA是一种设计方法论,它提倡将业务功能作为独立的服务,这些服务之间可以通过标准接口进行通信。在SOAOffice项目中,这些服务主要涉及...

    EAI.ppt

    在本文中,我们将深入探讨EAI的概念、架构以及与SOA(Service-Oriented Architecture,面向服务的架构)的关系。 【总体功能】EAI的主要目标是构建一个集成的业务环境,允许各个部门或系统之间无缝协作。例如,EAI...

Global site tag (gtag.js) - Google Analytics