企业应用集成(Enterprise Application Integration,EAI)是每个企业都必须要面对的实际问题。面向服务的企业应用集成是一种基于面向服务体系结构(Setvice-Oriented Architecture,SOA)的新型企业应用集成技术,强调将企业和组织内部的资源和业务功能暴露为服务,实现资源共享和系统之间的互操作性,并支持快速地将新的应用以服务的形式加入到已有的集成环境中,增强企业IT环境的灵活性。
请围绕“SOA在企业集成架构设计中的应用”论题,依次从以下3个方面进行论述。
1.概要叙述你参与管理和实施的企业应用集成项目及你在其中所担任的主要工作。
2.具体论述SOA架构的内容、特点,以及你熟悉的工具和环境对SOA的支持,在应用中重点解决了哪些问题。
3.通过你的切身实践详细论述SOA在企业应用集成中发挥的作用和优势。
参考答案:1.简要介绍你参与管理和实施的大中型企业应用集成项目的基本情况,简要说明自己在该项目中的角色、所承担的主要任务及开展的主要工作。论文叙述自己参与设计和实施的系统集成项目应有一定的规模,自己在该项目中担任的主要工作应有一定的分量。
2.SOA架构。
1)SOA架构的内容
SOA架构的基本元素是服务,SOA指定一组实体(服务提供者、服务消费者、服务注册表、服务条款、服务代理和服务契约),这些实体详细说明了如何提供和消费服务。
SOA中的服务是自包含、无状态的实体,可以由多个组件组成,通过事先定义的接口响应服务请求,服务本身并不依赖其他函数和过程的状态,而用什么技术来实现服务,也不在其定义中加以限制。SOA本质上是将网络、传输协议和安全细节留给特定的实现来处理。
这些服务是可互相操作的、独立的、模块化的、位置明确的、松耦合的,以及可发现的。
在SOA架构中有3种角色(参与者)分别是服务提供者(Service Provider)、服务请求者(ServiceConsumer)和服务代理者(Service Broker)。服务提供者提供符合契约的服务,并将他们发布到服务代理;服务代理者作为存储库、目录库或票据交换所,产生由服务提供者发布的软件接口;服务请求者(服务使用者,或者终端用户应用程序)发现并调用其他的软件服务来完成业务任务。
阐述SOA的关键技术,应着重说明以下几点。
(1)SOA本身是应该如何将软件组织在一起的抽象概念。
(2)SOA是一种分布式的软件模型。
(3)SOA的主要组件包括服务、动态发现和消息。
(4)SOA模型是通过HTTP传递的SOAP消息中最常见的模型。
(5)XML和Web服务实现。
(6)Web服务建立在开放标准和独立于平台的协议的基础之上。
(7)Web服务通过HTTP使用SOAP(一种基于XML的协议),以便在服务提供者和消费者之间进行通信。
(8)服务通过WSDL(Web Service Definition Language)定义的接口来公开,WSDL的语义用XML定义。
(9)UDDI是一种语言无关的协议,用于和注册中心进行交互及查找服务。
(10)Web服务是实现SOA的具体方式之一。
(11)安全性、策略管理、可靠消息传递及会计系统。
(12)分布式事务处理和分布式软件状态管理。
(13)CORBA和IBM的MQ系统通过使用能够处理WSDL的新特征也可以参与到SOA中来。
(14)企业服务总线(Enterprise Service Bus,ESB)使用许多可能的消息传递协议来负责适当的控制流甚至还可能是服务之间所有消息的传输。
(15)面向服务的应用程序设计/开发(Service-Oriented Application Design/Development,SOAD)工具。
2)SOA架构的特点
(1)服务的封装。
(2)服务的重用。
(3)服务的互操作。
(4)服务是自治的功能实体。
(5)服务之间的松耦合。
(6)服务位置透明性。
3)实现SOA所采用的常用标准和规范
(1)XML。
(2)WSDL。
(3)SOAP。
(4)UDDI。
4)采用的工具或技术
(1)Web Service。
(2)J2EE。
(3)WebSphere、WebLogic。
(4)NET。
(5)CORBA。
(6)DCOM。
(7)其他中间件技术。
以J2EE为例子,阐述它对SOA的支持。J2EE平台通过新的JAX-RPC 1.1 API提供了完整的Web服务支持,这种API支持基于Servlet和企业Bean的服务端点。JAX-RPC 1.1基于WSDL和SOAP协议提供了与Web服务的互操作性。
J2EE 1.4平台也支持Web Services for J2EE规范(JSR 921),它定义了Web服务的部署需求并利用了JAX-RPC编程模型。
除了支持几种常见的Web服务API之外,J2EE 1.4平台还支持WS-I Basic Profile 1.0。
在J2EE 1.4下,Web服务客户可以通过两种方式访问J2EE应用程序。
客户可以访问用JAX-RPC API创建的Web服务。在幕后JAX-RPC使用Servlet来实现Web服务。
Web服务客户也可以通过Bean的服务端点接口访问无状态会话:Bean。
Web服务客户不能访问其他类型的企业。Beans。
5)在应用中重点解决的问题
(1)服务粒度的控制。
SOA系统中服务粒度的控制是一项重要的设计任务。对于暴露在整个系统外部的服务可使用粗粒度的接口,而相对较细粒度的服务接口通常用于企业系统架构的内部。虽然细粒度的接口能够为服务请求者提供更加细化和更多的灵活性,但会使交互模式较难控制,服务的一致性较差。
(2)无状态服务的设计。
SOA的服务应该是独立的、自包含的,在实现这些服务的时候不需要前一个请求的状态,也就是说不应该依赖于其他服务的上下文和状态。当某一个服务需要依赖时,可以将其定义为具体的业务流程。
注:论及一项即可,解决的问题是管理或工程实施方面的亦可。
3.结合项目实践经验,阐述SOA在系统集成中发挥的作用和优势所在。
SOA将应用程序的不同功能单元,通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点:一是它的灵活性;二是当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。
SOA系统原型的一个典型例子是通用对象请求代理体系结构(CORBA),它已经出现很长时间了,其定义的概念与SOA相似。
目前,SOA已经有所不同了,因为它依赖于一些更新的进展。这些进展是以可扩展标记语言(XML)为基础的。通过使用基于XML的语言(称为Web服务描述语言(Web Services Definition Language,WSDL))来描述接口,服务已经转到更动态且更灵活的接口系统中,比早期CORBA中的接口描述语言(InterfhceDefinition Language,IDL)功能强大得多。