首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

小弟我理解的三层结构有没有错

2012-02-24 
我理解的三层结构有没有错?用ASP.NET的C#开发程序,我理解的三层机构是这样的:程序代码跟HTML分离,即ASPX页

我理解的三层结构有没有错?
用ASP.NET的C#开发程序,我理解的三层机构是这样的:
程序代码跟HTML分离,即ASPX页面不包含C#代码,这是两层结构;
如果再把数据库操作相关的C#代码独立出来,这就成了三层结构。
分三层的目的是为了方便协同开发,维护和扩展。


[解决办法]
用ASP.NET的C#开发程序,我理解的三层机构是这样的: 
程序代码跟HTML分离,即ASPX页面不包含C#代码,这是两层结构; 
---------------------------
这只是代码分离


如果再把数据库操作相关的C#代码独立出来,这就成了三层结构。 
分三层的目的是为了方便协同开发,维护和扩展。 
-----------------------
这是两层结构
[解决办法]
我看一些书上介绍

是把对数据库的各种操作都写成存储过程,然后调用这些存储过程

这样是不是第三层?与直接在ASP.NET代码中直接操作数据库看相比,这样有什么好处?
[解决办法]
数据持久层,进行数据的持久保存,对任何软件来说除了数据结构不同,其他的都是相同的,如果使用完全面向对象的数据结构,那么这也是相同的
商务逻辑层,封装项目的业务处理规则,不同的项目,业务逻辑是不同的
用户界面层,用户交互接口,aspx页面只能是用户界面层的表面的表面
[解决办法]
使用objectdatasource结合数据绑定控件进行简单三层架构的开发http://blog.csdn.net/srym/archive/2008/04/03/2246926.aspx
[解决办法]
其实不要把三层架构给定死了,之所以用三层架构一个是为了开发时的方便,一个是为了维护时的方便,在DAL里,主要是对数据库的操作,将关于数据库的所有操作封装在一起,在BLL中调用这些操作,打个比方,比如我现在正在做登录模块,我需要向数据库验证用户名跟密码,有两种办法,我直接就写链接数据库的语句,然后操作数据库,验证信息是否合法,但如果我要是数据库的地址换了呢,我是不是得在程序中的每个用到连接字符串的地方去改掉,又或者如果我对查询语句进行了优化,是不是也得找到每一个相似的语句去更改,也许我可以把这个做成一个函数但这不是最好的办法,因为大家是一起开发的,如果都同时操作一个文件,结果可想而知,所以就干脆把所有有关数据库的操作一起放到DAL中,当有操作数据库的请求时,直接调用BLL中的一个实例的方法,比如bool CheckUser(string username,string password),每个人做自己的事,而不需要考虑这个方法是怎么实现的,还有一点就是,如果程序可用的数据库不止一种呢,SQL语句有的也得换吧,难道你在程序中一个一个的判断当前使用的是什么数据库SQLServer还是Oracle又或者MYSQL,一个比较好的做法是将这些关于数据库的操作分别封装到DAL中,即SQLServerDAL,OracleDAL,在此之前设计一个接口,而DAL是对这个接口的实现,这样在BLL中你就不用管到底数据库是用的那种了,你只管调用这个接口,接口的名称是一样的,但在不同的DAL中有不同的实现,最后通过查找配置文件反射来决定到底是用哪个数据库,我说这么多也不知道你理解没有,其实最好去看看代码,就是微软的PetShop4.0,设计的真的很不错,建议你去看看。
[解决办法]
model //模式层,处理业务逻辑,调用控制组件
view //显示层,也就是UI界面
control //控制层,处理具体的逻辑功能,连接数据库等操作
[解决办法]
一个典型的三层结构:

表示层:Login.aspx.cs
逻辑层:Class BusinessLogic
数据层: Class DBManager

Login.aspx.cs:
protected void OnLoginButtonClick(object sender, EventArgs e)
{
if ( BusinessLogic.LoginService( user ))
{
...
}
else
{
...
}

}
------------------------
Class BusinessLogic
{
....
....

public static bool LoginService(object user)
{
return user==null ? false : DBManager.Login(user);
}
....
}

----------------------------------------------------
Class DBManager
{
.......
.......

public static bool Login(object user)
{
DBconnectionStringXXXXXX;
DBReaderXXXXX;
bool isValidUser = false;
try
{
connectionOpenXXXX..
....
....
}
catch
{
.....
}

return isValidUser;
}
}


 
[解决办法]

探讨
model //模式层,处理业务逻辑,调用控制组件
view //显示层,也就是UI界面
control //控制层,处理具体的逻辑功能,连接数据库等操作

好像这个对吧!!!

[解决办法]
探讨
。。。学习
好理论啊。。实际到代码上会怎么样呢。。

------解决方案--------------------


表示层如你页面的 的 GridView 

业务层例如:

public static void GetAdminGroup(HtmlSelect ddlgroup)
{
string sqlstr="select * from tb_UserGroup";
MyHelper.FillSelect(ddlgroup, sqlstr, "groupDesc","groupID", true);
}


数据层例如 你写的 SqlHelper.cs


你理解的作用有点对


欢迎楼下扔鸡蛋
[解决办法]

探讨
维护扩展和安全性

[解决办法]
MVC只是微软新推出的模型、视图、控制器框架 与楼主所问的问题没有关系 当然谁都可以数得出来 那确实也是三个字母三个"层"~ 请别在这里误导我们这种新手!!
[解决办法]
如果能把你的代码部署到三台计算机上协同工作,则表明你已经实现三层了
但要保证各负其责,不能为了部署而部署
[解决办法]
个人认为是 
展示层
业务层
数据层

其实这个层次并不是一个代码或是一个 DLL 就是一个层的
比如展示层可能由 CSS+HTML+JS+Aspx.cs组成
业务层可能也写在 aspx.cs 里面和其他的一个 DLL 里面,可能这个层又通过实体类和 数据访问层打交道
数据层又可能包含 数据访问层的方法和数据库中的文件,函数和方法等等


实际这个就看你自己怎么理解了,基本就是这样的一个东东~

[解决办法]
我用的就是三层架构,当然有它的好处也有不足之处.
好处我个人认为修改起代码来比较方便,由于各个层是独立的你可以放心的往里面添加需要的
代码页不用担心别的地方会这儿的更改而出错;由于分层当然多人同时开发也就成了可能,提高
开发效率那是肯定的了.还有一个方便的地方就是只要你定义好数据操作层中的公共方法以后操
作数据库非常方便,而不用每做一次数据库操作就要写一段连接数据库的代码,只需要调用数据库
操作里面相应的方法就可以了,用起来确实方便.
我现在发现的唯一不足的地方就是要在上面两层编写大量重复的代码,为了保持独立嘛.因为对象
与对象之间的操作也是独立的,不平行调用,只是从上住下调用.但是比起不分层修改起来的麻烦
多写点代码也是无所谓的了.况且很多代码都是一样的只要粘贴一下就行了.
从我使用的体会就是这样,不知道大家还有什么高见!

热点排行