.NET三层架构各项目之间的引用关系及如何添加引用?
1.1三层之间的引用
整个.NET框架的项目创建完成之后,在开发之前,还需要建立各个项目之间的引用关系,以便在编写C#业务逻辑代码时调用相关项目的类库。
1.1.1 引用关系规则
.NET三层架构中的UI、BLL、DAL、Model之间的引用是有顺序的,不能随便的引用和调用。它们之间的引用规则如下:
- Model层被UI、BLL、DAL层引用和调用。
- UI层只能引用和调用BLL层和Model层。
- BLL层只能引用和调用DAL层和Model层。
- DAL层只能与Model交互,并且操作SQL Server数据库。
1.2. 添加引用关系
我们在Visual Studio开发工具中,创建了4个项目,这4个项目的名称空间都是不一样的,并且都存在不同的文件夹中。默认不能相互调用。它们之间如果要相互调用,这必须添加项目引用。
在没有添加项目引用的情况下,各层之间是独立的,隔离的。
1.2.1. UI引用BLL和Model
UI层是用户界面层,或称为表示层,是供用户访问的界面,因此,在经典.NET三层架构中创建的各层最终都是为UI层服务的。经过各层的逻辑处理之后,最终有用的数据就会流转到UI层并供用户查看和使用。
按照经典.NET三层架构之间的引用规则,UI层只能引用和调用BLL层和Model层。
1.2.2. BLL引用DAL和Model
BLL层是业务逻辑层,主要用于复杂的业务逻辑处理,然后将处理后的数据传递给UI层,UI层再呈现给用户。
而BLL层的数据是从DAL层过来的,DAL层是与SQL Server数据库接触的,因为我们最终的数据是永久存储在SQL Server数据库中的,所以通过DAL层就能够拿到原始数据,再在Model层的帮助下,以对象的形式将取出的原始数据传递给BLL层。
所以,BLL层需要引用DAL层和Model层。
1.2.3. DAL引用Model
在经典.NET三层架构中,DAL层是处理原始数据的一层,主要作用是从SQL Server数据库中获取原始数据。通过使用Model实体层,可以让数据以对象的形式获取。
最后,由于Model是实体层,只是一些由类封装的属性组成的,给三层之间传递数据使用的,所以不需要引用其它项目。
.NET三层架构各项目之间的引用关系及如何添加引用?的更多相关文章
- 使用VS创建三层架构的项目
使用VS创建三层架构的项目 1.打开VS软件: 2.创建新项目: 3.创建新项目打开后选择SAP的选项点击创建{注:上面还有一个和这个相似的项目创建:看清楚在选择: 4.创建后改下名字,框架如果不是3 ...
- 手动创建Maven项目并建立两个项目之间的依赖关系
用命令行快速建立maven项目 -> mvn:archetype:generate -> 直接回车或者自己输入你想生成的 -> groupId ->artifactId -&g ...
- 三层架构与MVC之间的区别
文章转发自:http://www.admin10000.com/document/535.html 我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真 ...
- C# 好用的三层架构,项目直接上手用
一.项目结构 注意:1.Common类中的引用添加:右键--添加引用--.NET--选择对应的引用 2.各层之间引用互相添加(这个就不必多说了,三层最基础部分) 3.在添加 Oracle 引用时候 ...
- [转]三层架构与MVC之间的区别
我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...
- .NET Core添加项目之间的依赖关系
- Web项目的三层架构和MVC架构异同
http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了.因为它们都在逻辑 ...
- MVC项目实践,在三层架构下实现SportsStore-02,DbSession层、BLL层
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
随机推荐
- java 怎样 改变 数组元素的值
简介 (Introduction): 背景 需要解析Object数组中的数据,将数据(mintime)进行修改,改为(maxtime),修改后,生成新的对象 结构图 核心 对于Object数组的概念理 ...
- vue-cli3安装
1.如果原来安装过vue-cli,需要先卸载,命令:npm uninstall vue-cli -g :这步如果出现问题,可能是npm 的全局路径被更改, 运行如下命令:npm config set ...
- bzoj3526[Poi2014]Card*
bzoj3526[Poi2014]Card 题意: 有n张卡片在桌上一字排开,每张卡片上有两个数,第i张卡片上,正面的数为a[i],反面的数为b[i].有m个操作,第i个操作会交换c[i]和d[i]两 ...
- P5198 [USACO19JAN]Icy Perimeter S (洛谷) (水搜索)
同样是因为洛谷作业不会写…… 写(水)博客啦. 直接放题目吧,感觉放在代码框里好看点 Farmer John要开始他的冰激凌生意了!他制造了一台可以生产冰激凌球的机器,然而不幸的是形状不太规则,所以他 ...
- 集训作业 洛谷P1143 进制转换
这个题目就是让我们实现进制的转换. 我只会很简单的把他从一个别的进制转化成10进制,然后再继续转化成目标进制. #include<iostream> #include<cstdio& ...
- 信不信?各种红包App最后都会整合游戏!App+游戏的变现模式分析
最近两个月「晓衡在线猿码微服」商城上出现了一类需求特别的客户: 我们有个 App,日活用户达到 XXX万,计划在 App 中嵌入游戏增加用户留存和利用流量变现,还有... 看你们这里游戏不少,想了解一 ...
- ES6标准中的import和export
在ES6前, 前端使用RequireJS或者seaJS实现模块化, requireJS是基于AMD规范的模块化库, 而像seaJS是基于CMD规范的模块化库, 两者都是为了为了推广前端模块化的工具 ...
- nginx配置多个图片访问路径
需求:vue项目打包的时候 会将项目中的一些图片打包到/dist/static/images下,但是有时候会有一些很大的图片,需要单独存放至别的文件夹比如/home/di-img下,不能被打倒包内.部 ...
- html头文件设置常用之<meta>设置
也许很多开发人员并没有重视meta标签,我就是其中一个,但是meta标签的功能很强大,下面就来说说meta标签! <meta http-equiv="pragma" cont ...
- Lun4R-CyBRICSCTF wp
WEB Hunt (Web, Baby, 50 pts) 打断点,然后就一个一个被抓住了... 接着F12就出现了.(这个flag是白色的,藏在下面....)... RE Baby Rev 题目给了个 ...