架构、构件、组件、框架、中间件的区别

今天收到老大的邮件说:

组件:是指系统中可以重用的控件、公用类等,是和业务无关的,比如我们日历选择的控件,就属于公司定义的组件,再比如我们的EXCEL导出、PDF文件导出也可以做成组件的。

构件:是指和业务有关的业务功能,比如我们的调配、分配功能。

有点怀疑这样的定义是否准确,上网google了一下,发现类似的概念其实没有精确的定义,我们完全可以赋予它我们所需要的含义。

什么是中间件?

中间件作为一大类系统软件,与操作系统,数据库管理系统并称"三套车",其重要性是不言而语的。

IDC给出的一个定义:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
从这些定义中可以看出:

·中间件是一类软件,而非一种软件;

·中间件不仅仅实现互连,还要实现应用之间的互操作;

·中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。

接着,我们再来看看什么是Web Services?

Web Services就是可以通过web描述、发布、定位和调用的模块化应用。Web Services可以执行任何功能,从简单的请求到复杂的业务过程。一旦Web Services被部署,其他的应用程序或是Web Services就能够发现并且调用这个部署的服务。

Web Services通过简单对象访问协议 (Simple Object Access Protocol,SOAP)来调用。SOAP是一种轻量级的消息协议,它允许用任何语言编写的任何类型的对象在任何平台之上相互通信。SOAP消息采用可扩展标记语言(XML)进行编码,一般通过HTTP进行传输。与其它的分布式计算技术不同,Web Services是松耦合的,而且能够动态地定位其他在internet上提供服务的组件,并且与它们交互。

Web Services使用诸如SOAP消息这样的XML消息,通过一种良好定义的消息交换模式来调用。通过描述调用服务所必需的数据,Web Services描述语言 (WSDL)文档定义了消息交换模式。

一、组件概念

简而言之,组件就是对象。C++ Builder中叫组件,Delphi中叫部件,而在Visual BASIC中叫控件。

组件是对数据和方法的简单封装。C++ Builder中,一个组件就是一个从TComponent派生出来的特定对象。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。

组件是C++ Builder环境中最令人激动的部分。使用组件可以实现拖放式编程、快速的属性处理以及真正的面向对象的设计。VCL和CLX组件是C++ Builder系统的核心。

二、组件应用

使用现成的组件来开发应用程序时,组件工作在两种模式下:设计时态和运行时态。

在设计时态下,组件显示在C++ Builder窗体编辑器下的一个窗体中。设计时态下组件的方法不能被调用,组件不能与最终用户直接进行交互操作,也不需要实现组件的全部功能。

在运行状态下,组件工作在一个确实已经运行的应用程序中。组件必须正确地将自身表示出来,它需要对方法的调用进行处理并实现与其他组件之间有效的协同工作。

设计时态下所有的组件在窗体中都是可见的,但在运行时态下不一定可见。如TTable、TQuery和TDataSet在运行时态下就不可见,但他们均完成了重要的功能。

三、组件创建

创建组件就是自行设计制作出新的组件。

设计组件是一项繁重的工作。自行开发组件与使用组件进行可视化程序开发存在着极大的不同,要求程序员熟知原有的VCL类库结构,精通面向对象程序设计。

设计组件是一项艰苦的工作。对于组件的开发者,组件是纯粹的代码。组件的开发不是一个可视化的开发过程,而是用C++或Object Pascal严格编制代码的工作。实际上,创建新组件使我们回到传统开发工具的时代。虽然这是一个复杂的过程,但也是一个一劳永逸的过程。

创建组件的最大意义在于封装重复的工作,其次是可以扩充现有组件的功能。

组件创建过程包括设计、开发、调试(就是所谓的3D's)工作,然后是组件的使用。

组件开发者应该掌握的三项主要内容是:属性、事件和方法。

模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。

Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。

模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,自然会出现很多模式。

什么是框架?

框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

什么是构件?
构件(component)是可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的对象类、类树、一些功能模块、软件框架(framwork)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(Pattern)等。构件分为构件类和构件实例,通过给出构件类的参数,生成实例,通过实例的组装和控制来构造相应的应用软件,这不仅大大提高了软件开发者的开发效率,也大大提高了软件的质量。

从其他资料上找到的另外一则关于构建的定义:

构件是实现特定功能,遵循某一个模型的约定并可独立部署与运行的软件单元。

构件化技术为不同用户定制要求提供了可能,把常用功能做成可供选择的构件,软件的各个功能模块可以独立的实现、升级、而不会影响系统整体,使用户具有更为灵活的选择。

构件必须满足一下原则:

(1)内聚性:构件代表一个抽象,有很高的内聚性,必须提供所需的特定操作、属性、实践和方法接口。

(2)可重用性:构件要具有骄傲高的重用程度,分离功能构件,将可变部分数据化、参数化、以适合不同的应用需求。

(3)封装化与接口标准化:构件要易于演化,数据与其结构是封装在一起的,数据存放在数据结构对象中,能主动解释其结构。

(4)颗粒度合理性:构件按构件粒度的大小,自下而上可以分为数据结构构件,功能构件和子系统构件。

此条目发表在sitebuild分类目录,贴了标签。将固定链接加入收藏夹。