问答题 阅读以下关于企业应用集成的叙述,根据要求回答问题。
[说明]
某大型企业随着信息化的进展,积累了许多异构的遗产信息系统,这些系统分别采用J2EE、.NET等技术进行开发,分布在不同的地理位置,采用不同的协议进行数据传输。企业要求集成后的系统能够实现功能整合,并在组织现有功能的基础上提供增值服务。FT软件开发公司承接了某大型企业应用系统集成任务。为了按时保质完成任务,选择合适的企业应用集成方法和架构非常重要。项目组在讨论方案时,提出了两种集成思路。
(1)魏工建议采用传统的应用集成方法,将应用集成分为多个层次,并采用消息代理中间件连接遗产系统。
(2)陈工建议采用基于SOA的方法进行应用集成,将现有遗产系统采用Web Service的方式进行包装,暴露统一格式的接口,并采用企业服务总线(ESB)进行连接。
项目组仔细分析比较了两种方案的优点和不足后,认为魏工和陈工的建议都合理,但是结合当前项目的实际情况,最后决定采用陈工的建议。

问答题 [问题1]
请分析比较两种集成方案的优点和不足,将表中的(1)~(6)空缺处的内容填写完整。
[*]
【正确答案】应用集成是指两个或多个应用系统根据业务逻辑的需要而进行的功能之间的相互调用和互操作。应用集成需要在数据集成的基础上完成。应用集成在底层的网络集成和数据集成的基础上实现异构应用系统之间语用层次上的互操作。它们共同构成了实现企业集成化运行最顶层会聚集成所需要的,技术层次上的基础支持。应用集成模式包括集成适配器、集成信使、集成面板和集成代理4种,每种应用集成模式都是对具有业务功能依赖关系的多个应用之间互操作实现方法的总结。在具体应用中,集成模式可能以某种变形(这是一种扩展集成模式的主要方式)的形式出现,这些变形可能不仅仅只是一种模式的实例化,也可能是一种具有广泛适用性的集成方式。
通常,应用集成主要采用点对点的紧耦合方式。这种集成方式虽然不需要对应用系统做较大的改动,但用这种方式集成的系统缺乏必要的柔性,不能适应业务系统快速重构的需求。随着应用软件系统设计和实现过程中标准化程度的不断提高,系统的开放性(可配置性、可扩展性)越来越好,组件化的系统实现及松散耦合的应用集成方式逐渐成为构建企业业务处理系统的主流。其中,松散耦合是实现系统柔性的基础。
在陈工建议的集成方案中,Web Service是一种可以接收从Internet或Intranet上传送的请求、轻量级的独立的通信技术,它允许网络上的所有系统相互间进行交互。Web Service的3个基本技术分别是UDDI、WSDL和SOAP,它们都是以XML为基础定义的。在Web服务体系中,使用WSDL来描述服务,UDDI来发布和查找服务,而SOAP用来执行服务调用。
面向服务架构体系结构(SOA)的几个关键特性是,它是一种粗粒度、松耦合的服务架构,服务之间通过简单、精确定义接口进行通信,不涉及底层编程接口和通信模型。SOA可以根据需求通过网络对松耦合、粗粒度的应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA技术将应用程序的不同功能单元通过一些良好定义的接口联系起来,并且接口采用中立的方式进行定义,它独立于实现服务的硬件平台、操作系统和编程语言。这样可以使得构建的服务以一种统一和通用的方式进行交互。
企业服务总线(ESB)是对消息中间件的发展,采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用程序之间在消息、事件和服务的级别上动态地互连互通。ESB的基本核心功能包括:①提供位置透明性的消息路由和寻址服务;②提供服务注册和命名的管理功能;③支持多种消息传递范型;④传输协议转换;⑤支持多种数据格式及其相互转换;⑥提供日志和监控功能等。
ESB所提供的基于标准的连接服务,将应用中实现的功能或者数据资源转化为服务请求者能以标准的方式来访问的服务;当请求者来请求一个服务时,ESB中这种中介转化过程可能简单到什么也没有,也可能需要很复杂的中介服务支持,包括动态地查找和选择一个服务,以及消息的传递、路由和转换、协议的转换。这种中介过程,是ESB借助于服务注册管理及问题域相关的知识(如业务方面的一些规则等)自动进行的,不需要服务请求者和提供者介入,从而实现了解耦服务请求者和提供者的技术基础,使得服务请求者不需要关心服务提供者的位置和具体实现技术,双方在保持接口不变的情况下,各自可以独立地演变。
如果企业只是进行小规模或较浅层次的“战术”级应用集成,采用传统的集成方式即可较好的完成任务。但是如果企业想从集成系统的灵活性和可扩展角度考虑,能够持续地集成已有信息系统,并进行“战略”意义上的长远规划,那么面向服务的架构无疑是一种更加优越的方法。采用SOA架构思想进行应用集成,企业现有的应用系统都可以看做广义上的服务提供者,因此(1)空缺处应该填写“将现有系统看做抽象的服务提供者,集成方法统一明确”。
传统的应用集成方式往往采用分层的方式对待整个集成活动,因此在(2)空缺处应该填写“不同层次的集成方法关注点不同,功能组合方面能力较弱”。而采用SOA架构的应用集成方案中,(3)空缺处应该填写“强调功能的暴露与服务的组合,便于提供增值服务”。
对于(4)空缺处,传统的集成方式大多会采用中心辐射型的集成架构,系统的耦合程度较高。而对于(5)空缺处,SOA架构的ESB采用总线结构模式,简化了应用之间的集成拓扑,系统的耦合度较低。
采用SOA架构的应用集成方案通过源白实践的模式,提供了基于标准的通用连接服务,使得服务请求者和服务提供者之间可以以松散耦合、动态的方式交互,从而在不同层次上使得解决方案是一个松散耦合、灵活的架构。因此在(6)空缺处应该填写“集成系统具有模块化、松耦合的特点,可扩展性较强”。
整理以上分析内容,可得到两种集成方案各自的优点和不足,如下表所示。
【答案解析】
问答题 [问题2]
企业数据的分布性和异构性是应用系统方便访问企业数据和在企业数据之上提供增值服务的主要障碍。基于SOA的企业集成通过信息服务提供集成数据的能力,针对该企业的集成实际情况,请用300字以内的文字列举3种基于SOA的企业集成中的“数据整合——信息服务”,并给出简要说明。
【正确答案】企业数据的分布性和异构性是应用系统方便访问企业数据和在企业数据之上提供增值服务的主要障碍。数据集成和聚合技术在这种背景下诞生,用于提供对分布式数据和异构数据的透明访问。以服务为中心的企业集成通过信息服务提供集成数据的能力,目前主要包括如下集中信息服务。
(1)联邦服务(Federation Service):提供将各种类型的数据聚合的能力,它既支持关系型数据,也支持XML数据、文本数据和内容数据等非关系型数据。同时,所有的数据仍然按照自己本身的方式管理。
(2)复制服务(Replication Service):提供远程数据的本地访问能力,它通过自动的实时复制和数据转换,在本地维护一个数据源的副本。本地数据和数据源在技术实现上可以是独立的。
(3)转换服务(Transformation Service):用于数据源格式到目标格式的转换,可以是批量的或者是基于记录的。
(4)搜索服务(Search Service):提供对企业数据的查询和检索服务,既支持数据库等结构化数据,也支持如PDF等非结构化数据。
【答案解析】
问答题 [问题3]
结合你的系统架构设计经验,请用300字以内的文字简要说明FT公司项目组在对该企业构建SOA架构时,除了注意原有系统架构中的集成需求之外,还需要在服务构建时重点关注哪些问题。
【正确答案】当基于SOA来构建一个企业级的系统架构时,一定要注意对原有系统架构中的集成需求进行细致的分析和整理。而关于系统中最重要的元素,也就是SOA系统中服务的构建有两点需要特别注意的地方:①是对于服务粒度的控制;②是对于无状态服务的设计。
SOA系统中服务粒度的控制是一项十分重要的设计任务。通常来说,对于将暴露在整个系统外部的服务推荐使用粗粒度的接口,而相对较细粒度的服务接口通常用于企业系统架构的内部。从技术上讲,粗粒度的服务接口可能是一个特定服务的完整执行,而细粒度的服务接口可能是实现这个粗粒度服务接口的具体的内部操作。虽然细粒度的接口能为服务请求者提供更加细化和更多的灵活性,但同时也意味着引入较难控制的交互模式易变性,也就是说服务的交互模式可能随着不同的服务请求者而不同。如果暴露这些易于变化的服务接口给系统的外部用户,就可能造成外部服务请求者难于支持不断变化的服务提供者所暴露的细粒度服务接口;而粗粒度服务接口保证了服务请求者将以一致的方式使用系统中所暴露出的服务。虽然SOA并不强制要求一定要使用粗粒度的服务接口,但是建议使用它们作为外部集成的接口。通常,可以使用业务流程(BPEL)来创建由细粒度操作组成的业务流程的粗粒度的服务接口。
SOA系统架构中的具体服务应该都是独立的、自包含的请求,在实现这些服务的时候不需要前一个请求的状态,也就是说服务不应该依赖于其他服务的上下文和状态,即SOA架构中的服务应该是无状态的服务。当某一个服务需要依赖时,最好把它定义成具体的业务流程(BPEL)。在服务的具体实现机制上,可以通过使用EJB组件来实现粗粒度的服务。通常,可以利用无状态的Session Bean来实现具体的服务,如果基于Web Service技术,就可以将无状态的Session Bean暴露为外部用户可以调用到的Web服务,也就是把传统的Session Facade模型转化为EJB的Web服务端点。这样,就可以向Web服务客户提供粗粒度的服务。
如果要在J2EE的环境下(基于WebSphere)构建Web服务,Web服务客户可以通过两种方式访问J2EE应用程序。客户可以访问用JAX-RPC API创建的Web服务(使用Servlet来实现);Web服务客户也可以通过EJB的服务端点接口访问无状态的Session:Bean,但Web服务客户不能访问其他类型的企业Bean,如有状态的Session Bean、实体Bean和消息驱动Bean。对于后一种访问方式(公开无状态EJB组件作为Web服务)的优势在于,基于已有的EJB组件,可以利用现有的业务逻辑和流程。在许多企业中,现有的业务逻辑可能已经使用EJB组件编写,通过Web服务公开它可能是实现从外界访问这些服务的最佳选择。EJB端点是一种很好的选择,因为它使业务逻辑和端点位于同一层上。另外,EJB容器会自动提供对并发的支持,作为无状态Session Bean实现的EJB服务端点不必担心多线程访问,因为EJB容器必须串行化对无状态会话Bean任何特定实例的请求。由于EJB容器都会提供对于Security和Transaction的支持,因此Bean的开发人员可以无须编写安全代码及事务处理代码。性能问题对于Web服务来说一直都是一个问题,由于几乎所有EJB容器都提供了对无状态会话Bean群集的支持,以及对无状态Session Bean池与资源管理的支持,因此当负载增加时,可以向集群中增加服务器数目。Web服务请求可以定向到这些不同的服务器,同时由于无状态Session Bean池改进了资源利用和内存管理,使Web服务能够有效地响应多个客户请求。由此可以看到,通过把Web服务模型化为EJB端点,可以使服务具有更强的可伸缩性,并增强了系统整体的可靠性。
【答案解析】