在表示层是不是仅仅只调用业务逻辑层的方法
业务逻辑层应该写哪些内容
数据访问层是不是写程序的所有关键性代码

解决方案 »

  1.   

    DAL与具体的数据库操作分开
    业务层中不用connection.
    在BLL通过接口调用DAL方法
    Model,实现业务实体。
    IDAL,实现接口。
    DALFactory,返回程序集的指定类的实例。
      

  2.   

    最简单的三层结构,应该只有Model(实体层),DAL(数据访问层),BLL(业务逻辑层)吧!
      

  3.   

    各位还是具体写出MODEL DAL BLL的事例给楼主看一下,我想这个更容易让他理解。
    关注中...
      

  4.   


    业务逻辑层应该给各种客户端使用,而不是只给一个客户端程序使用。表示层的许多部分只需要美工、维护人员来创建和维护,它只要用鼠标拖入控件组件到设计界面,然后把业务逻辑层的方法的参数与返回跟各个控件进行绑定,就行了。最好不要编写任何代码。数据访问层说白了就是一些标准化的数据库界面,例如SQLHelp等等,它与具体项目的业务逻辑应该没有什么关系,它只是为了提高业务逻辑的性能或者开发效率可能需要不断提高一些更为高级但是通用的方法,例如Linq provider框架。当然,存在一些我称为“竖井式思维”的所谓三层模型,比如微软过去的PetShop就是这种典型,当业务逻辑稍微修改时每一层都要修改代码,这其实就是把麻烦扩大到每一个层面中,只是为了三层而三层,而没有花心思在分层设计上了。
      

  5.   

    举个最简单的例子:
    输入一个数字N,求1+2+3+...+n的和,并保存结果
    using System;
    using System.Collections.Generic;namespace Test
    {
    public class MainClass
    {
    //表现层
    public static  void Main()
    {

    //输入的数据从控制台输入,还是从winForm或webForm输入?
    //随便啦,我个人理解从webForm输入就是webForm程序,
    //从winForm界面输入就是winForm程序,界面不同,输入方式不同而已

    //我的业务层只对int类型的数据感兴趣
    //对输入的数据应该要进行检查(这里我忽略了),应该放在表现层,
    int number=Convert.ToInt32(Console.ReadLine());

    //调用业务层,
    //你的程序需要干什么?把程序的功能都放在业务层吧,
    Algorithm algorithm=new Algorithm();
    algorithm.AddAndSave(number);

    //显示数据
    Console.WriteLine(algorithm.Read());
    Console.ReadKey();
    }
    }

    //业务层

    //输入一个数字N,求1+2+3+...+n的和,并保存和
    public class Algorithm
    { private ISave dataSave;

    public  Algorithm ()
    {
    dataSave=new DataSave();
    }

    //计算并保存
    public void AddAndSave(int n)
    {
    int sum=Summation(n);
    Save(sum);
    }

    //你需要把数据保存在哪??SQLSERVER还是oracle?
    //用LINQ,还是nhibernate,
    //这个我管不了,不归我管,我只给你计算好的数据,数据层你用什么方法是你的事
    private void Save(int n)
    {
    dataSave.Save(n);
    }


    public int Read()
    {
    return dataSave.Read();
    }

    private  int Summation(int n)
    {
    if(n==1)
    return 1;
    else
    return n+Summation(n-1);
    }
    }

    //数据层
    public interface ISave
    {
    void Save(int n);
    int Read();
    }

    //从业务层得到了计算好的数据,
    //我是要把它存在SQLSERVER,还是Oracle
    //我要用LINQ还是Nhibernate,让我好好想想
    //算了,这里还是直接用一个类来保存数据吧,
    public class DataSave : ISave
    {
    private int data;


    public void Save(int n)
    {
    data=n;
    }

    public int Read()
    {
    return data;
    }
    }
    }
      

  6.   

    看来上面的人概念有点模糊,所谓的三层架构涉及到一个设计模式的概念,要看你采用的是什么设计模式,常用的有 MVC(model,view,controller)和MVP(model,view,presenter)
    微软自己有一个MVC框架的,直接套基本就是MVC的模式了,MVP的实现难度有点大,目前没有看见有很好用的框架可以实现,要自己写。
    MVC模式是一个用户界面演示模式,重点是从业务层(Model)分离的用户界面(View) 。该模式在职责分开三部分组成:view 负责渲染UI元素  , 控制器controller 负责响应用户界面的行动,
    该模型(Model)是负责业务的行为和状态管理,也就是最关键的,目前webform的codebehind可以说默认就实现了mvc模式了,相当于一个控件后面就有一个事件去处理
    在MVP中,view要简单很多,没有那么多乱七八糟的指定哪个控件要哪个事件去处理,可能只有两个事件,一个是get,一个是set,至于怎么处理,谁来处理,全部交给presenter去干,他先get view的内容,然后自动会调用model的核心代码出来好再set到view里面