想请问大侠几个三层结构的问题,谢谢。我正在学用三层结构做c#的全站程序,看了很多教程,有些东西很糊涂,想请教一下:
1.书上说业务逻辑层主要放些验证方面的方法和数据层打交道具体实现方法如:增、删、改等代码,“放些验证方面的方法”我明白是什么意思,可“和数据层打交道具体实现方法如:增、删、改等”我就不明白了啊!因为操作数据库的代码(比如 添加信息 修改信息 更新信息 插入信息 删除信息等)是应该放数据访问层的啊!!! 请问“和数据层打交道具体实现方法如:增、删、改等”放在业务逻辑层应该怎样理解啊???谢谢!2.在表示层中是怎样和数据库中的表里的内容联系起来的啊?(因为用三层结构来做全站程序不能像我们用非三层结构那样直接在表示层.cs文件中写这样的代码啊 string strSel = "select top 5 * from heartword where d_typeid = " + i +" order by d_hwtime desc"; ),能不能举个简单的例子说说啊?谢谢!

解决方案 »

  1.   

    可以这样分层
    数据库-存储过程-调用存储过程的C#类-实现业务功能的C#类-界面层
    存储过程:把所有表的增、删、修改、查找,都用存储过程实现。
    调用存储过程的C#类:与存储过程是一一对应的,一个存储过程用一个相应的函数去调用。
    实现业务功能的C#类:把一些业务功能集合起来,如:用户登陆,可能要调用多个上面的C#类,或直接调用存储过程,或有还要写一点存储过程来实现业务功能
    界面层:分层的思想是,在这一层中,你越少的考虑数据库结构是分层越成功的做法。
      

  2.   

    简单化理解:用你的例子.string strSel = "select top 5 * from heartword where d_typeid = " + i +" order by d_hwtime desc"; )
    数据层就是heartword这个表.
    业务层就是这条SQL语句.他可以写在一个文件中,比如abc.cs
    界面层就是.aspx文件.在.aspx文件中把abc.cs包含进去.
      

  3.   

    hhaiok(hhai)  e_lb(老牛吃嫩草---初学.net) 你们好,我不是不知道怎样分层啊!我觉得这好像是个矛盾的啊!请知道的大侠解释一下下面二问题啊!1.书上把“和数据层打交道具体实现方法如:增、删、改等”放在业务逻辑层,我就不明白了啊!因为操作数据库的代码(比如 添加信息 修改信息 更新信息 插入信息 删除信息等)是应该放数据访问层的啊!!! 请问“和数据层打交道具体实现方法如:增、删、改等”放在业务逻辑层应该怎样理解啊???谢谢!2.在表示层中是怎样和数据库中的表里的内容联系起来的啊?
      

  4.   

    1、举个插入例子来说:在abc.aspx(表示层)中有1个TextBox和1个Button;TextBox中有一个值,假定为“李四”;Button的功能是“插入”。在abc.aspx.cs文件中写Button的Button_Click事件代码如下:
    private void Button1_Click(object sender, System.EventArgs e)
    {
    SqlConnection cnn=new SqlConnection("Server=localhost;uid=sa;pwd=pwd;database=heartword");
    string strIn="Insert heartword (name) values(@name)";
    SqlCommand cmdIn=new SqlCommand(strIn,conn);
    cmdIn.Parameters.ADD(@name;TextBox.Text);
    cnn.open();
    cnn.close();
    cmdIn.ExecuteNonQuery();
    }
    这个abc.aspx.cs文件就是业务层。
    2、在ABC.aspx的头行中写<%@ Page language="c#" Codebehind="abc.aspx.cs" AutoEventWireup="false" Inherits="ssss" %>。这一段就是表示层与业务层连接的。关于业务层和数据库连接,可以简单的理解为上面代码中的SqlConnection cnn=new SqlConnection("Server=localhost;uid=sa;pwd=pwd;database=heartword");这一段。
    以上的内容是三层结构的最简单理解,在每层中再扩展出去内容就多了。比如:数据层中用存储过程、事物处理等等。业务层中使用各种功能类、数据处理类等等。
    在业务层中,还可以继续划分层次来。比如专门用于计算的层、专门用于操作数据库的层。这就是多层结构了,层与层之间的数据交换也还有多种方法。:)
      

  5.   

    把业务逻辑封装在webservice中(与数据库的操作),每个操作的结果集以XmlNode的形式返回。然后在界面层上调用webservice,
    如:aaaa是一个服务
    XmlNode  lNode;
    lNode=aaaa("aaa","bbb").SelectSingleNode("aa/bb");以这样的形式对返回的结果集进行分析以提取数据。
      

  6.   

    比如用户注册
    表示层按钮事件---》调用业务层uesr.create(name,password),那么业务层具体实现过程中也就是在create方法内调用数据层{先验证数据合法性,在比如密码加密处理,---》调用数据层dal.create(name,password)}