业务逻辑 理解

    对这个问题迷惑了很久,甚至很多时候都去想,但是,接触到的始终都是一个概念

   今天仔细地查了一下参考资料:

            基于B/S模式下的WEB  .net应用程序的三层逻辑大致可以分为三层:

              表示层(用户接口层),业务逻辑层,数据访问层

 

一层代码

1、vs2005新建了一个解决方案,添加了2个项目和1个网站,DataLayer(处理数据层),
LogicLayer(处理业务层),WebSite(表现层)。添加好了引用和依赖关系!

2,在DataLayer项目里建一个处理数据库操作的类AccDataBase

public class AccDataBase
{
private string connectionString = ConfigurationManager.AppSettings["AccessConntionString"];

private OleDbConnection myConn;
private OleDbCommand myComm;
private OleDbDataReader myReader;

public void Open()
{
myConn = new OleDbConnection(connectionString);
myConn.Open();
}
public OleDbDataReader GetReader(string sqlStr)
{
Open();
myComm = new OleDbCommand(sqlStr, myConn);
myReader = myComm.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;

}


3,在业务曾LogicLayer项目里建一个类Goods

public class Goods
{
public OleDbDataReader GetGoodsInfor(string keyworks)
{
AccDataBase ADB = new AccDataBase(); OleDbDataReader myReader;
myReader = ADB.GetReader("select * from TbGoods where name ='" + keyworks+"'");//===========调用了数据层

return myReader;
}
}

4,在表现层WebSite的default.aspx.cs按钮事件里


Goods goods= new Goods();
OleDbDataReader myReader = goods.GetGoodsInfor(TextBox1.Text);//=调用了业务曾
if (myReader.Read())
{
Response.Write(myReader[0].ToString() + myReader[1].ToString()...);//这里显示出来
}
myReader.Close();


5、完了

以前我都是将DataLayer放在App_Code的类里的,然后在default.aspx.cs里就直接将sql语句传给它,就返回DataReader,多简单明了。为什么要多出个业务层!?

 

三层模型

就按你的要求写把
需求:
1。需要有一个对象负责接收key
2.改类需要查询数据
3.该类需要返回数据

约束:该类在实际使用中需要查询商品表

C# code
   
   
public class seach { private string _key public string key { set(_key= value;) } private object _Result; public object result //返回值,这里使用object是为了留出空白,保留该类的变化 { get { return _Result; } } public virtual void getSearch() //查询数据,这里使用virtual同样是为了留出空白,保留该类的变化 { } }


你可以看到这是一个纯粹的对象,没有做任何数据库要做的事情,也没做界面要做的事情,他完全是对需求的一个代码翻译
这个是实际上是MOdel的东西

2.有了model层,我们在做业务逻辑,业务逻辑我们要完成对这个对象的约束

C# code
   
   
public goodsSearch:seach { public Dataview seachRes //返回结果 { get(return (DataView)_Result;) //这里我返回了DataView,实际上你可以返回别的东西,只要你能转换的过去 } public goodssearch(string key) { _key= key; } public override void getSearch() { _Result=DAl.xxx(_key)//去数据层取数据,当然数据层怎么写是数据层的事情,这里就不要关心了 } }


3.数据层,这个我就不写,基本就是把你自己写的访问数据库的东西在写一遍,你明白就可以了

现在你可以看的比较清楚了把,实际上三层的模型完全就是在将就对象设计,而在对象设计初期,我根本就没管数据库和界面的事情

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值