浅谈三层学习

2024-08-26 07:48
文章标签 学习 浅谈 三层

本文主要是介绍浅谈三层学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    随着前面的面向对象思想的了解,接下来就开始了它的应用了,不过从理论知识向实际应用的转变过程不是很简单,就拿现在的三层来说,虽然一步一步对面向对象思想的学习也理解了不少,但是真正让自己来敲三层,还是实现不了,即使是跟着视频敲,实现了里面的Demo,但是自己还是不理解为什么这样做。


    三层顾名思义就是三个层次的结构,但是并不是实际生活中的物理结构,三层架构在百度百科的定义是这样的:所谓三层体系结构,是在客户端与数据库之间加入了一个中间件层,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也 不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。 三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通 讯与中间层建立连接,再经由中间层与数据库进行交换。说白了,就可以理解为三个不同盛放代码的容器,用来实现不同的功能。


三层包括UI层、BLL层、DAL层:

    UI层:显示层,就是给用户看到的界面层,主要是WEB方式,也可以用WEBFORM的方式表示。

    BLL层:业务逻辑层,主要是进行逻辑处理,也是UI层和DAL层的中间桥梁。

    DAL层:数据访问层,D层的功能主要体现在访问二字上,因为它不等同于数据源,只是包括对数据源的各种操作。


三者的功能分别是:

    UI层:向用户展现特定业务数据,采集用户的输入信息和操作

    BLL层:从UI中获取用户指令和数据,执行业务逻辑或者通过DAL写入数据源,并将DAL返回的数据通过UI显示。

    DAL层:对数据员进行增删改查的操作。


三者的关系:

    U层依赖B层,B层依赖D层,但是三者功能的实现又是界限分明,DAL只提供基本的数据访问,不包含任何业务相关的逻辑处理;UI只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理; BLL负责处理业务逻辑,通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理,处理完成后,返回必要数据给UI。


总结

只是了解这些理论知识,通过视频或者上网查都可以获得,但是真的到实际应用的时候就觉得非常难。跟着视频讲解实现C#版三层登录的时候没出现什么问题,那是因为视频上给的代码很全面,不用自己去改。可是关了视频之后发现自己对三层还是不了解,从C#往.NET转的时候更是觉得无从下手。还是得靠师哥师姐的博客来帮忙,我觉得这也就是学习的过程吧,自己先向别人学,那么习就相当于自己悟了。一个小Demo的实现不能让自己对它理解多透彻,不过相信接下来的学习能够让三层尽括囊中。

这篇关于浅谈三层学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107977

相关文章

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操