三层架构之间的相互关系_三层架构的引用关系-程序员宅基地

一般讲到三层架构,其实就是将整个业务应用划分为表示层、业务逻辑层、数据访问层等。 数据访问层DAL,业务逻辑层BLL。表现层UI (界面类的)

【 model(数据模型层,主要放的我就不用说了。一般都是数据库中的。) ,】model是贯穿的。所有的都引用它,bll引用dal ui引用dal 和bll 然后就是调用 三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。

    普通三层:数据访问层DAL:用于实现与数据库的交互和访问,从数据库获取数据或保存数据到数据库的部分。 业务逻辑层BLL:业务逻辑层承上启下,用于对上下交互的数据进行逻辑处理,实现业务目标。 表示层UI:主要实现和用户的交互,接收用户请求或返回用户请求的数据结果的展现,而具体的数据处理则交给业务逻辑层和数据访问层去处理。

业务实体Model:用于封装实体类数据结构,一般用于映射数据库的数据表或视图,用以描述业务中客观存在的对象。Model分离出来是为了更好地解耦,为了更好地发挥分层的作用,更好地进行复用和扩展,增强灵活性。

通用类库Common:通用的辅助工具类 工程模式:简单工厂模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常根据一个条件(参数)来返回不同的类的实例。 工厂角色(Creator) 是简单工厂模式的核心,它负责实现创建所有具体产品类的实例。工厂类可以被外界直接调用,创建所需的产品对象。 抽象产品角色(Product) 是所有具体产品角色的父类,它负责描述所有实例所共有的公共接口。 具体产品角色(Concrete Product) 继承自抽象产品角色,一般为多个,是简单工厂模式的创建目标。工厂类返回的都是该角色的某一具体产品。 通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通 讯与中间层建立连接,再经由中间层与数据库进行交换. 完善的三层结构的要求是:修改表现层而不用修改逻辑层,修改逻辑层而不用修改数据层 否则你的应用是不是多层结构,或者说是层结构的划分和组织上是不是有问题就很难说. 不同的应用有不同的理解,这是一个概念的问题. MVC系统中的模型从概念上可以分为两类――系统的内部状态和改变系统状态的动作。模型是你所有的商业逻辑代码片段所在。本文为模型提供了业务实体对象和业务处理对象:所有的业务处理对象都是从ProcessBase类派生的子类。业务处理对象封装了具体的处理逻辑,调用业务逻辑模型,并且把响应提交到合适的视图组件以产生响应。业务实体对象可以通过定义属性描述客户端表单数据。所有业务实体对象都EntityBase派生子类对象,业务处理对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互。通过业务实体对象实现了对视图和模型之间交互的支持。实现时把"做什么"(业务处理)和"如何做"(业务实体)分离。这样可以实现业务逻辑的重用。由于各个应用的具体业务是不同的,这里不再列举其具体代码实例。 MVC(模型Model-视图View-控制器Controller)是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。 同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。 在三层架构中没有定义Controller的概念。这是我认为最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。 在ASP NET中的MVC架构编写的,具有极其良好的可扩展性。它可以轻松实现以下功能:

  ①实现一个模型的多个视图;

  ②采用多个控制器;

  ③当模型改变时,所有视图将自动刷新;

  ④所有的控制器将相互独立工作。这就是MVC架构的好处,只需在以前的程序上稍作修改或增加新的类,即可轻松增加许多程序功能。以前开发的许多类可以重用,而程序结构根本不再需要改变,各类之间相互独立,便于团体开发,提高开发效率。下面讨论如何实现一个模型、两个视图和一个控制器的程序。其中模型类及视图类根本不需要改变,与前面的完全一样,这就是面向对象编程的好处。对于控制器中的类,只需要增加另一个视图,并与模型发生关联即可。该模式下视图、控制器、模型三者之间的示意图如图2所示。同样也可以实现其它形式的MVC例如:一个模型、两个视图和两个控制器。从上面可以看出,通过MVC架构实现的应用程序具有极其良好的可扩展性,是ASP NET面向对象编程的未来方向。

   MVC的不足体现在以下几个方面:

 (1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

 (2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

 (3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

 (4)目前,一般高级的界面工具或构造器不支持MVC架构。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。 三层架构是将代码按其作用分成三部分,每部分解决自己负责的流程. 三层架构的功用之处,在于驾驭大型web程序的结构,使之便于管理和扩展. 在设计UI的时候,我们不需要关心其中的逻辑和数据问题,只需要空出对应的位置,用于放置数据. 在设计和修改的时候,要解决的只是HTML的结构,代码看起来干净利落,做起来也是干净利落. UI直接将程序逻辑的任务丢给BLL,BLL就开始构建具体的实现细节.BLL的创建依赖于业务. 例如一个文章系统,BLL_Aticle就表示它是用于对文章的处理的.BLL_Aticle可以提供给UI一个文章列表的recordset,显示在UI的预留位置. 当BLL_Aticle需要从数据库中获取数据的时候,就将任务丢给DAL层 DAL层专门负责和数据库打交道,它从BLL获取参数,组织一个有效的SQL,建立数据库连接,执行SQL进行更新或获取,将返回的数据交给BLL. 每一部分的业务都集中于一个UI-BLL-DAL的链中,上下清晰了然. 至于是怎样的便于管理和扩展,将在后面结合实例进行分析. 复杂的生命形式必有复杂的生存法则,若想在自己的项目中应用好三层架构,需要多用点心体会其中的应用法则. 我对三层架构的理解还不够深,这些文章能算是抛砖引玉就不错了.大家在阅读当中不要局限于我所构思的法则,要多向具体的应用中去实践,根据具体情况,寻出自己的法则. 有所感悟,就记得写下来,这种感悟是进步的契机,但必然不是最终的结果.有了感悟就拿去应用,可以发现它的优劣,继续完善 三层架构比双层或单层结构都有更大的优势。三层结构适合群体开发,每人可以有不同的分工,协同工作使效率倍增。开发双层或单层应用时,每个开发人员都应对系统有较深的理解,能力要求很高,开发三层应用时,则可以结合多方面的人才,只需少数人对系统全面了解,从一定程度工降低了开发的难度。 三层架构属于瘦客户的模式,用户端只需一个较小的硬盘、较小的内存、较慢的CPU就可以获得不错的性能。相比之下,单层或胖客户对面器的要求太高。 三层架构的另一个优点在于可以更好的支持分布式计算环境。逻辑层的应用程序可以有多个机器上运行,充分利用网络的计算功能。分布式计算的潜力巨大,远比升级CPU有效。 三层架构的最大优点是它的安全性。用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36024699/article/details/62042358

智能推荐

完美解决连接数据库启动报错:InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecog-程序员宅基地

文章浏览阅读1w次。问题描述在连接数据库进行操作的时候 启动项目 报了这么一个错误:Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. ..._invalidconnectionattributeexception: the server time zone value '嚙請對蕭

Javascript弹出子窗口_js中的子页面是指弹出框吗-程序员宅基地

文章浏览阅读8.2k次。1、Javascript弹出子窗口可以通过多种方式实现,下面介绍几种方法(1) 通过window对象的open()方法,open()方法将会产生一个新的window窗口对象 //IE7里不支持其用法为:window.open(URL,windowName,parameters);URL: 描述要打开的窗口的URL地址,如何为空则不打开任何网页;windowName:描述被打开的窗口的民称,可以使用'__js中的子页面是指弹出框吗

node.js和JavaScript的关系_nodejs和js的关系-程序员宅基地

文章浏览阅读4.4k次,点赞6次,收藏19次。1. 什么是node.jsnode.js是一个基于 Chrome V8 引擎的 JavaScript 运行时的环境。2. 什么是JavaScript2.1比较JavaScript 和 Java两者之间没有关系V8是google开源的JavaScript引擎,用于执行JavaScript;类似JVM执行java字节码。在node.js 诞生之前,V8是内置于Chromeium中的,现在也..._nodejs和js的关系

百度翻译错误提示 {‘error_code‘: ‘52003‘, ‘error_msg‘: ‘UNAUTHORIZED USER‘}_{"error_code":"52003","error_msg":"unauthorized us-程序员宅基地

文章浏览阅读8k次。这是我正确的代码:import hashlibimport requestsappid = 'xxx'salt = '1435660281'secretKey = 'xxx'queryWord = input('Please enter the English word that you want to translate into Chinese: ')signNum = appid + queryWord + salt + secretKeymd = hashlib.md5()md_{"error_code":"52003","error_msg":"unauthorized user"}

LR的一些常用函数_lr替换参数-程序员宅基地

文章浏览阅读4.3k次。收录一些常用函数有待日后慢慢玩: LR常用函数:lr_start_transaction 为性能分析标记事务的开始lr_end_transaction 为性能分析标记事务的结束lr_rendezvous 在 Vuser 脚本中设置集合点lr_think_time 暂停 Vuser 脚本中命令之间的执行 lr_end_sub_transaction 标记子_lr替换参数

Android开源项目分类汇总【二】-程序员宅基地

文章浏览阅读850次。项目地址:点击打开链接

随便推点

LAMP环境 源码编译安装(Apache 2.4.52 +mysql 8.0.28+php 8.1.3)_lamp环境安装源码包-程序员宅基地

文章浏览阅读1.9k次。一、升级软件及Centos 内核1、yum clean all2、yum update -y#升级系统及内核3、cat /etc/redhat-release #升级后查看版本4、yum install lrzsz vim wget dnf -y #安装系统常用工具包二、安装LAMP 环境依赖包2.1yum groupinstall "Development tools" -yyum install pcre-devel expat-de..._lamp环境安装源码包

我的 Mac 终端配置(Mac OSX + iTerm2 + Zsh + Oh-My-Zsh)_安装menlo regularforpowerline.otf和monacoforpowerline-程序员宅基地

文章浏览阅读4.3w次,点赞9次,收藏47次。相关工具介绍iTerm2:Mac 下 Terminal 终端的替代品,拥有更多强大的功能,想了解更多请戳 iTerm2 官网;zsh:Linux 的一种 shell 外壳,和 bash 属于同类产品;Oh-My-Zsh:用来管理 zsh 的配置,同时还有很多社区贡献的主题配置以及好用的插件可供使用,了解更多请戳 Oh-My-Zsh 官网 ;配置方案总览iTerm2 终端工具;..._安装menlo regularforpowerline.otf和monacoforpowerline.otf两个字体

【考试记录】阿里云DevOps助理工程师(ACA)_下面哪一项是按照用户故事格式进行述的?-程序员宅基地

文章浏览阅读875次。一:考试总结这个考试之前花了60块钱买的,后来因为一直在弄实习和硕士论文,所以就么有考试,趁着有时间了,抓紧考完,也好对得起这60块钱。这部分的主要内容其实和读本科的时候学习的软件测试、读硕士时候的项目管理的课差不多的。内容基本都是学过的东西,不过这些东西好多都是自动测试的,感觉还是挺高级的,还是值得深入研究的。二:真题1.云计算模型中, “平台即服务”是指下面哪一项?A. laas B. Paas C. Saas D. Faas解析:平台即服务一般指PaaS2.下面哪一项..._下面哪一项是按照用户故事格式进行述的?

机器人抓取中物体定位算法概述_机器人抓取定位算法-程序员宅基地

文章浏览阅读1w次,点赞21次,收藏130次。1. 引言机器人抓取的首要任务,是确定要抓什么,也就是需要定位目标物体在输入数据中的位置。这个过程可以分为三个层次,分别为物体定位但不识别、物体检测、物体实例分割。物体定位但不识别是指获得目标物体的2D/3D范围但是不知道物体的类别;目标检测是指得到目标物体的2D/3D包围盒,同时识别目标物体的类别;目标实例分割提供目标物体所占有的像素或者点级别的区域信息,同时识别目标物体的类别。本文来自论文h..._机器人抓取定位算法

VMware vSphere虚拟化基础管理平台-程序员宅基地

文章浏览阅读849次,点赞34次,收藏24次。VMware公司成立于1998年,2003年存储厂商EMC以6.35亿美元收购了VMware;2015年10月,戴尔宣布以670亿美元收购EMC。VMware公司在2018年全年收入79.2亿美元。

DB2表空间的基本操作之修改表空间大小_alter tablespace resize-程序员宅基地

文章浏览阅读3.4k次。DB2表空间的基本操作之修改表空间大小_alter tablespace resize

推荐文章

热门文章

相关标签