.NET 三层架构
三层架构简介:
三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。
步骤如下:
1.新建一个空白解决方案,起好结局方案名称.
2.右击解决方案,选择C#语言 ==> 类库 ,起好类库名称. 比如:BookShop.MODEL(数据交互层).
3.重复第二步,依次建出DLL层,BAL层. 比如:BookShop.BLL(业务逻辑层),BookShop.DAL(数据访问层).
4.右击解决方案,选择C#语言 ==> Windows 窗体应用程序. 比如:BookShop.UI(表示层).
5.依次删除BLL,DAL,MODEL层中的Class1,然后右键 ==> 添加 ==> 新建项 ==> 类,并将其命名.(删除后添加是为了按照一定的命名规则调用,不会使自己误用Class1).
BLL层以Manager结尾(例:UserManager),DAL层以Service结尾(例:UserService),MODEL层的名与数据库中的表名一致(例:Users).
6.添加引用,UI层引用 BLL MODEL , BLL层引用 DAL MODEL , DAL层引用 MODEL , 都是向下引用的.
7.在DAL层新建个SqlHelper类,用于连接数据库使用的.
8.MODEL层主要负责参数的取值和赋值,参数应该和数据库表中的列对应起来.
public string UserId { get; set; } == private string UserId; public string id {
get{ return ID; }
set{ ID = value;}
}
9.想实现两个类互相调用需要三点:添加引用,声明命名空间,public修饰.
10.写代码首先从DAL层,BLL层,UI层依次写入.(建议)
11.一些ADO.NET对象介绍
Connection : 用于连接数据库命令. Command : 执行针对数据库的SQL命令. ExecuteScalar() : 返回第一行第一列的值(object类型). ExecuteNonQuery() : 返回执行命令后受到影响的行数(int类型). ExecuteReader() : 返回结果集的SQL语句、存储过程,并存放在DataReader类型的对象. DataReader : 不能写入,并且只能从头至尾往下读,逐行读取的特性. SqlDataReader reader = cmd.ExecuteReader(); while(reader.Read()) ==>所有的数据放到reader里 { listBox1.Items.Add(reader.GetValue(0)); } DataAdapter : 直接显示表格可以考虑使用! DataSet ds = new DataSet(); DataTable dt = new DataTable(); SqlDataAdapter adpt = new SqlDataAdapter(cmd); adpt.Fill(ds); dt = ds.Tables[0]; DataSet : 表的集合. DataSet ds = new DataSet(); DataTable : 单个表. DataTable dt = ds.Tables[0]; ==>取DataSet中的第一个表; DataRow : 取单行. DataRow dr = dt.Rows[0]; ==> 取dt表中的第一行记录; SqlParameter : 可理解为是个数组,数组的元素起占位符作用. string sql = "select * from users where loginId=@loginId and LoginPwd=@pass"; SqlParameter[] pars = new SqlParameter[2]; ==> 定义两个数组长度 pars[0] = new SqlParameter("@loginId", loginId); ==> 第一个元素 pars[1] = new SqlParameter("@pass", password); DataTable dt= SqlHelper.ExecuteDataTable(sql, CommandType.Text, pars); ==> 把参数传到SqlHelper类ExecuteDataTable的方法
.NET 三层架构的更多相关文章
- asp.net三层架构 及其中使用泛型获取实体数据介绍
asp.net中使用泛型获取实体数据可以发挥更高的效率,代码简洁方便,本例采用三层架构.首先在model层中定义StuInfo实体,然后在 DAL层的SQLHelper数据操作类中定义list< ...
- 关于三层架构与MVC的一些理解
刚毕业的时候,参与了一个上位机的系统开发.上位机所使用的是.net Windows Form技术. 当时,和一个北理的姑娘在一个项目组里.因为她来公司时间比较长,而且经验比较丰富,所以,上位机的架构由 ...
- 架构和模式的区别:三层架构和MVC在应用开发中的位置
架构是系统层面的,可以是多层架构,也可以是事件驱动架构,也可以是微服务架构. 模式是GUI应用的一种职责分离设计. 三层架构(包含多层架构)和 MVC模式(包含MVP, MVVM) 没什么关系,它们不 ...
- 从零开始编写自己的C#框架(5)——三层架构介绍
三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发. 在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪—<.NE ...
- 【转】浅谈MVC与三层架构
首先给大家引入下MVC的概念: MVC(Model View Controller)模型.视图以及控制器,它是一种较为广泛应用的结构设计模式. 模型:就是在MVC设计模式中需要被显示的数据.在通常情况 ...
- 有了门面,程序会更加体面!- pos软件基于三层架构 -09
续上篇) 大鸟说道:“实际上没有学过设计模式去理解三层架构会有失偏颇的,毕竟分层是更高一级别的模式,所谓的架构模式.不过在程序中,有意识的遵循设计原则,却也可以有效的做出好的设计.” ...
- 三层架构 与 MVC那点事儿
以下为转载内容: 地址 MVC与三层架构的异同点 首先先解释一下MVC. V即View.是视图的意思. C即Controler.是控制器的意思. M即Model,是模型的意思. 这三个里.最不容易理解 ...
- JDBC三层架构
三层框架: 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合”的思想. 原理:1:数据访问层:主要是对原始 ...
- 浅析MVC模式与三层架构的区别01
三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层)三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI ...
- 利用Dapper ORM搭建三层架构
利用Dapper关系对象映射器写的简单的三层架构.Dapper:StackOverFlow在使用的一个微型的ORM,框架整体效率较高,轻量级的ORM框架.网上有较多的扩展.此处只是简单的调用Dappe ...
随机推荐
- java中Integer比较需要注意的问题
java中Integer比较需要注意的问题 package com.srie.test; import java.util.HashMap; import java.util.Map; public ...
- 第一部分 代码组织概念,集成开发环境(IDE)
代码组织概念 主要是代码文件,项目和解决方案. 解决方案(.sln)包含多个项目(.csproj),一个项目又包含多个文件(.cs). 集成开发环境(IDE): 由编辑.编译.调试,以及用户图形界面, ...
- PHP + Memcache 实现Session共享
一.安装Memcache和PHP扩展 Windows下的Memcache安装:1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached2. 在终端(也即cmd ...
- Swiper.js使用遇到的问题总结onSlideChangeEnd回调偶尔触发,偶尔不触发等;
Swiper 是一个开源免费的移动触摸插件. 在使用中遇到这样一个问题,记录一下. page 间切换效果 使用 fade 的时候,如果每个页面的大小不一样, 比如第一个页面全屏, 第二个页面比第一个小 ...
- 不常见但很有用的chrome调试工具使用方法
前面的话 对于chrome调试工具,常用的是elements标签.console标签.sources标签和network标签.但实际上,还有一些不太常见但相当实用的方法可以提高网页调试效率.本文将 ...
- js面试题-2
// 1.截取字符串 var aa = "abcd"; console.log(aa.substr(,)); var str = "qweda"; consol ...
- 谈谈getElementsByClassName()
HTML5中新增的一个方法getElementsByClassName(),但是并非所有浏览器有支持 因此我们构造一个方法兼容这个方法 <script type="text/javas ...
- 编程练习------C/C++分别实现字符串与整数的转换
C/C++分别实现字符串与整数的转换 前提:不使用 itoa 和 atoi. 方法一.C和C++通用的一种转换手段是: 1.整数转化为字符串:采用加'0',再逆序的办法,整数加'0'就会隐性转化成ch ...
- 【Ionic+AngularJS 开发】之『个人日常管理』App(二)
准备工作 资源 预装工具 安装bower npm install -g bower 安装ngCordova bower install ngCordova (*由于网络获取资源的原因,后面几次建项目后 ...
- final对于访问效率的影响
在能够通过编译的前提下,无论局部变量声明时带不带final关键字修饰,对其访问的效率都一样. 并且:重复访问一个局部变量比重复访问一个成员或静态变量快:即便将其final修饰符去掉,效果也一样. 例如 ...