软件架构设计之五:基于构件的开发

来源:互联网 发布:单反拍淘宝 编辑:程序博客网 时间:2024/05/18 00:56

一、本章要点

1)信息系统综合知识。包括构件与软件复用;构件的概念与分类;中间件技术;典型应用架构(J2EE、.NET)。

2)系统架构设计案例分析。包括中间件、应用服务器。


二、构件与软件重用

构件(component,组件)是一个功能相对独立的具有可重用价值的软件单元。

1、软件重用

1)可重用性(可复用性)是指系统和(或)其组成部分能在其他系统中重复使用的程度。

2)软件重用(软件复用)是使用已有的软件产品(如设计、代码和文档等)来开发新的软件系统的过程。

3)软件重用的形式大体可分为垂直式重用和水平式重用。

4)水平式重用是重用不同应用领域中的软件元素,如标准函数库。

5)垂直式重用是在一类具有较多公共性的应用领域之间重用软件构件。

6)Caper Jones定义了10种可能重用的软件要素,分别是项目计划、成本估计、架构、需求模型和规格说明、设计、源程序代码、用户文档和技术文档、用户界面、数据结构和测试用例。

7)系统的软件重用包括可重用的资产(构件)的开发、管理、支持和重用4个过程。

2、构件标准

1)构件是软件系统可替换的、物理的组成部分,它封装了实现体(实现某个职能),并提供了一组接口的实现方法。

2)构件应向重用者提供一些公共特性,另一方面还要提供可变的特性。

3)CORBA是由OMG制定的一个工业标准,其主要目标是提供一种机制,使得对象可以透明地发出请求和获得应答,从而建立起一个异质的分布式应用环境。

4)EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构建架构。三种类型的EJB,会话Bean、实体Bean和消息驱动Bean。

5)Microsoft的分布式DCOM扩展了COM,使其能够支持在局域网、广域网甚至Internet上不同计算机对象之间的通信。

3、构件获取

1)可重用信息具有领域特定性,即可重用性不是信息的一种孤立的属性,它依赖于特定的问题和特定的问题解决方法。

2)领域具有内聚性和稳定性,即关于领域的解决方法是充分内聚和充分稳定的。

3)领域是一组具有相似或相近软件需求的应用系统所覆盖的功能区域,领域工程是一组相似或相近系统的应用工程建立基本能力和必备基础的过程。

4)构件获取的不同途径:

  (1)从现有构件中获得符合要求的构件,直接使用或作适应性修改,得到可重用的构件。

  (2)通过遗留工程,将具有潜在重用价值的构件提取出来,得到可重用的构件。

  (3)从市场上购买现成的商业构件,即COTS(Commercial Off-The-Shell)构件。

  (4)开发新的符合要求的构件。

4、构件管理

1)构件管理的内容包括构件描述、构件分类、构件库组织、人员及权限管理和用户意见反馈等。

2)可重用技术对构件库组织方法要求如下:

  (1)支持构件库的各种维护动作,如增加、删除以及修改构件,尽量不要影响构件库的结构。

  (2)不仅要支持精确匹配,还要支持相似构件的查找。

  (3)不仅能进行简单的语法匹配,而且能够查找在功能或行为方面等价或相似的构件。

  (4)对应用领域具有较强的描述能力和较好的描述精度。

  (5)库管理员和用户容易使用。

3)构件分类方法:

  (1)关键字分类法(2)刻面分类法(3)超文本组织方法

4、构件分类

构成一个软件系统的构件可分为以下5类:

  (1)独立而成熟的构件

  (2)有限制的构件

  (3)适应性的构件

  (4)装配的构件

  (5)可修改的构件

5、人员及权限管理

构件库系统可包括5类用户,即注册用户、公共用户、构件提供者、一般系统管理员和超级系统管理员。

6、构件重用

构件库的使用者必须完成以下工作:检索与提取构件,理解与评价构件、修改构件,最后将构件组装到新的软件产品中。

1)检索与提取构件

  (1)基于关键字的检索(2)刻面检索法(3)超文本检索法(4)上述方法都基于语法匹配,理论的检索方法是语义匹配。

2)理解与评价构件

  (1)在构件库的文档中,全面、准确地说明以下内容:构件的功能与行为;相关的领知域识;可适应性约束条件和例外情形;可以预见的修改部分及修改方法。

  (2)逆向工程是理解构件的另一种重要手段。

  (3)对构件可重用的评价,是通过收集并分析构件的用户在实际重用该构件的历史过程中的各种反馈信息来完成的。包括重用成功的次数,对构件的修改量,构件的健壮性度量和性能度量。

3)修改构件

与构件相关的文档和抽象层次更高的设计信息对于构件的修改至关重要。

4)构件组装

是指将库中的构件经适当修改后互相连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。

构件组装技术大致可分为基于功能的组装技术、基于数据的组装技术和面向对象的组装技术。


三、中间件技术

为解决分布异构问题,人们提出了中间件的概念。

被业界比较认可的两种定义如下:

  (1)在一个分布式系统环境下处于操作系统和应用程序之间的软件。

  (2)中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户端服务器的操作系统之上,管理计算资源和网络通信。

1、中间件的功能

1)基本功能如下:

  (1)负责客户端和服务器间的连接和通信。

  (2)提供客户端与应用层的高效率通信机制。

  (3)提供应用层与数据库之间的互操作机制。

  (4)提供应用层与数据库之间的连接和控制机制。

  (5)提供一个多层结构应用开发和运行的平台。

  (6)提供一个应用开发框架,支持模块化的应用开发。

  (7)屏蔽硬件、操作系统、网络和数据库。

  (8)提供交易管理机制,保证交易的一致性。

  (9)提供应用的安全机制与管理功能。

  (10)提供应用的负载均衡和高可用性。

  (11)提供一组通用的服务去执行不同的功能,为的是避免重复的工作和是应用之间可以协作。

2)中间件作为一大类系统软件,与操作系统、数据库管理系统并称为“三驾马车”。

3)它的优越性体现在:缩短应用的开发周期、节约应用的开发成本、减少系统初期的建设成本、降低应用开发的失败率、保护已有的投资、简化应用集成、减少维护费用、提高应用的开发质量、保证技术进步的连续性、增强应用的生命力。

2、中间件的分类

1)中间件的任务是使应用程序开发变得更容易,通过提供统一的程序抽象,隐藏异构系统和分布式系统下低级别编程的复杂度。

2)从层次上划分,可分为底层型中间件、通用型中间件和集成型中间件。

3)底层型中间件主流技术:JVM、CLR、ACE、JDBC和ODBC等。

4)通用型中间件主流技术:CORBA、EJB和COM/DCOM等。

5)集成型中间件主流技术:WorkFlow和EAI等。

6)由于中间件需要屏蔽分布环境中异构的操作系统和网络协议,它必须能够提供分布环境下的通信服务,我们将这种通信服务称之为平台。

7)平台分为远程过程调用(Remote Procedure Call,RPC)、面向消息的中间件(Message-Oriented Middleware,MOM)和对象请求代理(Object Request Brokers,ORB)三类。

8)RPC,一个应用程序使用RPC来远程执行一个位于不同地址空间里的过程。

9)MOM,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。消息传递和排队技术有以下三个主要特点:

  (1)通信程序可在不同的时间运行(2)对应用程序的结构没有约束(3)程序与网络复杂性相隔离

10)ORB是OMG退出的对象管理结构(Object Management Architecture,OMA)模型的核心组件,它的作用在于提供一个通信框架,透明地在异构的分布计算环境中传递对象请求。


四、应用服务器

可以把应用服务器看作是一种构件服务器,它为层架构的中间层提供服务。例如,在应用服务器中运行中间层的商业逻辑组件、开发者使用应用服务器提供的中间件简化开发过程,同时大多数应用服务器还提供了内容管理、负载均衡、容错、连接池和对象持久性等功能。

1、应用服务器的作用

1)应用服务器可以解决传统的两层客户端/服务器计算中的其他不足,并且能够提供许多新的优点:

  (1)可升级性(2)分布式处理(3)可重用的业务对象(4)业务规则(5)跨平台集成

2)在具体应用中,应用服务器能够解决一下问题:

  (1)集成遗留系统和数据库(2)为Web站点提供支持(3)开发Web集成系统(4)个人计算机的部署(5)电子商务(6)性能管理

2、应用服务器的类型

1)根据技术实现的不同分为:

  (1)操作系统型(2)集成型(3)插件型(4)独立型

2)根据具体产品类型分为:

  (1)事务服务器(2)知识服务器(3)带集成开发工具的应用服务器(4)协作服务器(5)瘦服务器(6)主机访问服务器

3、应用服务器产品

1)BEA WebLogic

2)IBM WebSphere Application Server

3)Microsoft Transaction Server

4)Oracle Application Server

5)SilverStream

6)Sybase Enterprise Application Server


五、J2EE与.NET平台

1、J2EE的核心技术

J2EE平台提供了一个多层结构的分布式的应用程序模型,该模型具有重用构件的能力、基于XML的数据交换、统一的安全模式和灵活的事务控制。

1)EJB是Java服务端的构件模型。EJB容器作为EJB构件的执行环境,提供服务器端的系统级功能,包括线程管理、状态管理和安全管理。

2)JDBC是Java语言连接数据库的标准。

3)Java Servlet(Java 服务端小程序)。

4)JSP(Java Server Page,Java服务器页面)。可以认为是一种高层的Servlet,在服务端,JSP总是首先被编译成Servlet运行的。

5)JMS(Java Message Service,Java消息服务)。JMS是一个消息标准。

6)JNDI(Java Naming and Directory Interface, Java命名目录接口)。

7)JTA(Java Transaction APID,Java事务API)。

8)Java Mail API(Java 邮件API)

9)JAXP(Java XML解析API)

10)JCA(J2EE Connector Architecture,J2EE连接架构),三个关键元素:资源适配器、系统界面和通用客户界面。

11)JAAS(Java Authentication Authorization Service,Java认证和授权服务)

2、.NET平台

平台包括5个部分:

1)操作系统是.NET平台的基础。

2).NET Enterprise Servers提供了包括Application Center 2000、BizTalk Server 2000和Commerce Server 2000等一系列服务器产品。

3).NET Building Block Services指的是一些成型的服务。

4).NET Framework位于整个.NET平台的中央,为开发.NET应用提供低层的支持。

5)Visual Studio.NET是.NET应用程序的集成开发环境,它位于.NET平台的顶端。

3、比较分析

它们的目标都是为了解决构建企业计算等大型平台而出现的。

1)在开发语言的选择范围中,.NET的语言选择范围相当大;而构建J2EE应用,在语言选择方面,则只能使用Java语言。

2).NET的标准与J2EE不同,没有完全开放。

3).NET唯一可不选用Microsoft产品的就是数据库,且ADO.NET仅支持MS SQL和Access,其他数据库必须使用OLE DB访问。J2EE的选择余地则很大。

4)虽然.NET中的技术标准可以构造完整的分布式应用,但J2EE的选择范围更多。