原文地址:http://blog.csdn.net/ichaos/archive/2008/01/20/2054377.aspx编程
SOA的概念是Gartner在1996年提出来的,并于2002年12月进一步提出SOA是“现代应用开发领域最重要的课题”。从Gartner的观点来看,SOA是一种新的企业应用架构和企业IT基础架构,主要是企业IT基础架构的思想、方法、风格、工具的一个总称。
更多的关于SOA的定义:
IBM:
SOA是一种能够不断进化的方式,用它来构建以解决业务问题为中心的信息技术(IT)系统。
微软:
A loosely-coupled architecture designed to meet the business needs of the organization.
OASIS:
Service Oriented Architecture (SOA) represents a collection of best practices principles and patterns related to service-aware, enterprise-level, distributed computing.
一个流传很广的定义:
SOA,面向服务的体系结构(service-oriented architecture)是一个组件模型,它将应用程序的不一样功能单元(称为服务)经过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操做系统和编程语言。这使得构建在各类这样的系统中的服务能够以一种统一和通用的方式进行交互。
虽然到目前为止,关于SOA尚未一个统一的、被普遍承认的定义,可是SOA的核心理念倒是一致的:
一、 SOA是以业务为导向的,强调业务领域的分析和建模。
二、 SOA不是一个产品,甚至不是一项技术。本质上SOA是一种思想,一种新的IT系统架构思想。
三、 SOA是一个不断进化的过程,是一系列最佳实践的集合。
四、 SOA不是新生事物。将这种技术运用于商业能够追溯到算盘时代。《SOA概念、技术与设计》一书中有以下关于面向服务的类比:
让咱们来看一看普通的国际化大都市,其中已经存在许多面向服务的业务。任何一个公司都是面向服务的,由于每一个公司所提供的独特服务都能被多个消费者使用。全体业务组成一个业务群落。业务群落的意义在于,不禁单个业务插口提供全部的服务。经过将群落分解为特定的、独立的插口,就能够得到一个分布式的插口环境。
理想的SOA:
拥有一个松耦合的、高度分布的应用架构不是今天才有的梦想,可是SOA则是第一次让人们在拥有这种梦想的同时摆脱了专有、复杂和昂贵的代价。
SOA的理想是,在开放的标准体系下,全部的应用能够相互链接,传递信息。新的应用能够很快链接到原有的SOA体系中;而旧的应用也能够加入到新的SOA架构里。就像计算机里的系统总线,全部的设备均可以连上去来交换数据,SOA力图让全部的应用在SOA的理想国中相互无障碍地对话。在具体实现上,SOA将企业应用切分红小的应用模块,每个应用模块在SOA理想国中被视为一个服务,企业能够将各类服务根据须要进行组合,从而完成一项业务需求。
SOA理论基础
解决大型问题的逻辑是:若是它可以分解成更小的、相关的片断集合,那么它就更易于构造、实现和管理。其中的每一个片断都表明了这个问题的一个关注点或一个特定部分。
“面向服务”就是以这种逻辑来解决IT系统架构问题的,它表明了分离关注点的一种方法论,能够根据不一样的业务目标而应用于不一样的场景。因此有人提出以下论点:“关注点分离是SOA的核心原则。”
关于SOA的比喻:鱼香肉丝
(来源:IBM中国研发中心Web2.0首席架构师、资深技术主管毛新生)
你到餐馆去吃鱼香肉丝,这是一个服务,作鱼香肉丝就属于业务处理能力,但是你们作的鱼香肉丝是不同的,也就是Quality of Service,你们都可以作鱼香肉丝,这是一个接口层次上的问题,可是Quality存在不一样,并且我对这个餐馆表示不满的时候,餐馆经理就出来处理问题了,是从新作一份仍是免单了,这如何解决问题就是业务策略。
这样一个简单的事情它其实代表了在过去代码的时代所没法表达的内容。一个业务活动它有它的业务处理能力,有它的功能,同时有跟这个功能有关系的一些关于 Quality的要求,还有一些处理各类各样事件的业务策略,全部的这些东西融合在一块儿,他会出如今服务的描述里面,还会组装在一个形式化描述的业务流程 里面,这些东西都是业务人员能够懂的,透过这样一个东西他就天然而然的将下面的一些应用和各类各样的数据整合在了一块儿,与此同时,咱们也提供了人工活动的 支持,这种人工活动的支持也是经过服务的接口来描述。从而使得人员、数据、应用就能够很是无缝的相互协做了。架构
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ichaos/archive/2008/01/20/2054377.aspx编程语言