Delphi 三层架构

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:
表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。 区分层次的目的即为了“高内聚,低耦合”的思想。
概念简介
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。
 
概述
数据访问层、业务逻辑层(又或称为领域层)、表示层。
 
三层结构原理:
       3个层次中,系统主要功能和业务逻辑都在业务逻辑层进行处理。
       所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。
这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。
三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。
 
各层的作用
1:数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.
2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
 
优点
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
6、结构更加的明确
7、在后期维护的时候,极大地降低了维护成本和维护时间
缺点
1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
3、增加了开发成本。
规则
三层结构的程序不是说把项目分成DAL,BLL,WebUI三个模块就叫三层了,下面几个问题在你的项目里面:
⒈ UILayer里面只有少量(或者没有)SQL语句或者存储过程调用,并且这些语句保证不会修改数据?
⒉ 如果把UILayer拿掉,你的项目还能在Interface/API的层次上提供所有功能吗?
⒊ 你的DAL可以移植到其他类似环境的项目吗?
⒋ 三个模块,可以分别运行于不同的服务器吗?
如果不是所有答案都为YES,那么你的项目还不能算是严格意义上的三层程序. 三层程序有一些需要约定遵守的规则:
⒈ 最关键的,UI层只能作为一个外壳,不能包含任何BizLogic的处理过程
⒉ 设计时应该从BLL出发,而不是UI出发. BLL层在API上应该实现所有BizLogic,以面向对象的方式
⒊ 不管数据层是一个简单的SqlHelper也好,还是带有Mapping过的Classes也好,应该在一定的抽象程度上做到系统无关
⒋ 不管使用COM+(Enterprise Service),还是Remoting,还是WebService之类的远程对象技术,不管部署的时候是不是真的分别部署到不同的服务器上,最起码在设计的时候要做这样的考虑,更远的,还得考虑多台服务器通过负载均衡作集群
所以考虑一个项目是不是应该应用三层/多层设计时,先得考虑下是不是真的需要? 实际上大部分程序就开个WebApplication就足够了,完全没必要作的这么复杂. 而多层结构,是用于解决真正复杂的项目需求的。
 
与MVC的区别
MVC(模型Model-视图View-控制器Controller)是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。
同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。
在三层架构中没有定义Controller的概念。这是我认为最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。
 

 

更多相关文章
  • 北京商报讯(记者 马元月 叶龙招)金利科技(002464)携重组方案自7月28日复牌至今已连续收获5个涨停,这也让停牌前进入的资金获益颇丰.北京商报记者注意到,在该股停牌筹划重组前5个交易日里,中信信托旗下的一只信托计划就精准增持了金利科技.金利科技是在今年1月27日停牌筹划重大事项的,而根据该公司 ...
  • 简介 经过前两篇文章的介绍,相信读者对Mocha应该有一定的认知了,本文重点讲述如何在Chrome下Debug Mocha Test, 方便你在测试fail的时候troubleshooting. 关键词: Mocha, Mocha Debug with Chrome, Debug Mocha tes ...
  •   摘要: 文章背景,来自于群内周五晚上的一次头脑风暴式的思维碰撞交流活动. 眼看到年底了,接到猎头的电话有点多. 那问题来了: 一. 到底什么时候跳槽比较合适, 二. 跳槽到底有哪些坑? 三. 离职的时候跟boss如何谈判? 四. 离职的时候需要办理那些手续? 五. 除了BAT之外,还有那些一线城 ...
  • 看过<超能陆战队>的朋友可能仍然对于电影中的男主角介绍和演示自己发明的微型机器人的场景记忆犹新. “它”看起来只是一跟带有磁性的小小的金属部件.但是它是一个独立的个体,自己能够独立的大脑,同时,和同伴之间有相互的接口你行链接.能够通讯.能够随意的组合成任意功能的物体. 通过类比,我们很容 ...
  • Exchange 2013部署系列之(七) 配置SSL多域名证书 前面六篇博客我们详细讲解了Exchange Server 2013的部署和配置,Exchange一些服务,如 Outlook 无处不在和 ActiveSync,要求在 Exchange 2013 服务器上配置证书. 本篇讲解如何配置来 ...
  •  很久以前就看到了Burp suite这个工具了,当时感觉好NB,但全英文的用起来很是蛋疼,网上也没找到什么教程,就把这事给忘了.今天准备开始好好 学习 这个渗透神器,也正好给大家分享下.(注:内容大部分是 百度 的,我只是分享下自已的学习过程) 什么是 BurpSuite Burp Suite 是 ...
一周排行
  • 之前我在<转战B2C网站开发与建设>一文中提到过用户体验,本文主要阐述一下我对用户体验的理解,和在开发网站的同时应该注意到用户体验的哪些方面. 用户体验,那到底什么是用户体验呢?不同的人对此有不同的理解, ...
  • 15.1 位运算的含义及应用 1.位的概念 大多数计算机系统的内存储器是由众多的存储单元构成的.在微机中,每个存储单元是1个字节,它由8位二进制数构成,可以表示28=256种信息,各位的编号从,最左边的位(第7 ...
  • 接着上节,我们按照同样的方式,允许用户可以拖动objects从FeedPortlet的ItemGrid移动到ItemPortlet里显示其内容. 首先,RSSReaderConstants类,定义恒量--ITEM_D ...
  • 对学员成绩表进行查询,查询任意两科及格的学员数量   对学员成绩表进行查询 要求: 1.查处任意及格两科的学员数量 2.使用存储过程 大家看看下面这种查询办法可行吗,有没有更好的方法! 数据库表如下图:   name ...
  • 北京时间6月27日上午消息,谷歌周三发布了一项针对全球大部分网站植入恶意软件情况的检测结果,结果发现网络环境最安全的是美国,仅有2%的网站被植入了恶意软件:而中国网站被植入恶意软件的比例为5%,排名靠前. 谷歌的报告 ...
  • linux dd命令详解and用dd来测试磁盘的读写能力   名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [opt ...
  • linux shell必知必会sed.awk   sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内 ...
  • linux系统基础常用命令   一.linux系统基础常用命令 1.命令date用以查看.设置当前系统的时间: 格式化显示时间:date  +%Y--%m--%d 2.命令hwclock(clock)用以显示硬件的时 ...
  • 题目为: 从1~1000的1000个数中有多少个包含3的数,其实这个问题用排列组合的方法可以很好的解出来. 题目问有多少个包含3的数,其反面意义就是:1000-不包含3的数 但是解的过程中可能会有误区,我们来看一下解 ...
  • 中兴旗下红牛V5更名后的第一款手机"威武3"在今天下午正式发布,作为千元机型,中兴威武有几个亮点,下面就详情来看看了解真机图赏吧   中兴旗下红牛V5更名后的第一款手机“威武3”在今天下午正式发布 ...