何为营造式开拓?

构件基础知识

  1. 一、什么是构件?

    软件构件是一个高内聚的、通过一组约定的接口完成明晰的功能、符合业界认可的模型标准(如COM/.Net,Corba,WebService等)的、可复用软件包,可在一个体系结构周境下被直接或经适当调整后组装到软件系统中而成为其组成部分。一个构件也可包含若干个子构件。一个构件也可以是Web服务方式的构件。
    构件(component)是可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的对象类、类树、一些功能模块、软件框架
    (framwork)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(Pattern)等。构件分为构件类和构件实例,通过给出构件类的参数,生成实例,通过实例的组装和控制来构造相应的应用软件,这不仅大大提高了软件开发者的开发效率,也大大提高了软件的质量。

  2. 二、软件构件背景知识

    软件行业发展的数十年中,程序编写的模式和风格都已发生了很大的变化。最早的程序员是通过直接编写仅仅由0和1组成的机器代码来”告知”机器运行程序的。慢慢的,较高级的用以适应各种不同需求的语言如COBOL、FORTURN不断产生,直至今日,我们见到的编程语言已有数百种之多。其间最大的变化来自
    20世纪80年代末90年代初,我们所谓”真正”的高级语言的诞生和”库”及”模块化程序”的变成方法成就了这一巨大变化。这个时期我们称之为
    Microsoft公司的”QuickBasic”和Borland公司的”Turbo
    Pascal”的时代。同时,一些适应市场需求应运而生的出售基于代码级的功能库的第三方软件提供商业在迅速成长。
    1991 年,Microsof公司的”Visual
    Basic”(VB)的诞生对编程世界产生了翻天覆地的强烈冲击。由于VB是架构在Windows平台上的,所以编程者可以调用系统的动态连接库
    (DLLs),这种动态连接库就是早期的构件雏型。同时编程者还可以使用我们称之为”VB
    Extention”(VBX)的预先做好的功能模块集。也正是因为有了VB,程序员才第一次真正的将自己的应用程序已最直接的方式和编程的操作环境无缝连接。
    应用开发的模式也随之发生了变化。新的程序设计和编写的方式使得开发人员可以通过少量的代码编写实现对已有的功能块的重用和组合来来实现应用的需要。大家小时候一定玩过搭积木的游戏,用各种积木块可以搭出一座我们满意的城堡来。现在,编写程序也变得这么简单了。我们程序员们一行行的编写代码的时代已经延续30年,现在,变革的时候到了,我们现在只需要”组装”已有的功能模块就可以完成应用的开发工作了。这”已有的功能模块”就是我们通常所说的”构件”。

  3. 三、构件相关概念

    1. 软件构件的种类

      1. 黑盒和白盒构件

        威尼斯官方网站,原代码构件是白盒构件,可读,程序员在使用时可以直接修改。而黑盒构件则是已编译或二进制格式,独立且不能直接修改。所有的程序员通过描述构件功能的文件和出版的接口了解这些构件。接口包括可视的属性或者新添的值。然后,方法允许构件作事先定义的动作。最后,事件,在构件通知程序员事件发生时引发。使用黑盒构件优于使用白盒构件。黑盒构件不能被程序员直接修改。扩充功能通过创建一个新的”包裹”构件包装和扩展已存在构件来完成。这使得构件原有功能完整无缺,以至于升级、错误修改等事务可以由原始开发者完成。如果你要是想改变白盒构件的原代码,你会得到一个新代码流,那么旧的错误在新的构件实例中就不容易修改,并不断传播。

      2. 商业构件(COTS)

        在90年代早期,一种新的构件产生了。它们是市场上可以购买的构件,也可以称之为开放市场构件。开放市场构件是可以从货架上买走的可重用构件,例如
        COM,Java,你可以购买它但不用购买支持、集成或其它类型的服务,的确是”即插即用”的构件。例如,MicroHelp公司的VBTools,基于
        Microsoft Visual
        Basic构件模型(或VBXs),该模型后来成长为基于COM的构件(OCXs),而现在成了基于.NET的构件。现在的开放市场构件以很多了,可以让程序员工作变得简单一些,并让他们专心于完成核心任务。这里的核心任务指将完成公司定义的商业进程或功能,而不是编写所有的普通构件或程序,比如显示、制表、计算、算法,还有其它可以在市场上购买到的构件。重用因为可以重用开放市场构件而得到实现,那就是别人已经编写、测试、文档化了的代码。

      3. Web服务构件

        在局域网成为因特网的分布式环境下,网络服务被提出作为未来的简单扩充。应用构件不再只是呆在一个局域网的一个服务器上,而是放到整个因特网上。网络服务有效地等同于一个被提供的问题解决方法。不仅是提供一个完整的应用,人们还能提供个人构件。
        2000年6月以后,主要的平台买主已宣布提供的网络服务有,Microsoft的
        .NET、Sun公司的Sun
        ONE、HP的eServices、Oracle公司的eSpeak,还有IBM的 Websphere
        program。技术的完全交付还要有一年的时间。

    2. 软件构件的特征

      软件构件具有可复用性(Reusability)、自包含性、一致性、耦合性、内聚性和适应性这几大特征。其中可复用性包括有用性(Usefulness)和可用性(Usability)。有用性是指构件完成的功能是有用的,也就是其功能可出现在很多应用软件中。易用性是指构件要有很好的包装,能很方便地使用它。

    3. 构件的大小

      粒度已经成为许多程序员在使用构件时经常谈论的话题。粒度一词是指一个构件,或一组构件能够提供多少的功能。举一个简单的例子,Fine
      Grained
      Component提供将三个数相加的功能,这个构件小、紧密、低商业费用,没有很强的定制性,并且功能独立。而Large
      Grained
      Component将提供更多的功能。它可以是一个文件存取库、数据库构件或者是基于”近完全”功能的构架,像CRM,ERP,eCommerce或其它
      系统。比如,eCommerce构件可以提供完整eCommerce系统百分之80到90的功能,包括登记,购物车,目录服务,开发票,电子邮件等。它可
      以作为一个简单的构件使用,但实际上,它是一个集成构件的构架,可提供大粒度的功能。那么,好的和大的,哪个更好呢?它们各有优缺点。大型构件可以提供大量的应用功能,但它不会像把许多不同的优型构件组合起来那么可定制。这种情况非常正
      常,因为优型构件为独立模块,你要编写粘合代码来使得构件可以一起工作满足你的要求。这意味着,编写代码当然会费时。在一个内部编写粘合代码的大型构件
      中,你不能定制它,只能放置构架开发者允许你用来定制构架如何工作的性质/属性。

  4. 四、构件库及相关介绍

    1. 构件库简介

      简单来说,构件库是一个对软件构件统一进行形式化包装、分类描述、存储管理、检索浏览的场所。
      软件构件库是大范围内、系统化实施软件复用的必备基础设施。要复用软件构件有两个前提条件,一是所需的构件已经存在,二是复用者能方便地找到所需的构件。
      由于软件构件蕴涵了大量的信息,对其准确、简洁的描述及其困难,如果没有一个统一的场所对其进行统一的描述包装,大多数企业在应用开发时将难以找到所需构
      件,不得不“从零开始”,而构件的一次性开发成本比一般软件高(一般为2到3倍),因此大多数“从零开始”的开发结果又没形成构件,如此循环,将难以形成
      系统化的软件复用。

    2. 构件库的作用与意义

      使用软件构件是缩短软件的交付时间和提高软件质量的一条途径,随着复用实践的深入,组织内部将会积累大量自主开发的构件、购买的商业COTS
      (Commercially-Off-The-Shelf)构件和其他组织开发的NDI(Non-Developmental
      Item)构件。这些克服用构件构成了庞大的企业资产,而构件库作为分类和管理构件资产的基础设施就变得十分重要。实践中构件数量不断增长,构件也随技术
      和领域演化而更新,要在库中众多的构件中寻找必须借助于自动检索工具的支持,另一方面,对单个构件的复用可以划分为构件的识别和检索、构件理解和适应性修
      改三部分,因此对于构件的有效管理可以大大的降低复用成本。

  5. 五、软件复用概述

    1. 软件复用的概念

      软件复用(或软件重用)是指充分利用过去软件开发中积累的成果、知识和经验,去开发新的软件系统,使人们在新系统的开发中着重于解决出现的新问题、满足新需求,从而避免或减少软件开发中的重复劳动。

    2. 软件复用的意义

      软件复用使人们在软件开发中不必“重新发明轮子”或“一切从零开始”,提高了软件生产率和质量,缩短开发周期,降低开发成本。软件的重用中没有材料的消
      耗,而且软件通过多次重用后其质量和可靠性越来越高。据统计,软件系统的开发中若复用程度达到50%,则其生产率提高40%,开发成本降低约40%,软件出错率降低近50%。
      软件工程专家Bohem认为,近十年来软件复用已成为解决软件危机、提高软件生产率和质量的最有效、最具潜力的手段。

    3. 软件复用的粒度

      根据软件复用的粒度可将其分为(按粒度从小到大)如下五类:代码和设计拷贝、源代码复用、设计和软件体系结构(software
      architecture)复用、应用程序生成器(application
      generator)和领域特定的软件体系结构(Domain-Specific Software
      Architecture,DSSA)的复用。

    4. 软件复用的形式

      可以从不同的角度,对软件复用的形式分类。根据复用活动所跨越的领域可分为垂直式(纵向)复用和水平式(横向)复用;根据实现复用的途径可分为组装式(compositional)复用和生成式(generative)复用;根据复用的方式可分为黑盒服用和白盒复用等。

引言
软件系统的复杂性不断增长、软件人员的频繁流动和软件行业的激烈竞争迫使软件企业提高软件质量、积累和固化知识财富,并尽可能地缩短软件产品的开发周期。于是集软件复用、分布式对象计算、企业级应用开发等技术为一体的“基于中间件的软件开发”(CBSD,Component
Based Sortware
Development)应运而生,这种技术以软件架构为组装蓝图,以可复用软件构件为组装模块,支持组装式软件的复用,大大提高了软件生产效率和软件质量。为此国风外对于这一技术的研究正在不断深入,同时大型的软件公司及软件组织机构都推出了支持中间件技术的软件平台。面对高深的中间件技术和繁多的软件平台,很多人感到很茫然和无从下手,本文简单介绍了中间件技术的发展和特点,重点阐述和比较了三大主流中间件技术平台,使读者对中间件技术有个全面的了解。
一、中间件技术的概念及发展
顾名思义,中间件是处于应用软件和系统软件之间的一类软件,是独立于硬件或数据库厂商的一类软件,是客户方与服务方之间的连接件,是需要进行二次开发的中间产品。
应该说,中间件技术是伴随网络而发展起来的一种面向对象的技术。以前的计算机系统多是单机系统,多个用户是通过联机终端来访问的,没有网络的概念。网络出现后,产生了Client/Server的计算服务模式,多个客户端可以共享数据库服务器和打印服务器等等。随着网络的更进一步发展,许多软件需要在不同厂家的网络产品、硬件平台、网络协议异构环境下运行,应用的规模也从局域网发展到广域网。在这种情况下,Client/Server模式的局限性也就暴露出来了,于是中间件应运而生。中间件是位于操作系统和应用软件之间的通用服务,它的主要作用是用来屏蔽网络硬件平台的差异性和操作系统与网络协议的异构性,使应用软件能够比较平滑地运行于不同平台上。同时中间件在负载平衡、连接管理和调度方面起了很大的作用,使企业级应用的性能得到大幅提升,满足了关键业务的需求。
二、当前支持服务器端中间件技术的平台
考察当前主流的分布计算技术平台,主要有OMG的CORBA、Sun的J2EE和Microsoft
DNA
2000。它们都是支持服务器端中间件技术开发的平台,但都有其各自的特点,将分别阐述如下。
2.1 OMG的CORBA
CORBA分布计算技术是OMG组织基于众多开放系统平台厂商提交的分布对象互操作内容的基础上制定的公共对象请求代理体系规范。
CORBA分布计算技术,是由绝大多数分布计算平台厂商所支持和遵循的系统规范技术,具有模型完整、先进,独立于系统平台和开发语言,被支持程度广泛的特点,已逐渐成为分布计算技术的标准。COBRA标准主要分为3个层次:对象请求代理、公共对象服务和公共设施。最底层是对象请求代理ORB,规定了分布对象的定义和语言映射,实现对象间的通讯和互操作,是分布对象系统中的“软总线”;在ORB之上定义了很多公共服务,可以提供诸如并发服务、名字服务、事务(交易)服务、安全服务等各种各样的服务;最上层的公共设施则定义了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则。目前,CORBA兼容的分布计算产品层出不穷,其中有中间件厂商的ORB产品,如BEAM3,IBM
Component
Broker,有分布对象厂商推出的产品,如IONAObix和OOCObacus等。CORBA规范的近期发展,增加了面向Internet的特性,服务质量控制和CORBA构件模型(CORBA
Component Model)。
Internet集成特性包括了针对IIOP传输的防火墙(Firewall)和可内部操作的定义了URL命名格式的命名服务(Naming
Service)。
服务质量控制包括能够具有质量控制的异步消息服务,一组针对嵌入系统的CORBA定义,一组关于实时CORBA与容错CORBA的请求方案。
CORBA CCM(CORBA Component
Model)技术,是在支持POA的CORBA规范(版本2.3以后)基础上,结合EJB当前规范的基础上发展起来的。CORBA构件模型,是OMG组织制定的一个用于开发和配置分布式应用的服务器端中间件模型规范,它主要包括如下三项内容:
a.抽象构件模型,用以描述服务器端构件结构及构件间互操作的结构;
b.构件容器结构,用以提供通用的构件运行和管理环境,并支持对安全、事务、持久状态等系统服务的集成;
c.构件的配置和打包规范,CCM使用打包技术来管理构件的二进制、多语言版本的可执行代码和配置信息,并制定了构件包的具体内容和基于XML的文档内容标准。
总之,CORBA的特点是大而全,互操作性和开放性非常好。CORBA的缺点是庞大而复杂,并且技术和标准的更新相对较慢,COBRA规范从1.0升级到2.0所花的时间非常短,而再往上的版本的发布就相对十分缓慢了。在具体的应用中使用不是很多。
2.2 Sun的J2EE
为了推动基于Java的服务器端应用开发,Sun于是在1999年底推出了Java2技术及相关的J2EE规范,J2EE的目标是:提供平台无关的、可移植的、支持并发访问和安全的,完全基于Java的开发服务器端中间件的标准。在J2EE中,Sun给出了完整的基于Java语言开发面向企业分布应用规范,其中,在分布式互操作协议上,J2EE同时支持RMI和IIOP,而在服务器端分布式应用的构造形式,则包括了Java
Servlet、JSP(Java Server
Page)、EJB等多种形式,以支持不同的业务需求,而且Java应用程序具有“Write
once,run anywhere”的特性,使得J2EE技术在发布计算领域得到了快速发展。
J2EE简化了构件可伸缩的、其于构件服务器端应用的复杂度,虽然DNA
2000也一样,但最大的区别是DNA
2000是一个产品,J2EE是一个规范,不同的厂家可以实现自己的符合J2EE规范的产品,J2EE规范,是众多厂家参与制定的,它不为Sun所独有,而且其支持跨平台的开发,目前许多大的分布计算平台厂商都公开支持与J2EE兼容技术。
EJB是Sun推出的基于Java的服务器端构件规范J2EE的一部分,自从J2EE推出之后,得到了广泛的发展,已经成为应用服务器端的标准技术。SunEJB技术是在Java
Bean本地构件基础上,发展的面向服务器端分布应用构件技术。它基于Java语言,提供了基于Java二进制字节代码的重用方式。EJB给出了系统的服务器端分布构件规范,这包括了构件、构件容器的接口规范以及构件打包、构件配置等的标准规范内容。EJB技术的推出,使得用Java基于构件方法开发服务器端分布式应用成为可能。从企业应用多层结构的角度,EJB是业务逻辑层的中间件技术,与JavaBeans不同,它提供了事务处理的能力,自从三层结构提出以后,中间层,也就是业务逻辑层,是处理事务的核心,从数据存储层分离,取代了存储层的大部分地位。从分布式计算的角度,EJB像CORBA一样,提供了分布式技术的基础。提供了对象之间的通讯手段。
从Internet技术应用的角度,EJB和Servlet,JSP一起成为新一代应用服务器的技术标准,EJB中的Bean可以分为会话Bean和实体Bean,前者维护会话,后者处理事务,现在Servlet负责与客户端通信,访问EJB,并把结果通过JSP产生页面传回客户端。J2EE的优点是,服务器市场的主流还是大型机和UNIX平台,这意味着以Java开发构件,能够做到“Write
once,run
anywhere”,开发的应用可以配置到包括Windows平台在内的任何服务器端环境中去。
2.3 Microsoft DNA 2000 Microsoft DNA 2000(Distributed interNet
Applications)是Microsoft在推出Windows2000系列操作系统平台基础上,在扩展了分布计算模型,以及改造Back
Office系列服务器端分布计算产品后发布的新的分布计算体系结构和规范。
在服务器端,DNA
2000提供了ASP、COM、Cluster等的应用支持。目前,DNA2000在技术结构上有着巨大的优越性。一方面,由于Microsoft是操作系统平台厂商,因此DNA
2000技术得到了底层操作系统平台的强大支持;另一方面,由于Microsoft的操作系统平台应用广泛,支持该系统平台的应用开发厂商数目众多,因此在实际应用中,DNA
2000得到了众多应用开发商的采用和支持。 DNA
2000融合了当今最先进的分布计算理论和思想,如事务处理、可伸缩性、异步消息队列、集群等内容。DNA使得开发可以基于Microsoft平台的服务器构件应用,其中,如数据库事务服务、异步通讯服务和安全服务等,都由底层的分布对象系统提供。
以Microsoft为首的DCOM/COM/COM+阵营,从DDE,OLE到ActiveX等,提供了中间件开发的基础,如VC,VB,Delphi等都支持DCOM,包括OLE
DB在内新的数据库存取技术,随着Windows2000的发布,Microsoft的DCOM/COM/COM+技术,在DNA2000分布计算结构基础上,展现了一个全新的分布构件应用模型。首先,DCOM/COM/COM+的构件仍然采用普通的COM(Component
Object
Model)模型。COM最初作为Microsoft桌面系统的构件技术,主要为本地的OLE应用服务,但是随着Microsoft服务器操作系统NT和DCOM的发布,COM通过底层的远程支持使得构件技术延伸到了分布应用领域。DCOM/COM/COM+更将其扩充为面向服务器端分布应用的业务逻辑中间件。通过COM+的相关服务设施,如负载均衡、内存数据库、对象池、构件管理与配置等等,DCOM/COM/COM+将COM、DCOM、MTS的功能有机地统一在一起,形成了一个概念、功能强的构件应用体系结构。而且,DNA2000是单一厂家提供的分布对象构件模型,开发者使用的是同一厂家提供的系列开发工具,这比组合多家开发工具更有吸引力。
但是它的不足是依赖于Microsoft的操作系统平台,因而在其它开发系统平台(如Unix、Linux)上不能发挥作用。
三、相关性比较分析
目前,针对上述的各种分布计算平台技术,都出现了相似且具有可比性的分布式构件,即CORBA
CCM(CORBA Component Model)技术、SUN的EJB(Enterprise JavaBean)技术和DNA
2000中的COM/DCOM/COM+技术。
对于以上三个分布计算平台,本文采用业界常用的做法从以下三个方面进行分析:
集成性:集成性主要反映在基础平台对应用程序互操作能力的支持上。它要求分布在不同机器平台和操作系统上、采用不同的语言或者开发工具生成的各类商业应用必须能集成在一起,构成一个统一的企业计算框架。这一集成框架必须建立在网络的基础之上,并且具备对于遗留应用的集成能力;
可用性:要求所采用的软件构件技术必须是成熟的技术,相应的产品也必须是成熟的产品,在至关重要的企业应用中能够稳定、安全、可靠地运行。另外,由于数据库在企业计算中扮演着重要角色,软件构件技术应能与数据库技术紧密集成;
可扩展性:集成框架必须是可扩展的,能够协调不同的设计模式和实现策略,可以根据企业计算的需求进行裁剪,并能迅速反应市场的变化和技术的发展趋势。通过保证当前应用的可重用性,最大程度地保护企业的投资。
下表从集成性,可用性,可扩展性三个方面,给出了上述三种主流分布计算平台的比较结果。
CORBA EJB DCOM 集成性 跨语言性能 好 差 好 跨平台性能 好 好 差 网络通讯
好 好 一般 公共服务构件 好 好 一般 可用性 事务处理 好 一般 一般 消息服务
一般 一般 一般 安全服务 好 好 一般 目录服务 好 一般 一般 容错性 一般
一般 一般 软件开发商支持度 一般 好 好 产品成熟性 一般 一般 好 可扩展性
好 好 一般
虽然这三种平台因为其形成的历史背景和商业背景有所不同,各自有自己的侧重和特点,其实在它们之间也有很大的相通性和互补性。例如,EJB提供了一个概念清晰、结构紧凑的分布计算模型和构件互操作的方法,为构件应用开发提供了相当的灵活性。但由于它还处于发展初期,因此其形态很难界定。CORBA
CCM是一种集成技术,而不是编程技术。它提供了对各种功能模块进行构件化处理并将它们捆绑在一起的粘合剂。EJB和CORBA在很大的程度是可以看作为互补的。这个适应WEB应用的发展要求,许多厂商多非常重视促进EJB和CORBA技术的结合,将来RMI可能建立在IIOP之上。CORBA不只是对象请求代理ORB,也是一个非常完整的分布式对象平台。CORBA可以扩展EJB在网络、语言、组件边界、操作系统中的各种应用。目前许多平台都能实现EJB构件和CORBA构件的互操作。同EJB和CORBA之间相互之间方便的互操作性相比,DOCM和CORBA之间的互操作性要相对复杂些,虽然DCOM和CORBA极其类似。DOCM的接口指针大体相当于CORBA的对象引用。为了实现CORBA和DCOM的互操作,OMG在CORBA3。0的规范中,加入了有关的CORBA和DCOM互操作的实现规范,并提供了接口方法。因为商业利益的原因,在EJB和DCOM之间基本没有提供互操作方法。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章