首页 > 产品展示 > SOA专区
 
产品综述
主要产品
BOA专区
SOA专区
信息资源交换与管理平台
下载专区
 
电信行业
金融行业
交通能源行业
政府行业
军工行业
 


什么是面向服务的体系结构(SOA)?

   虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型。面向对象的模型是紧耦合的,而SOA的模型是松散耦合的。
   面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。
   对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。
   虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于 SOA 的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考虑到了系统内的对象,所以虽然 SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。SOA 系统原型的一个典型例子是通用对象请求代理体系结构(Common Object Request Broker Architecture,CORBA),它已经出现很长时间了,其定义的概念与 SOA 相似。
   然而,现在的 SOA 已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXtensible Markup Language,XML)为基础的。通过使用基于 XML 的语言(称为 Web 服务描述语言(Web Services Definition Language,WSDL))来描述接口,服务已经转到更动态且更灵活的接口系统中,非以前 CORBA 中的接口描述语言(Interface Definition Language,IDL)可比了。
   Web 服务并不是实现 SOA 的惟一方式。前面刚讲的 CORBA 是另一种方式,这样就有了面向消息的中间件(Message-Oriented Middleware)系统,比如 IBM 的 MQseries。但是为了建立体系结构模型,您所需要的并不只是服务描述。您需要定义整个应用程序如何在服务之间执行其工作流。您尤其需要找到业务的操作和业务中所使用的软件的操作之间的转换点。因此,SOA 应该能够将业务的商业流程与它们的技术流程联系起来,并且映射这两者之间的关系。例如,给供应商付款的操作是商业流程,而更新您的零件数据库,以包括进新供应的货物却是技术流程。因而,工作流还可以在 SOA 的设计中扮演重要的角色。
   此外,动态业务的工作流不仅可以包括部门之间的操作,甚至还可以包括与不为您控制的外部合作伙伴进行的操作。因此,为了提高效率,您需要定义应该如何得知服务之间的关系的策略,这种策略常常采用服务级协定和操作策略的形式。
   最后,所有这些都必须处于一个信任和可靠的环境之中,以同预期的一样根据约定的条款来执行流程。因此,安全、信任和可靠的消息传递应该在任何 SOA 中都起着重要的作用。

主要功能
SOA能够解决的问题
   下面我们再看一下SOA可适用于哪些应用场景。对于SOA来说他即可用于传统企业的IT建立和改造,也适用于基于互联网提供服务的新型企业。
   对于传统企业主要应用场景包括:EAI(Enterprise Application Intergration)和B2B(Business to Business)。EAI实现的是企业内部各IT系统的整合,可以实现企业内部流程的优化。B2B实现的企业之间协同工作环境,可以实现企业之间IT系统的整合,可以优化整个产业链的协同工作流程。 而对于基于互联网的新型企业,他们的服务对象既包括企业,也包括公众。他们提供的也是各种服务,有些服务是这些企业自己提供的,有些服务是需要其他企业来提供。如:度假安排这一服务,包括使用航空公司提供的机票服务,酒店的订房服务,车辆租赁公司的租车服务,银行的结算服务,也包括这类企业提供的会员管理,优惠折扣等服务。这些服务如何提供,由谁提供,如何进行服务的组合为最终用户提供更好的业务服务是这类企业IT系统需要支持提供的。
   对于一个SOA解决方案来说就需要能够满足这些场景的业务需求,能够解决其中的各种技术问题。需要解决的基本问题包括:
服务的描述问题,描述服务提供哪些功能,适用服务有哪些要求
服务的注册和查找问题,定义好的服务信息在哪发布,如何发布,到哪查找,如何查找 l 服务通讯方式,包括具体如何向服务发送请求,并获取应答,支持什么样的交互方式。
服务流程问题,对服务流程的灵活定制,执行监控等提供管理
服务的管理问题,服务的提供,撤销,改变这些情况如何进行管理
服务质量问题,如何保障安全性,通讯的可靠性,以及事务完整性如何保证
整个系统的效率问题,包括查找效率,通讯效率,服务运行处理效率等
系统能够提供什么样的开发工具,支持什么样的开发模式
系统运行情况是否可以及时了解,是否可以及时获取故障信息,是否可以提供运行状态信息,以利于系统的优化。
   这些问题可以分为两大类,一类是有SOA特点的问题,主要是与服务相关联的问题;另一类是IT系统通用的问题,包括各种质量属性,开发工具,管理工具等,只不过需要考虑SOA的特点。