剖析ASP.NET三层构架

2023-12-09 00:58
文章标签 剖析 asp net 构架 三层

本文主要是介绍剖析ASP.NET三层构架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 实现步骤为:(4-3-6-5-2-1)

 

ID

 

 

项目

 

 

描述

 

 

用途

 

 

项目引用关系

 

 

实例所需文件

 

 

相关方法

 

 

1

 

 

Web

 

 

表现层

 

 

Web页和控件

 

 

引用BLL

 

 

WebUI.aspx

WebUI.aspx.cs

 

 

 

GetContent()

 

 

2

 

 

BLL

 

 

业务逻辑层

 

 

业务逻辑组件

 

 

引用 IDAL,Model,使用DALFactory创建实例

 

 

Content.cs

 

 

ContentInfo GetContentInfo(int id)

 

 

3

 

 

IDAL

 

 

数据访问层接口定义

 

 

每个DAL实现都要实现的一组接口

 

 

引用 Model

 

 

IContent.cs

 

 

ContentInfo GetContentInfo(int id)

 

 

4

 

 

Model

 

 

业务实体

 

 

传递各种数据的容器

 

 

无引用

 

 

ContentInfo.cs

 

 

 

 

 

5

 

 

DALFactory

 

 

数据层的抽象工厂

 

 

创建反射,用来确定加载哪一个数据库访问程序集的类

 

 

引用IDAL,通过读取web.config里设置的程序集,加载类的实例,返回给BLL使用。

 

 

Content.cs

 

 

IDAL.Icontent create()

 

 

6

 

 

SQLServerDAL

 

 

SQLServer数据访问层

 

 

Microsoft SQL Server特定的Pet Shop DAL实现,使用了IDAL接口

 

 

引用 Model和IDAL,被DALFactory加载的程序集,实现接口里的方法。

 

 

SqlHelper.cs

 

 

 

Content.cs

 

 

SqlDataReader ExecuteReader()

PrepareCommand()

ContentInfo GetContentInfo(int id)

 

 

OracleDAL

 

 

Oracle数据访问层

 

 

7

 

 

DBUtility

 

 

数据库访问组件基础类

 

 

GetSqlServerConnectionString得到数据库连接字符串,也可省去该项目,在SQLServerDAL.SqlHelper中用static readonly string SqlConnectionString代替。

 

 

无引用

 

 

 

 

 

 

 

bll :business Logic laywer 业务逻辑层
dal: data access laywer 数据访问层
model:实体层
DBUtility: 数据库应用层
common:常用处理组件层

DBUtility: 各种实用数据库操作
bll :处理实际的业务发生时候的逻辑。
dal: 数据访问层
common :没架构过
model:业务处理的对象。数据库的一个缓冲区

 

petshop4.0设计说明

一、项目名称及描述

1、WEB=表示层

2、BLL=业务逻辑层

3、IDAL=数据访问层接口定义

4、Model=业务实体

5、DALFactory=数据层的抽象工厂(创建反射)

6、SQLServerDAL=SQLServer数据访问层 / OracleDAL=Oracle数据访问层

DBUtility 数据库访问组件基础类

二、项目引用关系

1、Web 引用 BLL。

2、BLL 引用 IDAL,Model,使用DALFactory创建实例。

3、IDAL 引用 Model。

4、Model 无引用。

5、DALFactory 引用IDAL,通过读取web.config里设置的程序集,加载类的实例,返回给BLL使用。

6、SQLServerDAL 引用 Model和IDAL,被DALFactory加载的程序集,实现接口里的方法。

三、实现步骤

1、创建Model,实现业务实体。

2、创建IDAL,实现接口。

3、创建SQLServerDAL,实现接口里的方法。

4、增加web.config里的配置信息,为SQLServerDAL的程序集。

5、创建DALFactory,返回程序集的指定类的实例。

6、创建BLL,调用DALFactory,得到程序集指定类的实例,完成数据操作方法。

7、创建WEB,调用BLL里的数据操作方法。

 

各层间的访问过程:

1、传入值,将值进行类型转换(为整型)。

2、创建BLL层的content.cs对象c,通过对象c访问BLL层的方法GetContentInfo(ID)调用BLL层。

3、BLL层方法GetContentInfo(ID)中取得数据访问层SQLServerDAL的实例,实例化IDAL层的接口对象dal,这个对象是由工厂层DALFactory创建的,然后返回IDAL层传入值所查找的内容的方法dal.GetContentInfo(id)。

4、数据工厂通过web.config配置文件中给定的webdal字串访问SQLServerDAL层,返回一个完整的调用SQLServerDAL层的路径给 BLL层。

5、到此要调用SQLServerDAL层,SQLServerDAL层完成赋值Model层的对象值为空,给定一个参数,调用SQLServerDAL层的SqlHelper的ExecuteReader方法,读出每个字段的数据赋值给以定义为空的Model层的对象。

6、SqlHelper执行sql命令,返回一个指定连接的数据库记录集,在这里需要引用参数类型,提供为打开连接命令执行做好准备PrepareCommand。

7、返回Model层把查询得到的一行记录值赋值给SQLServerDAL层的引入的Model层的对象ci,然后把这个对象返回给BLL。

8、回到Web层的BLL层的方法调用,把得到的对象值赋值给Lable标签,在前台显示给界面

 

注意

1、web.config里的程序集名称必须与SQLServerDAL里的输出程序集名称一致。

2、DALFactory里只需要一个DataAccess类,可以完成创建所有的程序集实例。

3、项目创建后,注意修改各项目的默认命名空间和程序集名称。

4、注意修改解决方案里的项目依赖。

5、注意在解决方案里增加各项目引用。

这篇关于剖析ASP.NET三层构架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/471921

相关文章

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

深度剖析AI情感陪伴类产品及典型应用 Character.ai

前段时间AI圈内C.AI的受够风波可谓是让大家都丈二摸不着头脑,连C.AI这种行业top应用都要找谋生方法了!投资人摸不着头脑,用户们更摸不着头脑。在这之前断断续续玩了一下这款产品,这次也是乘着这个风波,除了了解一下为什么这么厉害的创始人 Noam Shazeer 也要另寻他路,以及产品本身的发展阶段和情况! 什么是Character.ai? Character.ai官网:https://

.NET 自定义过滤器 - ActionFilterAttribute

这个代码片段定义了一个自定义的 ASP.NET Core 过滤器(GuardModelStateAttribute),用于在控制器动作执行之前验证模型状态(ModelState)。如果模型状态无效,则构造一个 ProblemDetails 对象来描述错误,并返回一个 BadRequest 响应。 代码片段: /// <summary>/// 验证 ModelState 是否有效/// </

最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)

文章目录 一、自动配置概念二、半自动配置(误~🙏🙏)三、源码分析1、验证DispatcherServlet的自动配置2、源码分析入口@SpringBootApplication3、@SpringBootConfiguration的@Configuration4、@EnableAutoConfiguration的@AutoConfigurationPackage和@Import5、Auto

C语言深度剖析--不定期更新的第四弹

哈哈哈哈哈哈,今天一天两更! void关键字 void关键字不能用来定义变量,原因是void本身就被编译器解释为空类型,编译器强制地不允许定义变量 定义变量的本质是:开辟空间 而void 作为空类型,理论上不应该开辟空间(针对编译器而言),即使开辟了空间,也只是作为一个占位符看待(针对Linux来说) 所以,既然无法开辟空间,也无法作为正常变量使用,既然无法使用,干脆编译器不让它编译变

.Net Mvc-导出PDF-思路方案

效果图: 导语:     在我们做项目的过程中,经常会遇到一些服务性的需求,感到特别困扰,明明实用的价值不高,但是还是得实现;     因此小客在这里整理一下自己导出PDF的一些思路,供大家参考。     网上有很多导出PDF运用到的插件,大家也可以看看其他插件的使用,学习学习; 提要:     这里我使用的是-iTextSharp,供大家参考参考,借鉴方案,完善思路,补充自己,一起学习