什么是 N层结构
N层结构 (n-tiers结构 ,多层式运行架构 )是相对于两层结构而言的。传统的C/S 计算多是基于两级模式 ,在这种模式中,所有的形式逻辑和业务逻辑均驻留在Client 端,而Server则成为数据库 服务器,负责各种数据的处理和维护。因此Server变得很“瘦”,被称为“瘦服务器 (Thin Server)”。与之相反,这种模式需要在客户端 运行庞大的应用程序 ,这就是所谓的“胖客户机 (Fat Client)”。
N层架构 (n-tiers 结构,多层式运行架构)的四层是指Presentation Tier(表示层,就是直接呈现在用户面前的界面)、Web Server Tier(Web服务器层)、 Application Server Tier(应用服务器层)和 Data Tier(数据层).
早期的网络系统设计常常采用三层结构。最常见的结构,就是表示( presentation )层 , 领域( domain )层 , 以及基础架构( infrastructure )层。
n层结构的提出是为了适应当前B/S 模 式开发WEB Application的需要而提出的。传统的Brown模型是指:表示层( Presentation ),控制 / 中介层( Controller/Mediator ),领域层( Domain ) , 数据映射层( Data Mapping ) , 和数据源层 ( Data Source )。它其实就是在三层架构 中增加了两个中间层 。控制 / 中介层位于表示层和领域层之间,数据映射层位于领域层和基础架构层之间。
J2EE 规范提出了自己的n-tiers结构。
下表是几种模型的对照
ISA | Brown | J2EE 层 | 对应程序部分 |
表示层 | 表示层 | 客户层 | 浏览器 HTML 页面, XSL, 手机客户端等 |
服务器表示层 | JSP 及 ActionForm ,XML | ||
| 控制/中介层 | | Controller 控制器及 Action |
领域层 | 领域层 | 业务层 | Javabeans / SessionBean /Session Facade |
| 数据映射层 | 整合层 | |
数据层 | 数据源层 | 资源层 | RDBMS 数据库 |
J2EE的基本原则之一,是使得各个层的实现解除耦合或耦合最小化。最终实现可以任意的切换某个层的实现。
例如,在数据映射层,可以采用EJB 的BMP,CMP,也可以采用Hibernate等O/RMapping,或者采用JDO。这由部署的环境来决定。
一、N层架构(n-tiers结构,多层式运行架构)存在的主要问题 首先,系统的可靠性有所降低。一个客户机/服务器系统是由各自独立开发、制造和管理的各种硬件和软件 的混合体,其内在的可靠性不如单一的、中央管理的大型机或小型机,出现问题时,很难立即获得技术支持和帮助。 其次,维护费用较高。尽管这种应用模式在某种程度上提高了生产效率,由于客户端需要安装庞大而复杂的应用程序,当网络用户的规模达到一定的数量之后,系统的维护量急剧增加,因而维护应用系统变得十分困难。 第三,系统资源的浪费。随着客户端的规模越来越大,对客户机资源的要求也越来越高。尽管硬件不断更新,但新的操作系统 和新的应用软件的不断出现,使得用户对硬件的更新仍然跟不上软件更新的速度。客户不得不在本地硬盘上装入大量的软件,但是使用的大都只是其中很少一部分(一般低于10%)。在一个拥有众多的“胖客户机”的环境中,这无疑是一种巨大的浪费。 最后,系统缺乏灵活性。由于逻辑同界面结合在一起,客户机/服务器需要对每一应用独立地开发应用程序,缺少重用性。但胖客户机的计算模式却仍然满足不了日 益增长的应用的需要。在向广域网扩充(如Internet)的过程中,由于信息量的迅速增大,专用的客户端已经无法满足多功能的需求 。网络计算模式从两层模式扩展到N层模式,并且结合动态计算,解决了这一问题。 N层架构的核心是提供可规模化特性,一方面是从服务负载上可规模化,能同时为极大规模的用户同时提供服务;另一方面是服务功能上的可规模化,可形成极大规 模的软件群系统,各分系统可以共享信息、服务,形成企业级的信息高速公路。 N层可以分别放在各自不同的硬件系统上的,所以灵活性很高,能够适应客户机数目的增加和处理负荷的变动。例如,在追加新业务处理时,可以相应增加装载功能 层的服务器。因此,系统规模越大这种形态的优点就越显著。
二、N层架构(n-tiers结构,多层式运行架构)的主要优点
另外,N层结构从逻辑上相互独立,某一层的变动通常不影响其它层,具有很高的可重用性。除此以外,n层结构还有以下优点: 1、利用单一的访问点,可以在任何地方访问站点的数据库;
2、对于各种信息源,不论是文本还是图形都采用相同的界面;
3、所有的信息,不论其基于的平台,都可以用相同的界面访问;
4、可跨平台操作;
5、减少整个系统的成本;
6、维护升级十分方便;
7、具有良好的开放性;
8、进行严密的安全管理;
9、系统管理 简单,可支持异种数据库,有很高的可用性 界面层负责: 收集信息 将信息发送到逻辑层做处理 逻辑层接收处理结果 将结果显示 ...... 逻辑层负责: 接收界面输入 与数据层交互执行已设计的业务 操作(业务逻辑,系统服务等) 将处理结果发送到界面层。 ...... 数据层负责: 数据存储 数据获取 数据维护 数据完整性