三层架构延伸 转载

拉勾教育第五阶段Maven项目后台开发 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、前后端分离架构介绍二、技术选型三、注意事项3.1 数据库1对多的关系时,在1那一方可建立list集合编写sql语句3.2 Service层根据需求文档,接口文档决定返回类型3.3 Servlet层3.4 文件上传3.5 代码的维护性简单来说就是每个功能实现独立的作用if-else,反射优化总结 一、前后端分离架构介绍 前后端分离已成为互联网项目开发的业界标准使用方式,将前端和后端的开发进行解耦。并且前后端分离会为以后的大型分布 阅读详情

在我们刚开始学习架构的时候,首先会想到分层的概念,分层架构比较经典的是三层架构,那么,什么是三层架构呢?它包括表现层,业务层,数据访问层;而对于一个新手来说,从抽象意义上的三层架构,逻辑上就划分为三个层。

image

这个是最基本的三层架构模式。

表现层 充当系统的界面呈现以及UI逻辑的角色,也就是说,UI(用户界面)属于表现层;

举一个对于asp.net WebForm来说,人们喜欢把对于UI的控制逻辑(服务器控件的读取、设置、事件等等)写在页面的后置隐藏代码中,并且依赖业务逻辑层。当然,服务器控件支持数据绑定的功能,可以通过数据源进行绑定控件。这样就可以节省在后置隐藏中的代码。

因此,我们就可以把表现层分为UI用户界面以及UI逻辑:

image

UI用户界面的职责 只是作为数据输入和输出后的展示工作。

UI逻辑的职责 是负责业务逻辑层以及UI用户界面之间的数据交互,并且尽可能地让UI逻辑不依赖于UI技术。

其中UI用户界面的实现方式有很多,包括ASP.NET,WinForm,WPF,Silverlight,移动Web,智能设备等等。

image

将表现层中UI页面和UI逻辑分离的策略中,当前使用最多的两种模式是MVC模式和MVP模式。

MVC模式,即模型-视图-控制器模式 ,通过视图触发并执行某个操作,调用控制器,通过控制器去操作业务层,最终返回模型,在视图中进行展示。这里的模型可以是一个领域模型(DM),也可以是一个数据迁移对象(DTO)。

MVP模式,即模型-视图-展示器模式 ,和MVC模式有点像,不同的是MVP中视图和模型是被完全分离出来的,视图中定义一个接口,而展示器通过调用该接口的方法以控制视图。因此,视图和模型是松散的,展示器也充当了一个控制器的角色,同时它也不依赖于UI技术。

另外再介绍一种模式PM(Preentation Model),它可以说是MVP的变体,在PM中,视图不定义接口,这里的模型只是表示视图状态的类,视图中的元素被直接绑定到模型属性上。例如在WPF中,WPF就先天的具有数据双向绑定机制以及事件通知属性机制。

所以它特别适用于WPF,Sliverlight等等。

image

在开始业务层之前,不得不说一个前提,在一个小型项目中,直接让表现层调用业务层,足以解决所有问题。但是,当项目大到使用多种表现形式,如使用了 各种UI技术,ASP.NET,WPF,移动设备等等,就要考虑在你的表现层和业务层之间增加一个层,以至于让表现层和业务层解耦,因为业务层作为一个业 务中间件的平台,最好不要暴露于表现层中,这个层就是传说中的服务层。架构图又演化为:

image

服务层实际上并不执行任何具体的工作,其功能在于组织各个业务对象,服务层将业务层所有的细节对表现层都隐藏起来,服务器将组织业务逻辑层中的组件,并且通过数据迁移对象(DTO)与表现层交互,因此就产生一个DTO模型。

为了实现服务的可重用性,需要使用服务接口,表现层通过规定的接口访问功能。服务的实现继承服务接口,而服务的实现专注于业务层的调用。

image

对于服务层,常用的方法包括Web服务、.NET Remoting、Rest以及WCF技术。

本人比较建议使用WCF作为服务,因为可以方便地通过配置达到远程调用服务的目的。

服务层消除了两个表现层和业务层之间的耦合,服务层可以实现一个远程接口,达到多UI技术甚至多平台上的通信。

当然增加服务层也有缺点,假如使用WCF服务,会增加系统的调用开销,进而影响性能。

image

业务层 中包含系统所需要业务过程上的实现,并与下层的数据访问层交互。

我们通常也叫做业务层叫做业务逻辑层,但我认为业务逻辑层是属于业务层的一方面,业务逻辑更专注于业务上逻辑算法的实现。因为业务层还可以包括其他的方面。

业务层必须包括对业务实体尽心建模的对象模型,表达了客户的所有策略和需求的业务规则,因此就产生了领域模型。

(PS:如果这里你不使用领域模型,那么需要采用业务规则层进行业务功能上的业务规则的验证和控制)

领域模型包括对实体的属性定义,方法定义以及实体与实体之间的关系。从这个角度上看,UML建模至关重要,通过对UML动态图和静态图的描述,可以映射到领域模型中。

从服务层刚才讲到了DTO模型,这里需要一个机制将DTO转化为领域模型,所以产生了DTO映射层(DTOMapper)。

另外业务层还包括核心中间件技术,包括第三方组件,以及工作流引擎等等。

image

业务层需要考虑到一些与数据访问层交互的设计模式,模式中包括事物脚本模式、表模块模式、活动记录模式、领域模型模式。

事物脚本模式 是通过方法来执行业务流程,它是一个过程式模型,事物脚本的每个方法都有一个特定的事物脚本,它侧重于业务上一系列流程上的顺序操作,它实现起来很简单,但是它有个致命的缺点就是它会造成很多重复的代码。

表模块模式 比起事物脚本模式,具有一定的结构,它的思想也很简单,每个数据表都定义一个业务组件(实体类,实体操作类),在.NET中更多的使用DataSet作为表模型的数据交互。但是它也有一个缺点就是它是从数据库驱动它不适合于大量的数据表以及数据表之间的复杂关系。

活动记录模式 中的对象中,可以包含数据和方法。它接近于数据表的结构,它的对象中执行方法中可以包含CRUD操 作,验证算法,以及其他的计算功能。一般来说,领域模型不是太复杂,活动记录模式是个好选择。当然他也存在问题,同样地,它对于复杂的业务上,维护的成本 也很高,并且如果需求变更导致数据库修改,就需要调整记录对象模型中的相关代码。

经典应用:LINQ-TO-SQL以及Castle ActiveRecord。

领域模型模式 是从领域驱动设计中衍生来的,它是以业务为核心的设计模式。它对于复杂的业务逻辑,相当适用。前三种方式使用的是以数据驱动方式,数据驱动方式特点简单,但是当系统到了一定的规模后,就会到难以维护的程度。

image

数据访问层 的目的很明确,主要作为提供数据持久化的功能,包括数据的读取和写入,另外还必须包括事务处理,并发控制等等。

操作数据库的方法可以有两种方式,ORM方式,ADO.NET方式。

ORM可以采用一些第三方的ORM框架来实现,ADO.NET采用ASP.NET自带的数据库操作来实现。

不同的数据库具有不同的持久化实现,因此这里添加一个存储仓库接口层,来适应不同的数据库实现,这里你可以使用IOC依赖注入方式进行数据库选型,可以利用Unity、Spring.NET、Castle的IOC容器等等。

image

最后各个层中都可以依赖于公共基础设施层。

公共基础设施层 可以包括Common通用模块,Logging日志模块,Exception异常模块,Configuration配置模块,DI依赖注入模块,单元测试模块以及第三方组件(例如NHibernate、Sprint.NET、Castle、Quartz计划任务等等)

最终图:

image

总结:项目类型、项目规模以及业务上的需求,都影响着系统架构的设计,系统架构并不是一层不变的,没有最好的架构,只有更好的架构,并且从项目中多思考系统的扩展性。文中对于架构的分析,只是从通常的角度上去考虑,在项目中,您还需要根据实际情况去做调整。

系统架构设计基础知识 是系统的骨架和根基,支撑和链接各个部分,包括构件、连接件、约束规范以及指导这些内容设计与演化的原理,是刻画系统整体抽象结构的一种手段。:应用程序不受错误使用和错误输入的影响,在发生意外错误时,确保应用系统处于预先定义好的状态,保证软件按照某种已经定义好的方式终止执行。(模块结构图、构件图),并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策和演化的基本原理,是构建于软件系统之上的系统级复用。定义领域的边界,分析领域中系统的需求,确定哪些需求是领域中的系统广泛共享的,从而建立领域模型。 阅读详情

相关推荐

VLAN/Trunk以及三层交换

VLAN/Trunk以及三层交换

gdfhhj的博客 436

常见的系统架构及演变过程

系统架构是指系统研发过程中,负责根据需求确定主要的技术选型,主要的开发工具,设计系统的整体框架结构。随着互联网的发展,网站应用的规模不断扩大,需求的不断增加,带来的技术上的巨大压力。系统架构也因此不断地更新、升级、迭代。

weixin_51326478的博客 2745

GenAI责任实践框架:策略即护栏的三层落地方法论

生成式AI(GenAI)在企业落地中面临幻觉、偏见、版权与隐私等系统性风险,其本质是模型不可控性与业务确定性之间的张力。负责任的GenAI使用并非简单套用合规条文,而是将政策转化为可嵌入技术栈的运行时约束,依托RAG可信溯源、提示词约束注入、动态数据脱敏等关键技术实现风险前置防控。该实践强调‘策略即护栏’理念,在技术层筑牢模型输出边界,流程层贯通人机协作断点,认知层降低使用者决策负荷。尤其适用于金融、医疗、制造等强监管行业,解决客服承诺越界、营销事实错误、敏感信息泄露等高频真实场景,让责任机制真正驱动业务增

weixin_30493401的博客 423

C#/.Net企业级系统架构设计实战精讲教程

课程通过实际项目融入常用开发技术架构,讲授风格独特,提供详细上课日志及答疑,赠送配套的项目架构源码注释详细清晰且表达通俗,均能直接在实际项目中应用,正真的物超所值,价格实惠任务作业:综合运用《C#/.Net企业级系统架构设计实战精讲教程》课程所学知识技能设计一个学生成绩管理系统的架构。要求:1.系统基于MVC的三层架构,各层单独建不同的解决方案文件夹。2.采用Model First开发方式,设计架构时只需要设计学生表(TbStudent)和课程表(TbCourse)。学生表必须有的字段是ID、stuName、age;课程表必须有的字段是ID、courseName、content。3.数据访问层采用Entity Framework或NHibernate来实现,必须封装对上述表的增删改查方法。4.必须依赖接口编程,也就是必须要有数据访问层的接口层、业务逻辑层的接口层等接口层。层层之间必须减少依赖,可以通过简单工厂或抽象工厂。5.至少采用简单工厂、抽象工厂、Spring.Net等技术中的2种来减少层与层之间的依赖等。6.封装出DbSession类,让它拥有所有Dal层实例和SaveChanges方法。7.设计出数据访问层及业务逻辑层主要类的T4模板,以便实体增加时自动生成相应的类。8.表现层要设计相关的控制器和视图来验证设计的系统架构代码的正确性,必须含有验证增删改查的方法。9.开发平台一定要是Visual Studio平台,采用C#开发语言,数据库为SQL Server。10.提交整个系统架构的源文件及生成的数据库文件。(注意: 作业需写在优快云博客中,请把作业链接贴在评论区,老师会定期逐个批改~~)

从搬运到策展:高转化文章分享的三层模型与实操框架

信息分享不是简单传递链接,而是知识流动的关键枢纽。其本质是信息策展(Information Curation),需兼顾认知减负、场景适配与反馈闭环。基于问题-方案-证据的价值锚定、身份标签+当前困境+本文解法的标题重构术,以及微信私聊、小红书、知识星球等渠道的注意力颗粒度适配,可显著提升打开率、填空完成率与业务转化率。尤其在职场知识管理、教育内容分发与自媒体运营中,将分享升级为‘活文档’和‘可执行接口’,能驱动个人影响力沉淀与组织级知识复用。本文聚焦分享动作本身的技术化拆解,涵盖选文决策树、批注黄金区、渠道

weixin_30430169的博客 372

【系统架构设计师】十一、系统架构设计(层次架构风格|MVC|面向服务的架构风格|ESB)

三层C/S架构:将处理功能独立出来,表示层和数据层都变得简单。表示层在客户机上,功能层在应用服务器上,数据层在数据库服务器上。既然将两层C/S架构中的数据从服务器中独立出来了。 SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通信,不涉及底层编程接口和通信模型。 企业服务总线ESB:简单来说是一根管道,用来连接各个服务节点。ESB的存在是为了集成基于不同协议的不同服务,ESB 做了消息的转化、解释以及路由的工作,以此来让不同的服务互联互通。

帅次的博客 3988

.NET三层架构的个人理解与总结

花了一周的时间研究了关于.NET三层架构的基本知识先简单的介绍下三层在这里所说的三层并不简单指物理意义上的三层概念而是应该以数据为单元来划分。主要是考虑到数据的访问及数据安全来采用三层技术。三层:WEBUI/BLL/DAL/MODEL首先 这里的意思分别为:表示层、业务逻辑层、数据访问层、数据模型层。其中BLL/DAL/MODEL顺序及引用不能发生变化也就是DAL此用MODEL,BLL引用DAL,...

weixin_30871905的博客 96

AutoCAD 2025在Win10/Win11上的官方安装、配置与问题排查全指南

对于需要在 Windows 11 或 Windows 10 系统上部署 AutoCAD 2025 的设计师、工程师和 IT 支持人员来说,一个稳定、合规的安装流程是高效工作的基石。网络上充斥着各种所谓的“免费下载”和“一键安装”教程,但这些资源往往来源不明,可能捆绑恶意软件、导致软件崩溃,甚至引发严重的许可合规风险。本文旨在提供一个清晰、安全、基于官方最佳实践的 AutoCAD 2025 安装与配置指南,重点解决在 Windows 11 和 Windows 10 系统上部署时可能遇到的兼容性问题、安装失败以

weixin_34396103的博客 450

新闻编辑室的AI协作者:认知延伸而非替代

新闻AI本质上是面向信息过载场景的认知增强工具,其核心原理在于将人类记者从重复性信息筛选、基础事实核查等低阶劳动中解放出来,从而延伸专业判断的时间与深度。技术价值不在于生成内容,而在于提升信源可追溯性、核查可验证性与选题前瞻性;典型应用场景包括突发新闻智能归类、跨信源事实矛盾预警、政策语义漂移监测等。它要求AI严格限定在结构化、可证伪的操作域内,将价值判断、伦理权衡与叙事温度等不可编码维度,坚定交还给人——这正是新闻业AI化落地的底层逻辑与实践起点。

weixin_30307921的博客 589

NVIDIA Orin AGX开发环境搭建避坑指南:从Ubuntu 22.04到ROS2完整配置流程

本文详细介绍了NVIDIA Orin AGX开发环境搭建的全流程,从Ubuntu 22.04系统安装到ROS2深度优化,涵盖驱动部署、CUDA环境配置、散热与功耗管理等关键步骤。特别针对Orin AGX的特性提供了实用避坑指南和性能优化技巧,帮助开发者高效完成开发环境配置。

weixin_28340315的博客 451

AI快速变现之路,AI视频创作

初期投入$3000(工具订阅+样片制作),重点攻克跨境电商和本地生活服务市场。关注2025年AIGC视频工具的API降价趋势(如Pika企业版折扣可达50%),建议与云服务商签订长期合作协议。

qq_29896351的博客 1981

云计算架构

云计算架构 文章转载之 http://labs.chinamobile.com/know/45897 [导读]云计算——至少作为虚拟化的一种延伸,影响范围已经越来越大。但是,目前云计算还不能支持复杂的企业环境。因此云计算架构呼之欲出,经验表明,在云计算走向成熟之前,我们更应该关注系统云计算架构的细节。基于对现有的一些云计算产品的分析和个人一些经验,总结出一套云计算架构,云计算架构主

Fisher_n的专栏 1171

QGC4.0.11界面修改

QGC4.0.11。

超维空间科技的博客 2466

一图看懂边缘计算整体架构

导读:本文将对云、边、端协同的边缘计算系统的整体架构进行梳理和分析。作者:崔广章来源:大数据DT(ID:hzdashuju)边缘计算系统整体分为云、边、端三部分,具体如图2-1所示。▲图2-1 边缘计算整体架构(点击图片可放大)01 云CPU支持X86和ARM架构;操作系统支持Linux、Windows和macOS;容器运行时支持Docker、Containerd和Cri...

华章IT官方博客 2284

用 i18n 驯服标准文案:SAP Fiori elements 的 UI 文本本地化与可替换实践全景

本文系统介绍了SAP Fiori elements应用中UI文本本地化的全面解决方案。从框架层与应用层文本的分类原则出发,详细解析了标准文本替换的四步法:资源准备、键值定位、模型配置和验证部署。文章特别针对不同开发场景,提供了XML、ABAP CDS和CAP CDS三种注解方式的文本覆盖写法示例。同时深入探讨了语言回退机制、表格组件标准键覆盖等关键技术细节,并指出了实际项目中的常见问题与解决方案。通过结合官方文档和社区实践,为开发人员在不破坏框架约定的前提下,实现稳定可靠的UI文本本地化提供了完整指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 296

DICOM图像知识:深入详解DICOM的层级关系

解析DICOM的四个主要层级:Patient(患者)、Study(检查)、Series(序列)和SOP(服务-对象对),探讨它们之间的关系、各自的唯一标识符以及在实际应用中的用途

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 3304

工业互联网平台体系架构

工业互联网平台是面向制造业数字化、网络化、智能化需求,构建基于海量数据采集、汇聚、分析的服务体系,支撑制造资源泛在连接、弹性供给、高效配置的工业云平台,包括边缘、平台(工业PaaS)、应用三大核心层级。可以认为,工业互联网平台是工业云平台的延伸发展,其本质是在传统云平台的基础上叠加物联网、大数据、人工智能等新兴技术,构建更精准、实时、高效的数据采集体系,建设包括存储、集成、访问、分析、管理功能的使...

weixin_30727835的博客 3464

肖特基二极管的反向恢复过程

本博客简述肖特基二极管反向恢复过程。

记得诚 1万+

面向服务的架构SOA

版权声明:搬运能够,但请注明出处 https://blog.csdn.net/jzh440/article/details/26933505 SOA简单介绍 SCA实现SOA的最佳方式 Apache...

weixin_30502157的博客 123

YOLO11改进|注意力机制篇|引入ELA注意力机制

YOLO11添加ELA注意力机制

A1983Z的博客 3647

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

学习微服务前需要了解的知识 ——初识微服务架构

更完JAVASE后准备自学springboot,springcloud,spring data jpa一套流 觉得这篇文章很好,特转载过来!提醒自己之后的学习!   单体架构(Monolithic) 十年前左右,我去公司面试时,面试官问我的第一个问题是让我简要介绍下软件设计中的三层设计模型(表示层、业务逻辑处理层、数据访问层): 表示层:通常理解为用于和用户交互的视图层; 业务逻辑处理...

JavaCoder_juejue的博客 1986

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

转载:三个应用实例告诉你什么是云计算

如果你从事的是云计算相关行业,那么一定会有很多人让你用一句话介绍一下:什么是云计算?一定有很多。之前我在回答这个问题的时候,都会直接套用百度百科的解释:云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。一般的提问者听完我的解释之后会有两种反应,哦和呵呵。   现在我一般采用一种比较简单粗暴的方式来告诉你什...

平平无奇 776

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

软件架构设计和概要设计

架构设计和概要设计 (2012-09-11 21:35:57) 转载▼ 标签: 架构设计 概要设计 分类: 随笔文章 初步再来探讨下架构设计和概要设计的区别和边界问题。先谈下架构设计:架构设计包括了功能性架构和技术架构设计两个部分的内容,功能性架构解决业务流程和功能问题,而技术架构解决非功能性需求等问题。两种架构都包括了动态和静态两个方...

weixin_30388677的博客 769

浅谈数据中心网络结构的发展历程

传统数据中心的网络架构 数据中心计算网络主要由大量的二层接入设备与少量的三层设备组成的网络结构,是传统上标准的三层结构: 1、接入层,用于连接所有的计算节点,在目前的数据中心中,通常以机柜交换机的形式存在; 2、汇聚层,用于接入层的互联,并作为该汇聚区域二三层的边界,同时各种防火墙、负载均衡等业务也部署于此; 3、核心层,用于汇聚层的的互联,并实现整个数...

weixin_34363171的博客 987

基于web的教室管理系统

教室资源综合管理系统采用的是ASP.NET+SQL 2000模式,它的诸多功能的实现依靠的是B/S三层架构的合理运用,是一个典型的综合信息服务型平台。互联网上的信息管理是现有的信息管理系统的一种延伸,它对于现有的信息管理起到了一个很好的互补作用。教室管理系统可以使使用者对教室资源管理更加有效,能够更好的掌握各种信息、并及时的作出处理。现在的各大高校和教育机构,各种用来实现教室管理的程序有很多...

weixin_34290631的博客 2765
上一篇: 激励程序员的9句名言
下一篇: .net 开源学习 转载
andycode
博客等级 码龄17年 12粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值