口袋微店怎么开通:SOA

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 15:38:47
 

SOA之一——计算环境的演变历程

分类: SOA相关

     计算环境的演变经历了若干个阶段:

      1、主机时代。其特点是,几乎所有的计算功能和系统的组成部分,都包括在一台机器里,很多人分时的共同使用一台计算机。各个主机之间的数据、功能很难共享和相互调用。

      2、客户/服务器计算环境。在20世纪80年代,随着PC的繁荣,计算环境发生很大的变化。通过局域网相互连接的计算设备构成客户/服务器计算环境,计算资源和数据资源被适当地分割,客户和服务器通过网络协议、远程调用或消息等方式来相互协作,完成计算。

      3、基于多层架构和中间件的分布式计算环境。为了满足更高的可伸缩性需求,多层架构出现,数据和计算功能分布多样化,分布在多台计算机,与企业中原来已经存在的计算环境,尤其是主机及其遗留系统之间的集成也变得越来越重要。中间件迅速发展,开始出现分布式对象、组件和接口等概念,用于在计算环境中更好地分割运算逻辑和数据资源。计算环境中不同部分之间的交互,也从原有相对低层的网络协议、远程调用和消息机制的基础上,发展到支持分布式对象、组件和接口之间的交互,这种交互在名字服务(Naming Service)等的支持下,通常是位置透明的。但由于缺乏普遍的标准化支持,很难做到技术透明,系统是紧耦合的。

      4、面向服务的计算环境。也就是基于标准、开放的互联网技术,以服务为中心的计算环境。这是一个以服务为基本单位和抽象手段的世界。随着互联网(Internet)的发展,开放和标准的网络协议被普遍支持,所有底层计算平台都开始支持这些标准和协议,这导致一个计算环境内部和各个计算环境之间交互的藩篱被打破。数据和功能的表示与交互在XML、WEB服务(Web Service)技术与标准的基础上,保证了通用性和最大的交互能力,这使得计算环境发展到一个全新的阶段--基于标准、开放的互联网技术的计算环境。在这样的计算环境中,各个部分可以采用异构的底层技术,它们使用XML来描述和表示自己的数据和功能,采用开放的网络协议(如HTTP)来握手,在此之上,基于Web服务来互操作和交换数据。在这里,一个很重要的新概念是"服务" ,它是一个自包含的功能,使用者通过明确定义的接口(契约)来与一个服务交互,这个接口的描述基于WSDL(Web Service Description Language)这样的开放标准。对象和组件重在表示一个事物本身的组成部分和相互关联(也就是WHAT"THINGS"ARE的问题),而服务则表示一个事物做什么(也就是WHAT"THINGS"DO的问题)。Web服务是实现服务的技术手段,就如同各种编程语言中的对象是实现对象的技术手段,J2EE中的EJB是实现组件的技术手段一样。


 

SOA之二——程序设计语言的发展历程

分类: 程序设计与语言 读书笔记 SOA相关2009-01-28 22:15 1095人阅读 评论(1) 收藏 举报

       计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。 汇编语言源程序必须经过汇编,生成目标文件,然后执行。高级语言源程序可以用解释、编译两种方式执行。

      在高级语言的程序设计中,我们又可以分为几个阶段:面向过程的编程、面向对象的编程、面向组件的编程以及标准化的Web Service的编程。

      1.面向过程的编程

  面向过程的语言可以说是最早出现的大众化的编程语言,结构化程序设计是程序设计发展史中一个比较重要思想C语言是最典型的代表,是一种紧密耦合的软件语言技术,用C语言编写的应用程序完成一大堆函数的编写,整个应用程序依赖于一些预先定义的全局变量。函数的可重用性很差。面向过程的最小抽象单位的“函数”。

  2.面向对象的编程

  面向对象编程的缩写是OOP。如C++、Java、C#等,将面向过程的相关的函数封装起来,消除全局变量,形成能够独立调用的对象。相对于面向过程的含有全局变量的编程,其耦合性已经降低。对象可以重用,可以继承和扩展。基于对象的各种设计模式也随之产生。然而对象之间还有相互调用的现象。还存在一定的耦合性。这些对象只能本地调用,不能远程调用。OO的是以对象作为基本的抽象单位,一个对象可以有自己的数据和职责。

  3.面向组件的编程

  面向组件编程的缩写是COP。COP是对OOP的补充,帮助实现更加优秀的软件结构。将面前对象的程序进行封装,定义一些接口让外部调用。如J2EE(EJB)CORBA、DCOM等。组件的粒度可大可小,需要取决于具体的应用。

      COP是对一种组织代码的思路,尤其是服务和组件这两个概念。比如Spring框架中,就采用了COP的思路,将系统看作一个个的组件,通过定义组件之间的协作关系(通过服务)来完成系统的构建。这样做的好处是能够隔离变化,合理的划分系统。而框架的意义就在于定义一个组织组件的方式。      

  COP最初的动机是为了实现远程分布式的调用。它有接口类,另外专门有实现方法类,因为它要事先定义接口类,客户端调用的也是接口类。接口类和接口实现类之间实现了一定程度的解耦。也就是说,客户端调用接口类时,不需要知道接口类是如何具体实现的,不需要引用服务器端的实现类。

      在COP中有几个重要的概念:
      服务:服务(Service)是一组接口,供客户端程序使用。例如,验证和授权服务,任务调度服务。服务是系统中各个部件相互调用的接口;

      组件:组件(Component)实现了一组服务,此外,组件必须符合容器订立的规范,例如,初始化,配置、销毁。组件不是一个新的概念,Java中的javaBean规范和EJB规范都是典型的组件。组件的特点在于它定义了一种通用的处理方式。例如,JavaBean拥有内视的特性,这样就可以通过工具来实现JavaBean的可视化。而EJB规范定义了企业服务中的一些特性,使得EJB容器能够为符合EJB规范的代码增添企业计算所需要的能力,例如事务、持久化、池等。

      所以,组件比起对象来的进步就在于通用的规范的引入。通用规范往往能够为组件添加新的能力(就像上面所讨论的),但也给组件添加了限制,例如你需要实现EJB的一些接口。以下我们将讨论组件的一些相关问题:

      组件的粒度:组件的粒度是和系统的架构息息相关的。组件的粒度确定了,系统的架构也就确定了。在小规模的软件中,可能组件的粒度很小,仅相当于普通的对象,但是对于大规模的系统来说,一个组件可能包括几十,甚至上百个对象。

                
  面向组件编程需要和特定的程序实现语言绑定。传输协议也是非标准化的,传输协议的不一致,导致各种不同组件之间无法互相调用,例如J2EE和DCOM无法互相调用。

     

      4.面向服务的编程

  面向服务的编程,英文简写为SOP,主要是面向Web Service的编程。面向Web Service的编程采用标准化的SOAP传输协议,不同厂商实现的Web Service之间可以相互调用。如J2EE所提供的Web Service服务可以被.NET来调用。反过来,.NET也可以调用J2EE所提供的Web Service服务。

  作为Web Service,客户端不需要知道服务器端是如何实现的,服务器端所用的是什么样的程序语言,客户端也不需要安装特定的Stub程序。

  从上面可以看到,IT程序语言发展的过程实际上是一个逐步降低耦合性的过程,也是一个接口和接口实现之间逐渐分离的过程。

  但是Web Service的SOAP传输协议尽管是一种标准的传输协议,但是它毕竟还是一种特殊的传输协议,一种特定的技术。Web Service并不支持其他的传输协议,如RMI等。所以说Web Servcie还是和特定的SOAP技术绑定在一起的。


 

SOA之三——面向服务的计算环境及面向服务的计算环境的一般特征

分类: 读书笔记 软件工程 SOA相关2009-02-11 22:03 478人阅读 评论(0) 收藏 举报

计算环境由计算机、相关的软件平台和以及连通这些计算机和相关软件平台网络组成。不同的计算环境有不同的计算风格和编程模型,由一些特定于该计算环境的技术来支撑。
      在面向服务的计算环境(其实更准确的说,是面向服务架构的计算环境)中,系统可以是高度分布、异构的。它一般包括服务运行时环境(Service Runtime)、服务总线(Service Integration Infrastructure)、服务网关(Service Gateway)、服务注册库(Service Registry)和服务组装引擎(Service Choreography Engine)等。
     其实,服务总线、服务注册表和业务服务编排都是面向服务架构的基本模式之一。

 

服务运行时环境提供服务(和服务组件)的部署、运行和管理能力,支持服务编程模型,保证系统的安全和性能等质量要素。
       服务总线提供服务中介的能力,使得服务使用者能够以技术透明和位置透明的方式来访问服务。服务注册库支持存储和访问服务的描述信息,是实现服务中介、管理服务的重要基础;而服务组装引擎,则将服务组装为服务流程,完成一个业务过程;服务网关用于在不同服务计算环境的边界进行服务翻译,比如安全。

面向服务的计算环境是开放的、标准的,由如下图所示的技术标准协议栈所定义和支持。例如,Transport层的HTTP协议,Service Description层的WSDL,Business Process层的WS-CDL等,与Policy相关的WS-Policy。本书后面的章节将讨论所有统称为WS-*的标准和协议。

我们知道,面向服务的计算机环境是和传统的主机模式的计算环境、客户机-服务器模式的计算环境、基于组件的计算环境、基于分布式网络的计算环境和混合Web Service的计算环境区别的,那么到底什么才是面向服务的计算环境呢?

1、看在整个IT生命周期中(包括应用的构建和运营)和各个阶段,是否是以服务为中心的,服务是否为第一位的核心概念;
       2、IT是否和业务对齐,IT系统是否足够的灵活,也就是说IT对业务需求和业务需求的变化的响应是否可以达到业务人员的期望;
       3、IT系统本身是否是松散耦合的。松散耦合是指信息的消费者和信息的提供者之间是否是松散耦合的,如果以服务为中心的话,那其实就是指的是,服务的消费者和服务的提供者之间是否是松散耦合的。这包括:在服务契约的设计上,是否通过抽象设计减少了技术依赖性;在服务调用层面上,是否通过Web Service技术保持服务调用的平台的中立性。
       4、功能的暴露或者说功能的接口是否是粗粒度的。
       5、位置和传输协议是否透明。所谓位置的透明,就是指不论服务组件的实际位置URL如何变化,客户端的调用程序的URL都不需要改变。同理,目前的服务组件如EJB、Web Service、JMS都只能接收特殊的传输协议,如EJB只接收RMI的传输协议,Web Service只接收SOAP的传输协议,JMS组件只接收JMS的传输协议。这样导致客户端调用这些服务组件时,也必须采用相应的传输协议才能调用,一旦组件的传输协议改变了,客户端也必须要修改相应的传输协议。这就是传输协议的不透明。所谓传输协议的透明,就是指不管服务组件的传输协议如何变化,客户端的调用程序的传输协议都不需要改变。
       SOA的思想通过服务总线对目前的组件的接口进行进一步的封装(新的SCA编程模型将可以自由绑定传输协议),将能保证服务的位置的透明和传输协议的透明。下面两副图展示了位置和传输协议都是不透明的基于组件的调用方式和基于服务总线技术的传输协议和位置透明的调用方式。 
                              图:传输协议和位置都不透明的基于组件的调用方式

                      图:基于服务总线技术的传输协议和位置透明的调用方式