.net分层构架的设计文档

作者&投稿:隆烟 (若有异议请与网页底部的电邮联系)
.net, 数据库架构应该怎么设计呢?~

根据情况。
例如你想做个用户注册的功能,那么设计表就需要考虑
比如学生:
1.学号
2.登陆用户名
3.登陆密码
4.年龄
5.性别
6.邮箱
等......

mdi 初始化的时候 构建 treeview treeview 点击叶子节点的时候 初始化 右侧子窗体

微软的pet shop 4.0
去csdn上下载
输入petshop 回车就有源码和文档

如果找不到 我发给你
=====================================
再给你一篇文章看

本文不是从理论的角度来探讨三层架构,而是用一个示例来介绍如何建设一个三层架构的项目,并说明项目中各个文件所处的层次与作用。写本文的目的,不是为了说明自己的这个方法有多对,别人的肯定不对,而是希望给那些初学三层架构却不知从何入手的朋友提供一点帮助。因为网上的文章,大多是注重理论的介绍,而忽略了具体的实践应用,或者有示例但讲得不透彻。导致看了之后,理论上又学习了一遍,但还是不知道代码怎么写。所以想从这个方面入手写一下,让从来没做过三层架构的初学者也能照猫画虎,写出代码来。文章表述的是笔者个人对三层架构的认识,肯定有许多不足的地方,欢迎大家指正,小弟也会根据反馈来修改这篇文章。文中的代码是伪代码,仅用来阐明思路。
正文:
一提三层架构,大家都知道是表现层(UI),业务逻辑层(BLL)和数据访问层(DAL),而且每层如何细分也都有很多的方法。但具体代码怎么写,到底那些文件算在哪一层,却是模模糊糊的。下面用一个简单的例子来带领大家实战三层架构的项目,这个例子只有一个功能,就是用户的简单管理。
首先建立一个空白解决方案,添加如下项目及文件
1、添加ASP.NET Web Application项目,命名为UI,新建Web Form类型文件User.aspx(含User.aspx.cs)
2、添加ClassLibrary项目,命名为BLL,新建Class类型文件UserBLL.cs
3、添加ClassLibrary项目,命名为DAL,新建Class类型文件UserDAL.cs。添加SQLHelper引用。(这个是微软的数据访问类,也可以不用,直接编写所有的数据访问代码。我一般用自己写的数据访问类DataAccessHelper )。
4、添加ClassLibrary项目,命名为Model,新建Class类型文件UserModel.cs
5、添加ClassLibrary项目,命名为IDAL,新建Interface类型文件IUserDAL.cs
6、添加ClassLibrary项目,命名为ClassFactory
相信大家已经看出来了,这个和Petshop的示例没什么区别,而且更简单,因为在下也是通过Petshop学习三层架构的。但一些朋友对于这几个项目所处的层次,以及它们之间的关系,可能比较模糊,这里逐个说明一下:
1、User.aspx和User.aspx.cs 这两个文件(以及文件所属的项目,下面也是如此,不再重复强调了)都属于表现层部分。User.aspx比较好理解,因为它就是显示页面了。User.aspx.cs有些人觉得不应该算,而是要划到业务逻辑层中去。如果不做分层的话,那么让User.aspx.cs来处理业务逻辑,甚至操作数据库都没什么问题,但是做分层的话,这样就不应该了。在分层结构中,User.aspx.cs仅应该处理与显示有关的内容,其它部分都不应该涉及。
举例:我们实现用列表方式显示用户的功能,那么提取信息的工作是由BLL来做的,UI(本例中是User.aspx.cs)调用BLL得到UserInfo后,通过代码绑定到User.aspx的数据控件上,就实现了列表的显示。在此过程中User.aspx.cs对UI没有起到什么作用,仅是用来传递数据,而且因为实际编码中大部分情况都是如此的实现,所以使有些人觉得User.aspx.cs不应该算UI,而应该并入BLL负责逻辑处理。继续往下看,这时提出了一个新需求,要求在每个用户的前面加一个图标,生动地表现出用户的性别,而且不满18岁的用儿童图标表示。这个需求的实现,就轮到User.aspx.cs来做了,这种情况下User.aspx.cs才算有了真正的用途。
2、NewBLL.cs 添加如下方法:
public IList<UserInfo> GetUsers():返回所有的用户信息列表
public UserInfo GetUser(int UserId):返回指定用户的详细信息
public bool AddUser(UserInfo User):新增用户信息
public bool ChangeUser(UserInfo User):更新用户信息
public void RemoveUser(int UserId):移除用户信息
此文件就属于业务逻辑层了,专门用来处理与业务逻辑有关的操作。可能有很多人觉得这一层唯一的用途,就是把表现层传过来的数据转发给数据层。这种情况确实很多,但这只能说明项目比较简单,或者项目本身与业务的关系结合的不紧密(比如当前比较流行的MIS),所以造成业务层无事可做,只起到了一个转发的作用。但这不代表业务层可有可无,随着项目的增大,或者业务关系比较多,业务层就会体现出它的作用来了。
此处最可能造成错误的,就是把数据操作代码划在了业务逻辑层,而把数据库作为了数据访问层。
举例:有些朋友感觉BLL层意义不大,只是将DAL的数据提上来就转发给了UI,而未作任何处理。看一下这个例子
BLL层
SelectUser(UserInfo userInfo)根据传入的username或email得到用户详细信息。
IsExist(UserInfo userInfo)判断指定的username或email是否存在。
然后DAL也相应提供方法共BLL调用
SelectUser(UserInfo userInfo)
IsExist(UserInfo userInfo)
这样BLL确实只起到了一个传递的作用。
但如果这样做:
BLL.IsExist(Userinfo userinfo)
{
UerInfo user = DAL.SelectUser(User);
return (userInfo.Id != null);
}
那么DAL就无需实现IsExist()方法了,BLL中也就有了逻辑处理的代码。
3、UserModel.cs 实体类,这个东西,大家可能觉得不好分层。包括我以前在内,是这样理解的:UIßàModelßàBLLßàModelßàDAL,如此则认为Model在各层之间起到了一个数据传输的桥梁作用。不过在这里,我们不是把事情想简单,而是想复杂了。
Model是什么?它什么也不是!它在三层架构中是可有可无的。它其实就是面向对象编程中最基本的东西:类。一个桌子是一个类,一条新闻也是一个类,int、string、doublie等也是类,它仅仅是一个类而已。
这样,Model在三层架构中的位置,和int,string等变量的地位就一样了,没有其它的目的,仅用于数据的存储而已,只不过它存储的是复杂的数据。所以如果你的项目中对象都非常简单,那么不用Model而直接传递多个参数也能做成三层架构。
那为什么还要有Model呢,它的好处是什么呢。下面是思考一个问题时想到的,插在这里:
Model在各层参数传递时到底能起到做大的作用?
在各层间传递参数时,可以这样:
AddUser(userId,userName,userPassword,…,)
也可以这样:
AddUser(userInfo)
这两种方法那个好呢。一目了然,肯定是第二种要好很多。
什么时候用普通变量类型(int,string,guid,double)在各层之间传递参数,什么使用Model传递?下面几个方法:
SelectUser(int UserId)
SelectUserByName(string username)
SelectUserByName(string username,string password)
SelectUserByEmail(string email)
SelectUserByEmail(string email,string password)
可以概括为:
SelectUser(userId)
SelectUser(user)
这里用user这个Model对象囊括了username,password,email这三个参数的四种组合模式。UserId其实也可以合并到user中,但项目中其它BLL都实现了带有id参数的接口,所以这里也保留这一项。
传入了userInfo,那如何处理呢,这个就需要按照先后的顺序了,有具体代码决定。
这里按这个顺序处理
首先看是否同时具有username和password,然后看是否同时具有email和password,然后看是否有username,然后看是否有email。依次处理。
这样,如果以后增加一个新内容,会员卡(number),则无需更改接口,只要在DAL的代码中增加对number的支持就行,然后前台增加会员卡一项内容的表现与处理即可。
4、UserDAL.cs public IList<UserInfo> SelectUsers():返回所有的用户信息列表
public UserInfo SelectUser(int UserId):返回指定用户的相信信息
public bool InsertUser(UserInfo User):新增用户信息
public bool UpdateUser(UserInfo User):更新用户信息
public void DeleteUser(int UserId):移除用户信息
很多人最闹不清的就是数据访问层,到底那部分才算数据访问层呢?有些认为数据库就是数据访问层,这是对定义没有搞清楚,DAL是数据访问层而不是数据存储层,因此数据库不可能是这一层的。也有的把SQLHelper(或其同类作用的组件)作为数据访问层,它又是一个可有可无的东西,SQLHelper的作用是减少重复性编码,提高编码效率,因此如果我习惯在乎效率或使用一个非数据库的数据源时,可以丢弃SQLHelper,一个可以随意弃置的部分,又怎么能成为三层架构中的一层呢。
可以这样定义:与数据源操作有关的代码,就应该放在数据访问层中,属于数据访问层
5、IUserDAL 数据访问层接口,这又是一个可有可无的东西,因为Petshop中带了它和ClassFactory类工厂,所以有些项目不论需不需要支持多数据源,都把这两个东西做了进来,有的甚至不建ClassFactory而只建了IDAL,然后“IUserDAL iUserDal = new UserDAL();”,不知意义何在。这就完全是画虎不成反类犬了。
许多人在这里有一个误解,那就是以为存在这样的关系:BLLßàIDALßàDAL,认为IDAL起到了BLL和DAL之间的桥梁作用,BLL是通过IDAL来调用DAL的。但实际是即使你如此编码:“IUserDAL iUserDal = ClassFacotry.CreateUserDAL();”,那么在执行“iUserDal.SelectUsers()”时,其实还是执行的UserDAL实例,而不是IUserDAL实例,所以IDAL在三层中的位置是与DAL平级的关系。
通过上面的介绍,基本上将三层架构的层次结构说明了。其实,本人有一个判断三层架构是否标准的方法,那就是将三层中的任意一层完全替换,都不会对其它两层造成影响,这样的构造基本就符合三层标准了(虽然实现起来比较难^_^)。例如如果将项目从B/S改为C/S(或相反),那么除了UI以外,BLL与DAL都不用改动;或者将SQLServer改为Oracle,只需替换SQLServerDAL到OracleDAL,无需其它操作等等。本来想在文中加入一些具体的代码的,但感觉不是很必要,如果大家觉得需要的话,我再补充吧。
总结:不要因为某个层对你来说没用,或者实现起来特别简单,就认为它没有必要,或者摒弃它,或者挪作它用。只要进行了分层,不管是几层,每一层都要有明确的目的和功能实现,而不要被实际过程所左右,造成同一类文件位于不同层的情况发生。也不要出现同一层实现了不同的功能的情况发生。

有很经典的,不知道对不对路,微软的petshop就是很好的三层实例呀,源码文档网上都可以找见。
小弟学术尚浅,只接触过两个架构


.NET分层是怎么回事 三层架构与其又有什么关系,能否帮忙简单介绍一下三...
三层结构是现在开发中常用的开发模式 三层构架即MVC(model-view-control)model:模型层,这里主要放置业务逻辑,也就是处理的一些方法,包括数据的交互 view:视图层,这里就是做出来呈现给客户的界面,即网页或客户端的一些窗体界面 control:控制层,这里组要负责业务逻辑的调用,以及返回的页面控制,就...

什么是ASP.NET里的三层架构的模式?(详细解说)
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。2、业务逻辑层(BLL)...

【NET 计算机网络】01 | 网络体系结构
计算机网络体系结构的分层是网络设计中的一项关键策略,它简化了网络的复杂性,提高了网络的灵活性和可维护性。分层的网络架构将不同功能和服务分别组织到不同的层次中,确保了网络的高效运行与数据的有序传输。分层结构的一个主要优点是它能够实现各层的独立性。每一层都专注于执行特定的任务,例如数据传...

用.NET做B\/S结构的系统,用几层结构来开发,每一层之间的关系以及为什么要...
简单的分三层:表示层(.aspx)、业务逻辑层(.cs)、数据持久层(数据库)表示层里做页面,调用数据并显示。业务逻辑层里写数据的处理代码,用来实现系统的功能。数据持久层里存放数据,与程序分离,如果采用SQLServer等有管理后台的,做一些视图、存储过程,会使你的数据访问效率大增。

在ASP.NET中如何应用三层架构方式实现多表连接事务处理?
例如Martin Fowler在《Patterns of Enterprise Application Architecture》一书中,将整个架构分为三个主要的层:表示层、领域层和数据源层。作为领域驱动设计的先驱Eric Evans,对业务逻辑层作了更细致地划分,细分为应用层与领域层,通过分层进一步将领域逻辑与领域逻辑的解决方案分离。业务逻辑层在体系架构中...

用.net写网站通常用mvc架构还是三层架构有什么区别吗
三层架构是最基本的项目分层结果,而MVC则是三层架构的一个变体,MVC是一种好的开发模式。要搞清楚他们的区别,就要搞清楚他们的概念:mvc M即Model(模型层),主要负责出来业务逻辑以及数据库的交互 V即View(视图层),主要用于显示数据和提交数据 C即Controller(控制器),主要是用作捕获请求并控制请求...

.net三层求解!~~在线等
一般的分层结构 UI:界面层(winform、WPF、ASP.NET都可以)BLL: 业务逻辑层 处理具体业务 DAL:负责数据操作 COMMON: 三层都可以用的通用方法,比如加密算法、汉字转拼音、读写execl文件等等类似于业务无关的方法 Model: 实体层,大多情况下就是和数据库表的一一对应,但也可能实际需要做扩展 至于DB...

在ASP.NET中如何应用三层架构方式实现多表连接…
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。三层结构原理:3个层次中,系统主要功能和业务逻辑都在业务逻辑层进行处理。所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是...

asp.net三层开发
而不必管其他操作。三、总结 三层结构是一种严格分层方法,即数据访问层只能被业务逻辑层访问,业务逻辑层只能被表示层访问,用户通过表示层将请求传送给业务逻辑层,业务逻辑层完成相关业务规则和逻辑,并通过数据访问层访问数据库获得数据,然后按照相反的顺序依次返回将数据显示在表示层。

三层结构结构说明
三层结构设计的理想目标是实现各层间的独立性,即修改表现层无需影响逻辑层,反之亦然。这种设计的目的是为了判断应用是否真正实现了分层和组织的合理性,而非单纯的多层结构。理解三层结构的标准并不统一,它更多是一种概念上的抽象。业务逻辑层的核心在于封装常用的功能代码,例如在.NET中,可以创建用户...

浔阳区13425333863: .net分层构架的设计文档 -
柯奋刺五: 微软的pet shop 4.0 去csdn上下载 输入petshop 回车就有源码和文档 如果找不到 我发给你===================================== 再给你一篇文章看 本文不是从理论的角度来探讨三层架构,而是用一个示例来介绍如何建设一个三层架构...

浔阳区13425333863: .NET三层架构解析一:什么是三层架构 -
柯奋刺五: 所谓三层架构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层.这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这...

浔阳区13425333863: .NET软件开发下的三层架构模型 -
柯奋刺五: 小型项目不建议用,适用于大中型项目,便于维护,便于团队开发,各层工作互不影响,本人感觉写程序的时候用三成条理清晰,表示层(UI)、逻辑去(BLL)、数据访问层(DAL),一般情况下要再加一个模型层(Model)用于前面三层之间数据传递.表示层依赖于逻辑层,逻辑层依赖于数据访问层,前面三层都要添加对模型层的引用(毕竟三层都要有数据传递),

浔阳区13425333863: ASP.NET三层架构 -
柯奋刺五: 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合”的思想. 1、表现层(UI):通俗讲就是展现给用户的界...

浔阳区13425333863: .net三层架构在开发程序中的具体设计
柯奋刺五: “三层结构”是什么? “三层结构”一词中的“三层”是指:“表现层”、“中间业务层”、“数据访问层”.其中:  表 现 层:位于最外层(最上层),离用户最近.用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面.  中间业务层:负责处理用户输入的信息,或者是将这些信息发送给数据访问层进行保存,或者是调用数据访问层中的函数再次读出这些数据.中间业务层也可以包括一些对“商业逻辑”描述代码在里面.  数据访问层:仅实现对数据的保存和读取操作.数据访问,可以访问数据库系统、二进制文件、文本文档或是XML文档. 对依赖方向的研究将是本文的重点,数值返回方向基本上是没有变化的.

浔阳区13425333863: 如何理解.net的三层架构 -
柯奋刺五: 3、表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务. 具体的区分方法 1、数据数据访问层:主要看你的数据...

浔阳区13425333863: .net有哪些架构? -
柯奋刺五: 最常用的架构是三层架构.1. UI Tier(User Interface, 用户接口层)表示层完成向用户展示界面,提供进一步操作的“驱动接口”,例如按钮,并显示结果.2. Business Tier(商业层)完成数据加工,提供加工后的数据给表示层,或者数据层...

浔阳区13425333863: .net中的三层架构中数据访问层和业务逻辑层为什么要分开 -
柯奋刺五: 数据访问层主要目的是屏蔽上层业务逻辑与底层数据访问,使业务与数据操作无关.分层式结构究竟其优势何在?Martin Fowler在《Patterns of Enterprise Application Architecture》一书中给出了答案: 1、开发人员可以只关注整个结构中的其...

浔阳区13425333863: 用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
柯奋刺五: 分三层,即采用MVC的模式,可大大缩短编程的时间,节约成本,其次,以后维护起来也方便! 第一层--表示层:即视图,用来与客户交互. 第二层--业务逻辑层:即业务类,所有的相关的业务全部放在这个层里面. 第三层--数据访问层:即与数据库进行交互.

浔阳区13425333863: .net做B/S结构的系统,三层,每一层之间的关系以及为什么要这样分层? -
柯奋刺五: 一般都是三层,表现层(ui)、业务逻辑层(bll)、数据访问层(dal),这些东西不用深究,别为了设计而设计就行. 分三层是为了使项目架构体系更加清晰,而且项目参与人员的分工也可以更加明确,也有利于项目后期维护,这些都是分层的...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网