深入解析三层架构:构建稳定高效的软件系统

news2024/11/20 10:30:50

概述

顾名思义,三层架构分为三层,分别是“数据访问层”、“业务逻辑层”、“表示层”。

数据访问层:数据访问层在作业过程中访问数据系统中的文件, 实现对数据库中数据的读取保存操作

表示层:主要功能是 显示数据和接受传输用户的数据,可以在为网站的系统运行 提供交互式操作界面,表示层的应用方式比较常见,例如 Windows窗体和Web页面

业务逻辑层: 将用户的输入信息进行甄别处理,分别保存。 建立新的数据存储方式,在存储过程中对数据进行读取, 将“商业逻辑”描述代码进行包含

三层架构软件系统 为用户的数据传输、提取、储存创造了便利条件。在应用数据时,信息划分架构开发项目,对各层次之间的 工作职责进行清晰规划, 这样就降低了网站系统的维护风险

三层原理

3个层次中,系统主要功能和业务逻辑都在业务逻辑层进行处理。

所谓三层体系结构, 是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即把这三个层放置到一台机器上。

三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是 通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互

三层架构中主要功能与业务逻辑一般要在业务逻辑层进行信息处理和实现,其中三层体系架构中的客户端和数据库要预设中间层,成为组建层。三层架构中的三层具有一定的逻辑性,即是将三层设置到同一个计算机系统中,把业务协议、合法校验以及数据访问等程序归置到中间层进行信息处理,一般客户端无法和数据库进行数据传输,主要是利用COM/DCOM通讯和中间层构建衔接通道,实现中间层与数据库的数据传输,进而实现客户端与是数据库的交互。

结构

表示层

表示层又称表现层UI,位于三层构架的最上层,与用户直接接触,主要是B/S信息系统中的Web浏览页面。作为Web浏览页面,表示层的主要功能是实现系统数据的传入与输出,在此过程中不需要借助逻辑判断操作就可以将数据传送到BLL系统中进行数据处理,处理后会将处理结果反馈到表示层中。换句话说,表示层就是实现用户界面功能,将用户的需求传达和反馈,并用BLL或者是Models进行调试,保证用户体验。

业务逻辑层

业务逻辑层BLL的功能是对具体问题进行逻辑判断与执行操作,接收到表现层UI的用户指令后,会连接数据访问层DAL,访问层在三层构架中位于表示层与数据层中间位置,同时也是表示层与数据层的桥梁,实现三层之间的数据连接和指令传达,可以对接收数据进行逻辑处理,实现数据的修改、获取、删除等功能,并将处理结果反馈到表示层UI中,实现软件功能。

数据访问层

数据访问层DAL是数据库的主要操控系统,实现数据的增加、删除、修改、查询等操作,并将操作结果反馈到业务逻辑层BLL。在实际运行的过程中,数据访问层没有逻辑判断能力,为了实现代码编写的严谨性,提高代码阅读程度,一般软件开发人员会在该层中编写DataAccessCommon,保证数据访问层DAL数据处理功能。

各层作用

1、 数据访问层:主要是对 非原始数据( 数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据库的操作,而不是数据,具体为业务逻辑层或表示层提供数据服务。

2、业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

3、界面层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。

规则

三层结构并不是普通的 DAL,BLL,WebUI三个模块,三层程序有一些需要约定遵守的规则:

1、最核心的模块规则,表现层只是外壳作用, 不能包含任何BizLogic的处理过程

2、各层次模块设计时应该从业务逻辑层出发,而不是开始于表现层.。 业务逻辑层在API上应该实现所有BizLogic,以面向对象的方式

3、不论数据层是一个简单的SqlHelper,还是带有Mapping的Classes, 应该保证其与抽象的系统层无关

4、 不管使用COM+(EnterpriseService), 还是Remoting,还是WebService之类的远程对象技术, 不管部署是否在服务器上,在起码在设计时必须要 考虑多台服务器通过 负载均衡作集群

综上,考虑一个项目是否符合 应用三层或多层设计时, 必须要考虑是否真正符合项目的需求

优缺点

优点

1、开发人员可以 只关注整个结构中的其中某一层

2、可以 很容易的用新的实现来替换原有层次的实现

3、可以 降低层与层之间的依赖

4、有利于标准化;

5、 利于各层逻辑的复用

6、 结构更加的明确

7、在后期维护的时候, 极大地降低了维护成本和维护时间

8、避免了表示层直接访问数据访问层,表示层只和业务逻辑层有联系, 提高了数据安全性

9、 有利于系统的分散开发,每一个层可以由不同的人员来开发, 只要遵循接口标准,利用相同的对象模型实体类就可以了,这样就可以大大提高系统的开发速度

10、 方便系统的移植,如果要把一个C/S的系统变成B/S系统,只要修改三层架构的表示层就可以了。业务逻辑层和数据访问层几乎不用修改就可以轻松的把系统移植到网络上。

11、 项目结构更清楚,分工更明确,有利于后期的维护和升级

缺点

1、 降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2、 有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

3、 增加了开发成本

应用

(1)应用服务器。

服务器一般包括 有连接与无连接形式, 无连接在最底层要设置UDP/IP协议实现服务器通信功能,同时在实际使用的过程中, 由于客户机无法保证可靠的传输渠道,使得客户机向服务器提交请求时,很容易造成请求的丢失、延迟以及传递失序等传输问题,进而降低通信质量。UDP的可靠性很低,在实际运行中UDP 要依托于下层IP网络进行交付分组,无法引入检验程序,而IP网络还要由实际硬件网络或者是相关网关决定其工作质量。因此,从这一层面上看,下层网络的好坏直接关系到UDP工作。在进行开发有连接服务器的过程中, 要利用TCP/IP通信协议,利用互联网创建良好的通信环境,进而提高通信数据的真实性和可靠性。TCP/IP通信协议 可以对数据信息进行验证与校对,保证数据信息的完整性。同时在实际运行中, 可以通过数据的序列号排序保证数据信息的有序到达,防止出现信息重复分组的情况。另外,这种通信协议可以对流量进行有效控制, 确保发送信息速度在接收方的承受范围以内,通过INTERNET,实现服务器的面向连接

(2)应用客户端。

在三层构架系统中,客户端是使用者的主要功能体验区域,相比于服务器而言非常简单。一方面,在三层构架运行的过程中, 客户机软件要和各个服务器进行相互通信,不需要过于重视并发性处理。另一方面,一般客户机软件可以仿照常规程序进行指令执行,不需要进行外加保护,依托于操作系统进行强迫性保护。但与此同时对界面具有极高的要求,系统分析的过程中就要进行专门的界面设计,同时要和客户进行及时沟通, 掌握客户的实际需求,实现高效的信息反馈与交流沟通,进而保证信息系统软件界面设计的质量和效率。

(3)数据服务器。

在进行数据服务器选择的过程中, 要根据信息系统平台要求和用户期望要求,同时对应各个服务器的特点进行使用与选择。一般情况下出于对系统性能的考虑, 会选择SQLSERVER数据服务器,设计阶段中要通过Proactive等有效措施对系统数据库的实际使用性能进行不断地优化与完善。同时管理人员要和程序设计人员进行有效的沟通与协作, 明确信息系统软件的性能目标,设置性能期望值,构建系统资源组合体系,满足用户的实际需求。

(4)数据库和应用服务器的连接。

在基于三层构架的信息系统开发中,应用服务器要 利用SQL语言进行连接数据库服务器,其连接方法 包括DB-Library、DAO以及OLE等方式,其中DB-Library是最为常见的连接方式,作为SQLSERVER的重要接口层, 具有极强的访问信息效率和访问速度。这主要是 源于DB-Library的语言开发能力, 直接省去DAO以及OLE等连接方式中抽象层的调用,节省了信息访问时间。同时,三层构架适用于使用诸多开发语言的信息系统开发,不是.NET的专利,也不是专门用在数据库上的技术, 而是一种更加普适的架构设计理念,除了 数据、逻辑、界面等层次之外,在实际应用中 还会根据需要多出传递数据的层、接口层等等。在结合DB-Library数据库连接后, 设置NTWDBLIB.LIB组建,构建CDBConn实体类库体系,实现数据库与应用服务器的连接。因此,信息系统软件架构可 以为系统开发创造出良好的分布式计算环境,其中 逻辑层可以 实现多个机器的同时运行, 通过计算机网络计算能力, 强化系统各个功能板块的精准性和复用性, 进而有效减少了信息系统软件开发的时间和周期,保证信息系统的 安全性与拓展性,实现系统功能的最大化实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1709787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

易查分小程序 学生成绩管理小程序

亲爱的老师们,是不是每次成绩公布后,家长们的连环夺命call让你头大?担心孩子们的成绩信息安全,又想快速分享给家长,这可咋整?别急,易查分小程序来帮忙啦! 安全有保障 智能验证码&a…

Java+IDEA+SpringBoot药物不良反应ADR智能监测系统源码 ADR智能化监测系统源码

JavaIDEASpringBoot药物不良反应ADR智能监测系统源码 ADR智能化监测系统源码 药物不良反应(Adverse Drug Reaction,ADR)是指在使用合格药品时,在正常的用法和用量下出现的与用药目的无关的有害反应。这些反应往往因药物种类、使用…

Vite + Vue3 + Electron 创建打包桌面程序

10 【Vite Vue3 Electron 创建打包桌面程序】 1.使用 Vite 构建 Electron 项目 1.1 创建 Vite 应用,安装 Electron 依赖 创建一个 Vite 项目 npm init vitelatest安装 Electron 相关依赖 npm install electron -D npm install vite-plugin-electron -D 1.2 在…

网络工程师---第四十三天

1、网络地址转换请简述DNS服务器迭代查询与递归的区别? 2、请从技术方面简述RAIDO、RAID1、RAID3、 RAID5的特点? 3、请从层次结构、部署设备和功能配置方面描述层次化的网络结构? 4、请简述IPSECVPN和AH和ESP的区别? 5、请简述ID…

5G工业数采网关是什么?天拓四方

随着工业4.0时代的到来,数字化、网络化、智能化成为工业发展的新趋势。在这个过程中,5G工业数采网关作为一种关键设备,发挥着越来越重要的作用。本文将详细解析5G工业数采网关是什么,以及它在工业领域中的应用和重要性。 一、5G工…

Android Graphics图形栈SurfaceFlinger之间各种Layer以及对应Buffer之间的关系

Android Graphics图形栈SurfaceFlinger之间各种Layer以及对应Buffer之间的关系 SurfaceFlinger layer之间的对应关系

云衔科技:为什么推荐使用zoho crm客户管理系统?

在当今快速变化的商业环境中,企业对高效、智能化的客户关系管理(CRM)系统的需求日益增长。Zoho CRM,作为全球领先的企业级CRM解决方案提供商,凭借其全面的功能、高度的可定制性、以及无缝集成的生态系统,成…

4、xss-labs之level4、lecel5

一、level4 1、测试分析 level4跟之前的3一样的思路,闭合value的值,但是通过双引号闭合,然后使用onclick的属性弹窗绕过 输入3的payload: 2、所以构造payload payload:"οnclickalert(1)// 二、level5 1、测…

适用于Android的最佳数据恢复软件

如果您的 Android 设备崩溃,您需要找到一种方法来取回您的数据。幸运的是,有许多数据恢复程序可以帮助您恢复丢失的文件。有些是免费的,而另一些则需要付费。这是适用于Android设备的最佳数据恢复软件列表。 什么是数据恢复软件? …

基于盲源分离和半盲源分离的心电信号伪影消除方法(MATLAB 2018)

心电信号是通过测量放置在人体皮肤上的电极之间的电位差来获取的,其本身具有信号微弱、频段低、不稳定等特性。因此ECG信号在实际采集时极易受到不同噪声的影响,这会造成心电图本身的波形形态特征的失真,从而导致错误诊断和对患者的不当治疗。…

新建一个esri_sde_gists的服务

需求 新建一个esri_sde_gists的服务 步骤: 需要拷贝ora11gexe目标为新的目录,例如ora11gexe_gists 运行drivers找到etc下面的services文件,添加端口5152: 检查sde的library并创建: CREATE or REPLACE LIBRARY ST_S…

数据驱动的UI艺术:智能设计的视觉盛宴

数据驱动的UI艺术:智能设计的视觉盛宴 引言 在当今这个数据泛滥的时代,大数据不仅仅是一种技术手段,它更是一种艺术形式。当大数据遇上UI设计,两者的结合便催生了一种全新的艺术形式——数据驱动的UI艺术。本文将探讨如何将数据…

python内存马学习

python内存马学习 python内存马学习 python内存马学习环境搭建和复现分析payloadFlask 请求上下文管理机制bypass高版本flask内存马的利用before_request**after_request** teardown_requesterrorhandler相关例题H&NCTF 2024 ezFlask python内存马 环境搭建和复现 from fl…

go defer

type _defer struct {siz int32started boolopenDefer boolsp uintptrpc uintptrfn *funcval_panic *_paniclink *_defer }runtime._defer 结构体是延迟调用链表上的一个元素,所有的结构体都会通过 link 字段串联成链表。 只…

【区块链】外部应用程序与区块链进行交互

一,外部应用程序与区块链进行交互案例目标与流程 1.1案例目标 掌握FISCO BCOS应用环境的搭建 与使用(FISCO BCOSWeBASE)掌握基于Java SpringBoot的应 用程序后端项目搭建与开发。掌握应用程序后端与FISCO BCOS 链的交互。掌握应用程序前端…

二叉树(概念详解)

目录 树树的概念完全二叉树和满二叉树完全二叉树存储完全二叉树用数组存储堆 树 树是一种非线性的数据结构 树是根朝上的,叶子是朝下的 树是递归定义的【根N棵子树】 递归定义:大事化小,可以理解为套娃 树的子树之间是独立的,所…

【p-seamless-scroll】一个创建无缝滚动效果的 js 插件

p-seamless-scroll (github:https://github.com/pbstar/p-seamless-scroll)是一个创建无缝滚动效果的 js 插件。它有着轻量且高效的特性,支持丰富的自定义配置选项,提供了一系列 API 方法以及事件监听功能。 特点 丰…

【uniapp】uniapp页面介绍

目录 开发工具:HBuilderX介绍特点和功能 页面简介页面管理新建页面删除页面页面改名pages.json 设置应用首页 页面内容构成template模板区script 脚本区export default 外的代码export default 里的代码 style样式区 页面生命周期Vue2 页面及组件生命周期流程图Vue3…

养猫这5个必备神器你还没用?宠物空气净化器吸毛效果惊人!

养猫的铲屎官们,你们是否经常为家里的猫毛和异味感到困扰?尽管养猫能带来许多欢乐,但随之而来的猫毛和气味问题确实让人头疼。今天,我将为大家介绍养猫的五个必备神器,特别是宠物空气净化器,它在吸毛和去除…

官宣!马斯克的xAI获60亿美元融资,估值240亿美元

5月27日晚,马斯克旗下的大模型平台xAI在官网宣布获得60亿美元B轮融资,估值240亿美元。本次主要投资者包括Valor Equity Partners、红杉资本、国王控股、沙特王子-Bin Talal、Vy Capital等。 这也是大模型赛道史上最高单笔融资之一,超过Anthr…