三层结构与千千寰宇

实验室学弟突然又谈到了三层结构与MVC的话题,想想还是有必要整理一下这些个基本概念,且也纠正自己之前对二者的概念混淆,乃至将其错误思想指导于开发中。

关键词:三层结构(三层架构)、MVC框架(思想)、基于J2EE/BS软件结构的三层架构、Service/Model/Controller三者的区别。

立场:三层结构绝不等同于MVC,二者的思想不相同!!!但从代码与程序的物理逻辑构件组织的角度来看,会有一定的联系。

1. 目的:为了服从“高内聚低耦合”的思想,模块化的软件工程思想,是基于分层架构下的一种常用的分层架构模式的一种。

2.优点:降低层与层之间的依赖、标准化。

3.缺点:系统架构复杂,不适合小型项目。

4.定位:最经典/最常见的软件体系架构设计中的一种。常见的其他软件架构设计还有:分层模式(含:三层结构)、客户端-服务器模式、主从设备模式、管道-过滤器模式、代理模式、点对点模式、事件总线模式、模型-视图-控制器(MVC)模式、黑板模式、解释器模式。

5.哪三层?分层式结构一般分为三层,从下至上分别为:数据访问层(Data Access Layer)、业务逻辑层(Business Logic Layer,又或称为领域层,Domain)、表示层(又称为界面层,User Interface Layer)。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即把这三个层放置到一台机器上。

三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。

6.数据访问层:主要看数据层里面有没有包含逻辑处理,实际上它的各个函数主要完成各个对数据文件的操作。而不必管其他操作。主要是对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据库的操作,而不是数据,具体为业务逻辑层或表示层提供数据服务。

7.业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

8.界面层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx、jsp,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

1.定义:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计模式的典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

2.简介:

①MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

②MVC指MVC模式的某种框架,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP(View) + Servlet(Controller) + JavaBean(Model)的模式。

[基于Struct2的MVC设计]

设想Java Web(B/S架构+前后端分离):

Model:将处理结果全部封装于会话、响应中,部分处理以抛出异常形式,交由最上层(渲染到用户视图)处理(异常)。

异常渲染层:处理下层抛出的异常,调度页面或者输出JSON。

Model(模型)表示应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据库中存取数据。

View(视图)表示应用程序中处理数据显示的部分。 通常视图是依据模型数据创建的。

Controller(控制器)处理输入(写入数据库记录),是应用程序中处理用户交互的部分。 通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

实践过程中,每个人对MVC的理解不同,其实现方式与软件的设计也就会不同了,无统一严格的实践标准,尤其是在M、V、C三者之间的通讯关系,可谓是百花齐放。

附:

实际上它们完全是不同的概念。

框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。

重申立场:三层结构绝不等同于MVC,二者的指导思想不相同!!!但从代码与程序的物理逻辑构件组织的角度来看,会有一定的联系。

MVC中的Model可以类似看做三层结构中的业务逻辑层(不完全是Model)+数据访问层;

MVC中的View可以类似看做三层结构中的UI层(不完全是View)。

而Controller绝不可以等效于三层结构中的任一层。

MVC模式与三层架构联系:

ui (view)←(contorller)

***********************

bll  (model)

***********************

dal (model)

View-UI Layer  |   Controller-Bussiness Layer  |  Model-Data Access Layer 其实这样是错误的 。

MVC是表现模式(Presentation Pattern); 三层架构是典型的架构模式(Architecture Pattern)。

三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,而是相互协作关系。

即使将MVC当作架构模式,也不是分层模式。MVC和三层架构基本没有可比性,是应用于不同领域的技术。

THE END
0.计算机网络七层结构(一)物理层数据链路层详解7层是指OSI七层协议模型,主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。 在TCP/IP协议中将应用层、表示层、会话层合并为应用层又将数据链路层、物理层合并为网络接口层所以为四层结构 jvzquC41dnuh0lxfp0tfv8jcpm1;9>282<0c{ykenk0fnyckny03:98737:2
1.java三层四层和五层结构介绍三层架构是一种常见的软件设计模式,包括表现层、业务逻辑层和数据访问层,强调高内聚低耦合。四层架构在此基础上可能增加系统服务层,提供公共服务。这种分层结构有利于代码解耦、复杂问题简化、逻辑复用和独立开发,但可能导致性能下降和级联修改。五层架构进一步细化,增加了用户界面层和控制层。 jvzquC41dnuh0lxfp0tfv8mw|kg0c{ykenk0fnyckny03;9563726
2.创建分层结构当您连接到数据源时,Tableau 会自动将数据字段分隔为分层结构,以便您能够轻松地细分可视化项。您也可以创建自己的自定义分层结构。例如,如果您有一组名为“Region”、“State”和“County”的字段,则可以依据这些字段创建一个分层结构,以便能够快速在可视化项内各层之间向下钻取。 jvzquC41jgrq0}fdnggv0lto1e{stnsv1rxp1mjumvuq1ƒm/ep5ruhmkgtgseqngu0nuo
3.软件架构分层架构简介软件分层原理分层架构和单体架构是软件开发中常见的两种架构风格,它们在组织应用程序结构方面有着本质的不同。虽然它们都可以用于构建单体应用,但它们的设计哲学、组织方式和目标有所区别。 分层架构 定义 分层架构将应用程序划分为逻辑上的几个层次,每一层负责不同的职责。常见的层次包括表示层(或用户界面层)、业务逻辑层、数据访jvzquC41dnuh0lxfp0tfv8|gkzooa=;6756828ftvkimg8igvcomu86592:52<;
4.三层架构0层架构1层架构2层架构是什么1、降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。 2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。 jvzquC41dnuh0lxfp0tfv8qghvlju}4ctvodnn4fgvgjn|4337<59>7:
5.CNN卷积层池化层全连接层典型的卷积神经网络通常由以下三种层结构共同组成: 卷积层(Convolution)、下采样池化层(Pooling)、全连接层(Fully connected) 卷积层(Convolution) 通过卷积操作对输入图像进行降维和特征抽取 卷积运算是线性操作,而神经网络要拟合的是非线性的函数,因此和前全连接网络类似,我们需要加上激活函数,常用的有 sigmoid 函数,jvzquC41dnuh0lxfp0tfv8hlDOU1jwvkerf1mjvckrt1A=297;7;
6.软件架构之分层模式(LayeredArchitecture)分层模式是最通用的架构,也被叫做N层架构模式(n-tier architecture pattern).这也是Java EE应用经常采用的标准模式.基本上都知道它.这种架构模式非常适合传统的IT通信和组织结构,很自然地成为大部分应用的第一架构选择. 模式描述 在分层架构中的组件被划分成几个层,每个层代表应用的一个功能.分层架构本身没有规定要jvzquC41dnuh0lxfp0tfv8hg349`|qtwygo0c{ykenk0fnyckny07;:87781
7.操作系统设计:分层模块化宏内核与微内核解析1.分层结构 2.模块化设计结构 3.宏内核设计 4.微内核设计 4.1微内核的基本概念 4.2微内核的基本功能 4.3微内核结构的特点 5.外核结构 1.分层结构 分层结构如上图:最底层是硬件层,最外层是用户接口层,每层只能调用自己的上一层(例如1只能调用0) 。 jvzquC41dnuh0lxfp0tfv8r2a8912?99:1gsvrhng1jfvjnnu1743;>52::