目录
一、构件与中间件技术
1、软件复用
2、构件与中间件技术的概念
3、构件的复用
3.1 检索与提取构件
3.2 理解与评价构件
3.3 修改构件
3.4 组装构件
4、中间件
4.1 采用中间件技术的优点:
4.2 中间件的分类:
5、构件标准
5.1 CORBA(公共对象请求代理体系结构)
5.2 J2EE【EJB】
5.3 DNA2000
二、C/S架构与B/S架构
三、常用层次架构
1、MVC架构风格
2、MVP架构风格
3、MVVM架构风格
四、RIA架构风格
五、数据访问模式
六、数据访问设计层
软件复用【重用】是多次不同的软件开发过程中重复使用相同或相似【软件元素】的过程。
【软件元素】
例:需求分析文档、设计过程、设计文档、程序代码、测绘用力、领域知识等。
【复用的历史发展路线】
水平复用:不分行业领域,通用。
垂直复用:分行业领域,专用。
【构件的定义 】
定义1:软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意组装。
定义2:构件是系统中有价值的、几乎独立的并可替换的一部分,它在良好定义的体系结构语境内满足某清晰的功能。
定义3:构件是一个独立发布的功能部分,可以通过其接口访问它的服务。
(1)基于关键字的检索
特点:树形或有向无回路图结构
(2)刻面检索法
特点:利用Facet描述构件执行的功能、被操作的数据、构件应用的语境或任意其它特征。
例如:分多个刻面:应用领域、使用环境、功能
(3)超文本检索法
特点:按照人类的联想思维方式任意跳转到相关概念或构件的文档。
(1)要复用构件,准确的理解构件至关重要。特别是对构件修改使用时。
(2)为达到目的,必须要求构件的开发过程遵循公共标准。
(3)一般构件库的文档中全面而准确地说明以下内容:
构件的功能与行为、相关的领域知识、可适应性约束条件与例外情形、可以预见的的修改部分及修改方法。
(1)理想状态是直接复用构件库中现成的构件,但大多数情况下,必须对构件进行或多或少的修改,以应对新需求。
(2)为了减少构件的工作量,要求开发人员尽量使构件的功能、行为和接口设计更为抽象化、通用化、和参数化。这样,复用者即可通过对实参的选取来调整构件的功能或行为。如果这种调整仍不足以使构件适用于新系统,复用者就必须借助设计信息和文档来修改构件。
(3)构件库中若无可修改使用的构件,则按新需求开发构件,并存入构件库。
组装的三种方式:
(1)基于功能的组装:采用子程序调用和参数传递的方式将构件组装起来。
(2)基于数据的组装:仍然是传统的子程序调用与参数传递。但它所依赖的软件设计方法不再是功能分解,而是面向数据的设计方法,例如Jackson系统开发方法。
(3)面向对象的组装:如果从类库中检索出来的基类能够完全满足新系统的需求,则可以直接应用。否则,必须以基类为父类,生成相应的子类,以满足新系统的需求。
构件组装失配问题:
(1)由构件引起的失配,包括由于系统对构件基础设施、构件控制模型和构件数据模型的假设存在冲突引起的失配。
(2)由连接子引起的失配,包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配。
(3)由于系统成分对全局体系结构的假设存在冲突引起的失配等。要解决失配问题,首先需要检测出失配问题,并在此基础上通过适当的手段消除检测出的失配问题。
中间件是一类构件。中间件是一类系统软件。
简化结构、屏蔽差异、利于复用
(1)面向需求。即设计师集中精力于业务逻辑本身。
(2)业务的分割和包容性。应用开发人员可以按照不同的业务进行功能的划分,体现为不同的接口或交互模式。
(3)设计与实现隔离。构件对外发生作用或构件间的交互,都是通过接口进行的,构件使用者只需要知道构件的接口,而不必关心其内部实现,这是设计与实现分离的关键。
(4)隔离复杂的系统资源。架构很重要的一个功能就是将系统资源与应用构件隔离,这是保证构件可复用甚至 “即插即用” 的基础,与中间件的意图也是一致的。
(5)符合标准的交互模型。中间件则实现了架构的模型,实现了标准的协议。
(6)软件复用。中间件提供了构件封装、交互规则、与环境的隔离等机制,这些都为软件复用提供了方便的解决方案。。
(7)提供对应构件的管理。基于中间件的软件可以方便地进行管理,因为构件总可以通过标识机制进行划分。
三大构件标准:CORBA、J2EE【EJB】、DNA2000。
是由OMG组织制订的一种标准的面向对象应用程序体系规范。为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案。
伺服对象(Servant):CORBA对象的真正实现,负责完成客户端请求。
对象适配器(Object Adapter):用于屏蔽ORB内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用ORB内部的某些功能。
对象请求代理(Object Request Broker):解释调用并负责查找实现该请求的对象,将参数传给找到的对象,并调用方法返回结果。客户不需要了解服务对象的位置、通信方式、实现、激活或存储机制
(1)会话bean:实现业务逻辑,负责完成服务端与客户端的交互。
(2)实体bean:实现O/R映射,简化数据库开发工作。
(3)消息驱动bean:处理并发与异常访问。
- Model(模型):应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型通为多个视图提供数据。提高应用的可重用性。
- View(视图):用户看到并与之交互的界面。接受用户数据,向用户展示数据。
- Controller(控制器):用户界面与Model的接口。解释视图的输入,将其解释为系统能够理解的对象,同时识别用户运作,将其解释为对模型特定方法的调用。处理来自于模型的事件和模型逻辑执行的结果,调用适当的视图为用户提供反馈。
J2EE体系结构中:
- 视图(View):JSP
- 控制(Cpntroller):Servlet
- 模型(Model):Entity Bean、Session Bean
MVP是MVC的变种,其优点包括:
(1)模型与视图完全分离,可以修改视图而不影响模型。
(2)可以更高效的使用模型,因为所有交互都发生在一个地方【Presenter】内部。
(3)可以将一个Presenter用于多个视图,而不需要改变Presenter逻辑。
(4)如果把逻辑放在Presenter,就可以脱离用户接口来测试这些逻辑(单元测试)。
【优点】:
(1)反应速度快(2)易于传播(3)交互性强
ORM(Object Relational Mapping):对象与关系数据之间的映射。