当前位置: 首页 > 编程日记 > 正文

.NET三层架构

三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
      1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增、删、改、查。

表示层
  
 位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
业务逻辑层
      
主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。该模块从数据访问层获得数据,提供给表示层。
数据访问层
      其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。

简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。

三层结构的优点:
提高代码的可重用性
重复的代码不用再写
降低耦合
如果我们要修改业务逻辑,那最好只修改一处位置,而不是在不同的页面一个个替换。各自相对独立,尽可能降低各自之间的干扰。

转载于:https://www.cnblogs.com/flora_asp_net/archive/2009/08/06/1540768.html

相关文章:

【C#串口编程计划】C#通讯类库构建

这篇图文是关于【串口编程计划】的最后一篇“C#通讯类库的构建”,也就是把这次所做的关于串口系统的代码集成到团队的类库中,做到代码的可复用(以后写串口的系统,只需要写数据的定义,协议的解析部分就好,通…

WhatsApp与Gmail用户数均突破10亿大关

北京时间2月2日早间消息,FacebookCEO马克-扎克伯格(Mark Zuckerberg)周一宣布,WhatsApp的用户数突破了10亿。今天,谷歌CEO桑德尔-皮查伊(Sundar Pichai)也在财报电话会议中披露,Gmail活跃用户数已突破10亿。 两年前,Fa…

linux 普通用户 mysql_Linux普通用户部署mysql

1、添加一个新用户,并设置密码user testpasswd test2、解压安装包,并重命名为mysqltar zxvf mysql-5.5.54-linux2.6-x86_64.tar.gz3、移除data目录数据rm -rf data/*4、拷贝配置文件cp support-files/my-medium.cnf my.cnf5、新建一个script目录作为启动…

JQUERY搞的相册导航DEMO教学,总有一款合心意

JQUERY搞的相册导航DEMO教学,总有一款合心意 偶然看到的,老外小结的,用jquery搞的相册导航,总有一款合心意,25款哦http://vandelaydesign.com/blog/web-development/jquery-image-galleries/posted on 2009-08-08 00:15 jackyrong的世界 阅读(...) 评论(...) 编辑 收…

ASP.NET Aries JSAPI 文档说明:AR.Form、AR.Combobox

AR.Form 文档 1:对象或属性: 名称 类型 说明 data 属性 编辑页根据主键请求回来的数据 method 属性 用于获取数据的函数指向,默认值Get objName 属性 用于拦截form表单的请求数据对象名,可以表名,视图名 t…

【通俗理解线性代数】 -- 矩阵与空间的基和坐标

本微信图文从矩阵与坐标系的角度对矩阵进行了通俗化介绍!

mysql 5.7 mts_MySQL:MTS和mysqldump死锁

###一、问题来源这是一位客户的提供的案例如下,show processlist截图如下:![image.png](https://upload-images.jianshu.io/upload_images/7398834-82e9b0bbd7244fbe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)出现这种问题除非手动干预…

SQL SERVER 获取表结构信息《转载》

获取表信息SELECT表名 casewhena.colorder1thend.name elseend, 表说明 casewhena.colorder1thenisnull(f.value,) elseend, 字段名 a.name, 主键 casewhenexists(SELECT1FROMsysobjects wherextypePKandparent_obja.id andname in( …

混合托管:第三代云计算

企业在选择技术时,都必须立足公司的未来,并保持自己的理念和观点。而技术经过几代改进,才能更加广泛地应用。 以磁盘驱动器作为例子。磁盘驱动器作由IBM公司1953年研发,每一次更新换代时,新的磁盘驱动器的容量更大&…

【通俗理解线性代数】 -- 特殊的矩阵

本微信图文主要介绍了旋转矩阵、对角矩阵和矩阵乘法的几何与物理意义。

mysql 数据库 数组类型转换_mysql数字类型的数据如何进行转换?

如何将MySQL数据库中的数字类型转换为数字函数,今天给大家介绍mysql中的转换函数,这个在实际的生活应用中是运用广泛的,大大减少了我们自己手动进行数字类型的转换。我们今天主要向大家介绍的是用MySQL数字类型如何正确的转换函数(concat/cas…

测试用例设计规范

1、引言 测试设计遵循与软件设计相同的工程原则。好的软件设计包含几个对测试设计进行精心描述的阶段。这些阶段是: ● 测试策略 ● 测试计划 ● 测试描述 ● 测试过程 上述四个测试设计阶段适用于从单元测试到系统测试各个层面的测试。 测试设计由软件设计说明所驱…

【通俗理解线性代数】 -- 矩阵的等价与相似

本微信图文通俗讲解了矩阵等价与矩阵相似的意义。

Martin Fowler对全世界程序员的建议

对全世界的程序员我都是那么几条建议。第一,每年学习并熟悉一个新的编程语言。坚持几年,你对于程序设计会有非常深刻的见解。第二,学习测试驱动开发,这种新的方法会改变你对于软件开发的看法。第三,劳逸结合&#xff0…

mysql 触发器死循环_请教如何避免该条触发器的死循环

setANSI_NULLSONsetQUOTED_IDENTIFIERONgoALTERTRIGGER[fetchlcf]ON[dbo].[RdRecords]FORINSERT,UPDATEASbeginSETNOCOUNTONdeclarebustypevarchar(12)/*单据类型*/declareidentityi...set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER TRIGGER [fetchlcf] ON [dbo].[RdRecor…

August 14, 2009 - Choice

转载于:https://www.cnblogs.com/gieno/archive/2009/08/14/1546232.html

深入Java虚拟机之虚拟机体系结构

工作以来,代码越写越多,程序也越来越臃肿,效率越来越低,对于我这样一个追求完美的程序员来说,这是绝对不被允许的,于是除了不断优化程序结构外,内存优化和性能调优就成了我惯用的“伎俩”。 要对…

【通俗理解线性代数】 -- 内积与相关

本图文从向量内积的角度引出了概率论中的相关系数,说明向量内积是线性相似性的表征。

java modelmapper_java - 使用ModelMapper映射抽象类型的字段 - SO中文参考 - www.soinside.com...

我有以下课堂知识层次:public abstract class Base {protected Boolean baseBoolean;}public class A extends Base {private BigDecimal amount;}并且尝试将DTO映射到实体public class DTO {private Base details;}public class Entity {private Base details;}并映…

基于Dialog的MFC程序在启动时隐藏为托盘程序(四)

这部分说一下如何加menu。。如果做小气球。。mfc的menu确是不如C#活着java那么easy..首先在rc里添加menu资源。。然后在ui界面里先设置一下你的菜单。。在第(二)部分已经简单知道了怎么取得tray的鼠标左右点击事件。。下面我们就把左右点击事件分开。。C…

【通俗理解线性代数】 -- 理解二次型

本微信图文介绍了二次型的几何意义以及正定在函数极值中的应用。

《Clojure数据分析秘笈》——1.6节从JDBC数据库读取数据

本节书摘来自华章社区《Clojure数据分析秘笈》一书中的第1章,第1.6节从JDBC数据库读取数据,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看 1.6 从JDBC数据库读取数据从关系型数据库中读…

java timer cron_Java之旅--定时任务(Timer、Quartz、Spring、LinuxCron)

在Java中,实现定时任务有多种方式。本文介绍4种。Timer和TimerTask、Spring、QuartZ、Linux Cron。以上4种实现定时任务的方式。Timer是最简单的。不须要不论什么框架,只JDK就能够。缺点是不过个时间间隔的定时器,调度简单。Spring和QuartZ都…

诗歌rails之如何写一个简单的Rails Plugin

生成plugin骨架代码: Ruby代码 ruby script\generate plugin MyPlugin ruby script\generate plugin MyPlugin 功能需求: 在BlogController中把所有符合条件的Post(Model)生成为xml 如果不使用插件,很easy : in BlogController Ruby代码 def export_to_xml posts Post.fin…

【通俗理解线性代数】 -- 施密特正交化与QR分解

我们介绍线性代数知识的时候,稍微扩展一点,就能演变成一个新的角度。

iOS实现tableViewCell或collectionCell中点击界面按钮跳转

//找到父类界面 - (UIViewController *)viewController { for (UIView* next [self superview]; next; next next.superview) { UIResponder *nextResponder [next nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { return (UIViewControlle…

java web 怎么用solr_使用web过滤器增加solr后台登录验证

solr后台自带是没有登录功能的,默认访问地址是:http://localhost:8983/solr/#/(内置jetty运行)。要给sorl后台增加登录验证方法:1、使用web服务器的登录验证(例如jetty、tomcat)这种方式好处是不需要另外写代码,只需配置一下对应的…

《程序设计解题策略》——1.6 利用左偏树实现优先队列的合并

本节书摘来自华章计算机《程序设计解题策略》一书中的第1章,第1.6节,作者:吴永辉 王建德 更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.6 利用左偏树实现优先队列的合并 优先队列在程序设计竞赛中十分常见,在统计问题、最值问…

Jquery JQZoom Plugin 放大鏡效果 Two

Jquery JQZoom Plugin 放大鏡效果 TwoJquery1.3.2Lib下載地址:http://files.cnblogs.com/davidzhou/jquery-1.3.2.rar插件下載地址:http://files.cnblogs.com/davidzhou/jqzoom_v2.2.rarDemo下載地址:http://files.cnblogs.com/davidzhou/MagnifySol.rar…

如何建立和维护自己的“人脉”

小故事1: 她打开房门,发现自家的门口竟然多了一条死鱼,她感到十分晦气,于是马上扔到垃圾桶了,过了一会儿,又有一条死鱼躺在自家门口,她还是扔了。为了抓住那个做恶作剧的人,她选择待…