.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优化.导航.分页.购物车.订单.产品管 ...
随机推荐
- MySQL 对window函数执行sum函数疑似Bug
MySQL 对window函数执行sum函数疑似Bug 使用MySql的窗口函数统计数据时,发现一个小的问题,与大家一起探讨下. 环境配置: mysql-installer-community-8.0 ...
- Oracle 对表的基本CURD操作
Oracle对表的基本Curd操作: 样式表: 接下来对这张(表明:Stud)表进行Curd操作(请看面SQL代码) 增加新的字段列:alter table Stud add(heigh ...
- 从零开始学Electron笔记(三)
在之前的文章我们介绍了一下Electron的菜单创建和事件绑定,其中提到了一个remote模块,接下来我们继续说一下Electron的这个remote模块. 官方关于remote模块的地址:https ...
- C# Dictionary的底层实现解析
引用: https://www.cnblogs.com/InCerry/p/10325290.html 字典原理分析: 1.用数组存元素,元素的结构体存hashCode.next.key.value. ...
- nginx随机模块—random_index
nginx 随机模板参数: 这个模块他的作用于只有在location中,具体写法如下 location / { root html/code; andom_index on; #index index ...
- 洛谷 P5022 旅行
今天换标题格式了,因为感觉原版实在有点别扭…… 还是直接上题板,看完题再讲吧: 对了有个小细节没说,m一定是等于n或者等于n-1的. 这题是2018年提高组的真题哦!被我肝了2天肝出来了,2天……(真 ...
- C++语法小记---类型检测
类型检测 C++使用typeid关键字进行类型检查 不同的编译器使用typeid返回的类型名称不严格一致,需要特别注意 也可以使用虚函数,返回各自的类型名 如果typeid的操作数不是类类型(类指针也 ...
- C#和 JS的闭包
闭包的概念是内层的函数可以引用包含在它外层的函数的变量,即使外层函数的执行已经终止.但该 变量提供的值并非变量创建时的值,而是在父函数范围内的最终值. C#闭包可理解为跨作用域访问函数内变量,那么如何 ...
- abp vnext 开发快速入门 2 实现基本增删改查
上篇说了abp vnext 的大体框架结构,本篇说下如何实现基础的增删改查.实现增删改查有以下几个步骤: 1.配置数据库连接 2.领域层(Domain)创建实体,Ef core 层配置Dbset( 用 ...
- 目前解决移动端1px边框最好的方法
在移动端开发时,经常会遇到在视网膜屏幕中元素边框变粗的问题.本文将带你探讨边框变粗问题的产生原因及介绍目前市面上最好的解决方法. 1px 边框问题的由来 苹果 iPhone4 首次提出了 Retina ...