Services-Oriented Arthitecture的概念和基础

原创 2006年05月24日 12:20:00

Services-Oriented Arthitecture的概念和基础

作者:张桂权


                 有些看起来无关紧要的技术,将对未来起十分重要的作用


—— 题    记

 
2006年是IT技术的火爆之年,由Ajax点燃的全球征战Web2.0的战火才刚开始,半路上又杀出一个SOA。4月SOA轰然登陆中国的战场了,到处是IBM 的将兵和“老百姓”“无助”的呐喊声。SOA真的来了,就在你的家门口,做为IT时代的精英,你已经做好迎接挑战的准备了? 2006年中国的软件产业仍然充满了机遇和挑战,大家拭目以待吧 !

其实,SOA和AJAX (Asynchronous JavaScript and XML)一样,都不是什么新鲜的事儿了,应该说在2002年之后,SOA这个概念就已经在IBM、Oracle等公司酝酿了。但是后来由于种种原因(我们当然不知道了),一直没有得到很好的理解和推广,直到去年11月30日IBM、BEA、Oracle、IONA、SAP、Siebel、Sybase、Xcalia和Zend科技公司联合发布了针对SOA的编程模型SCA和SDO才标志着SOA的实施进入了一个是实质性的阶段。一时间SOA成为国内外各大媒体、报刊和杂志的焦点,成为时尚技术的代名词。

SOA真的很火爆了,IBM一来中国就一直在策划和组织2006“IBM杯”中国高校SOA创新应用大赛 从而激发了中国高校学习SOA的热潮。SOA究竟是什么,它真的就有这么重要吗?会对中国的软件业带来什么的影响,能不能给绝大多数的公司带来更多的收益呢?中国的企业适合部署SOA?这无疑是大多数人想要问的问题。诚然,如今我们尚未见到哪家公司开发出来像模像样的SOA应用,但是这并不重要,从IBM等大公司以及大多数程序员对SOA的热情和SOA这全新的概念,我们可以可定SOA将是未来企业整合的最好的技术。SOA只可能带来更多的挑战和商机。

应该说SOA是计算机软件发展史上的空前的飞跃。回顾计算机软件的发展史就可以发现SOA的优越了,这是显而易见的。可以说在1995年以前,计算机软件的发展还处于混纯的时代,面向过程的编程是当时的主流思想,C/C++是那时代的主流编程语言,那时候的软件基本上是巨大的单块的程序,没有什么结构和模块可言了。直到1995年以后面向组件的软件开发才逐渐浮现,这时期颇流行的组件技术有COM/CORBA等,但是随着时间的推移人们发现,基于组件的开发仍然很复杂,尤其是就行规模庞大的项目开发时,其复杂度高实在太大了,岁着组件的增多,各组件之间的关系是太复杂了,根本就无法就行管理和维护。到2000年一种新的技术,Web Services,终于浮现了。Web Services是基于XML和HTTP平台的Web应用,主要的要素是SOAP、UDDI和WSDL。它的主要优势是基于一套自己的XML开放标准,从而使企业异构数据系统之间实现互操作。但是从整体的TOP结构来看仍然很复杂。每一个服务器被发现和定位之后,就被耦合到另一个服务器上。缺乏必要的灵活性。然而SOA是一个更高的抽象,它屏蔽了每一个服务的任何的技术细节,所以大大的提高了内部的灵活性。SOA的核心应该是企业的服务总线。这是基于开放标准的、面向消息的、高度分布式的、具有高度智能路由的整合平台。以我看,SOA把软件世界引向何我们现实生活十分接近的虚拟环境。怎细想想我们就不能发现现实生活就是一个面向服务的最好的例子。假想如果我们出去餐馆吃饭,我们只管餐馆给我们提供餐饮服务,我们根本就不会去关心“服务”内部的细节。我们去不去接受服务不会对餐馆服务本身产生任何影响,餐馆之关心对外提供服务吧。SOA就是这么棒了。下面是SOA的概念和基础知识:



一个面向服务的架构(SOA)的本质就是一个服务的集合。这些服务之间进行相互通信。通信既可以包括简单的数据转移,也可以包括两个或多个协同某些活动的服务。一些服务互联的手段/方法是必要的。


SOA不是一些新技术。过去第一个多人的SOA是基于CORBA规约的DCOM (Distributed Component Object Model, 分布式构件对象模型)或OBRS(Object Request Brokers)。然而如今最常用的方式则是基于XML和Web Services的应用构建。

Sevices request and response model

图1-1服务请求和响应模型


服务

如果一个SOA需要高效,那么我们就需要清楚的了解术语(SOA)了。一个服务是一个完美定义的,自给的并且不依赖于其它服务的内容和状态的函数。


连接

 Web 服务的技术更像SOA中的连接技术。Web Services的本质就是利用XML来创建健壮的连接。

下图说明了一个技术的SOA。它表明右端的一个“服务”客户向左端的服务提供者发送一个服务请求消息。 服务提供这回复一个应答消息给服务客户。请求和随后的应答连接通过一些特殊的方式被定义,服务客户和服务提供者都是可以知道的。其实,一个服务提供者也可以是一个服务客户。


Web Services
 
Web Services可以让你的应用成为Web应用,同时可以通过Web来查找和利用Web Services。Web Services的基础平台是XML和HTTP。它具有以下的特点:

 
Web Services是应用组件;
Web Services采用的开发的协议通信;
Web Services是自给的和自描述的;
Web Services可以通过UDDI杯发现;
Web Services可以被其它的应用调用;
Web Services的基础是XML。

 

另外,HTTP是最通用的网络协议;XML提供了一种在不同的平台和编程语言之间可以被共享的语言,同是表示复杂的消息和功能。


Web Services平台的基础元素

SOAP (简单对象访问协议 Simple Object access Protocol )

UDDI (通用描述、发现和整合 Universal Description, Discovery and Inegration)

WSDL (Web Services的描述语言 Web Services Description Language)


采用Web Services的两大好处


  应用组件的重用

  和已有的软件互联






SOAP

Web Service的基础平台是XML和HTTP。
而SOAP是Simple Object Access Protocol(简单对象访问协议)的缩写。


SOAP是一个通信协议。
SOAP是应用之间的通信协议。
SOAP是发送消息的一种格式
SOAP是平台无关的
SOAP是语言无关的
SOAP的基础是XML
SOAP很简单,而且可扩展
SOAP允许你绕过防火墙
SOAP将成为W3C的一个标准



下面是SOAP和WSDL在Web Services中应用模型:


 SOAP and WSDL

图1-2  SOAP和WSDL在Web Services中应用模型


WSDL



WSDL是基于XML的用来描述Web services和如何访问它们的语言。

* WSDL 是Services Description Language的缩写
* WSDL 采用XML编写
* WSDL 是一个XML文档
* WSDL 是用来描述Web services的语言
* WSDL 也可以用来定位Web services
* WSDL 至今还不是W3C的标准



 Using of SOAP
   




图1-3 Using of SOAP
UDDI


UDDI是一个服务目录,在这里应用可以注册和查找Web services。

 * UDDI是Universal Description, Discovery and Integration的缩写
* UDDI是Web services信息存储的一个目录
* UDDI是一个通过WSDL描述的Web服务接口的目录
 * UDDI通过SOAP通信
* UDDI已经被内建到Microsoft .NET平台。





以下是一些相关的参考资料连接

 http://www.service-architecture.com/web-services/articles/service-oriented_architecture_soa_definition.html
 http://www.service-architecture.com/web-services/articles/web_services_explained.html
 http://www.w3schools.com/webservices/default.asp
 
   

基础网络概念

摘自《鸟哥的 Linux 私房菜-网络篇》 局域网络 (Local Area Network, LAN) 广域网 (Wide Area Network, WAN) MAC (Media Ac...
  • breeze_life
  • breeze_life
  • 2013年08月07日 18:17
  • 1931

人工智能基础概念

1.背景人工智能涉及的内容非常广泛,从数学到计算机科学,有很多的基础知识需要储备,之前打算阅读一些人工智能方面的书籍,总感觉比较吃力,这里会将一些人工智能方面的基础知识做一个总结梳理。2.基础概念1)...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2017年01月04日 21:02
  • 2066

第二章、基础网络概念

你的服务器是放在网络网络上面来提供服务的,所以,如果没有网络或者是网络不通,那么你的服务器当然是英雄无用武之地啦! 此外,服务器上面的网络服务都是用来达成某项因特网的通讯协议,以提供相对应的服务而已。...
  • mybluetiankong
  • mybluetiankong
  • 2014年03月04日 07:50
  • 3029

数据库设计基本概念及知识

数据库设计步骤 需求分析:数据是什么,有哪些属性,数据和属性的特点(存储特点),数据的生命周期 逻辑设计:使用ER图对数据库进行逻辑设计 物理设计:把逻辑设计转成物理设计 维护优化:新的需求进行建表,...
  • darron_r
  • darron_r
  • 2016年03月17日 23:53
  • 850

hadoop系基础概念扫盲

hadoop版本: hadoop1.0, hadoop2.0 Hadoop 1.0由一个分布式文件系统HDFS和一个离线计算框架MapReduce组成。HDFS由一个NameNode和多个Data...
  • five3
  • five3
  • 2014年07月11日 14:24
  • 3044

计算机基础核心概念的实现简介

8位,16位或32位这样的计算机指的是什么意义?   现代计算机最基础的理论,或者说其核心设计思想就是按5部分实现:1,可运算;2,可存储; 3,可程序控制;4,可输入;5,可输出。这5部分的具体实现...
  • he428
  • he428
  • 2013年09月11日 23:43
  • 647

面向对象基础——类与对象的定义

面向对象的概念 封装性:对外部不可见。可以保护程序中的某些内容。 继承性:扩展功能的。 类与对象的关系: 定义类和对象的方法? 类图的画法:Person类图 分为三层: 第...
  • u013087513
  • u013087513
  • 2016年03月26日 11:18
  • 3375

机器学习和深度学习概念入门

作者:谭东     对于很多初入学习人工智能的学习者来说,对机器学习、深度学习、人工智能的概念和区别还不是很了解,那么接下来就给大家从概念和特点上进行阐述。先看下三者的关系。     人工智...
  • jay100500
  • jay100500
  • 2017年06月03日 11:27
  • 1338

Java面试基础概念总结

前段时间由于忙于修改论文,就好久没更新博客,现在准备重新开始记录自己的屌丝人生。哈哈 面向对象软件开发的优点有哪些? 答:开发模块化,更易维护和修改;代码之间可以复用;增强代码的可靠性、灵活性和可理...
  • zjwcdd
  • zjwcdd
  • 2016年07月05日 13:02
  • 7834

一个程序员应该具备的基础知识和概念

1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!)  2、机器语言...
  • w1158384189
  • w1158384189
  • 2014年01月20日 20:06
  • 860
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Services-Oriented Arthitecture的概念和基础
举报原因:
原因补充:

(最多只允许输入30个字)