以前也作过不少项目,不过都是两层的,都是在.aspx.cs中直接写sql语句操作数据库。现在跳到了一个新的公司,这个公司都使用三层开发的,也就是说现在要在.aspx.cs中操作数据库需要调用某个类的某个方法,由于没有这方面的经验,请大家介绍一下Web三层开发的设计思路、方法、经验等等。另外我初步觉得三层开发有一些不好之处,例如:在一个页面中有一个listbox,现在要把这个listbox中的所有项保存到数据库中,在两层中,可以先构造一个字符串,然后循环Listbox.Items,拼接这个字符串,最后将这个字符串变量传给SqlCommand更新数据库,例如:string strSql = "";
foreach(ListItem li in myListBox.Items)
{
strSql += "insert into mytalbe values('"+ li.value +"')";
}
SqlCommand comm = new SqlCommand(strSql,myConnection);
.....可是在三层中,我只能循环listbox的项,然后在每次循环中调用一次中间层的方法,那么也就是说我的Listbox中有多少项就要调用多少次中间层的方法,也就会打开/关闭多少次数据库。这样效率是不是很低呢?
也不知道我的看法对不对,请各位高手多多指教!!!
foreach(ListItem li in myListBox.Items)
{
strSql += "insert into mytalbe values('"+ li.value +"')";
}
SqlCommand comm = new SqlCommand(strSql,myConnection);
.....可是在三层中,我只能循环listbox的项,然后在每次循环中调用一次中间层的方法,那么也就是说我的Listbox中有多少项就要调用多少次中间层的方法,也就会打开/关闭多少次数据库。这样效率是不是很低呢?
也不知道我的看法对不对,请各位高手多多指教!!!
比如像这样数据访问类
base.cs
public void ExecSql(string StrSQL){}业务逻辑或方法类
function.cs
public void insert(string value)
{
string StrSql="insert xxx values "+value+";
}页面
page.aspx.csforeach()
{
function.insert(listbox[].value);
}
微软出的<<使用 Microsoft .NET 的企业解决方案模式>>
上面有微软推荐的三层模式
第三章专门针对web的
要是大的数据量的处理,我喜欢放在存储过程里做处理
ASPX,ASPX.CS算一层
Business,Data算业务层,
数据库算数据层.我最近也正在学习,推荐看ThePhile这个例子,我觉得对我帮助太大了,我正在学习他的结构,虽然还不是太懂,但是先学了以后慢慢理解肯定会有很大的进步.每一个模块建三个类库,比如一个新闻的模块,类库项目分别为:News.Configuration(此类库主要用于从XML文件中取得数据库连接),News.Business(业务层业务处理),News.Data(业务层数据访问类库)这就是我这几天学习的一点心得,理解得还不是很深刻,希望大家多多帮助