Scripts 学盟

标题: 三层与mvc [打印本页]

作者: momo    时间: 2011-5-25 22:56:19     标题: 三层与mvc

三层:即表现层UI  业务逻辑层BBL  数据访问层DAL
实现方法就是  表示层调用逻辑层方法,逻辑层调用数据访问层方法,
举例子消化:
比如要查出某个用户信息,或者所有用户信息

表示层:那就是显示出所有人的信息喽


先说数据访问层:就是sql中增删改查的方法
DAL----->DB.cs
namespace DAL
{  public class DB  
    { SqlHelper helper = new SqlHelper();
       public DataTable GetAll()
       { string strsql = "select * from users";
           SqlCommand cmd = helper.GetCommand(strsql, null);
           DataTable dt = new DataTable();
           using(SqlDataReader rdr=cmd.ExecuteReader())
           { dt.Load(rdr);}
           return dt;
       }
       public DataTable GetByModel(UserInfo model)
       { SqlHelper helper = new SqlHelper();
           string strsql = "select * from users where id=@id";
           SqlParameter[] parm = new SqlParameter[]
           {new SqlParameter("@id",model.ID)};
           SqlCommand cmd = helper.GetCommand(strsql, parm);
           DataTable dt = new DataTable();
           using (SqlDataReader rdr = cmd.ExecuteReader())
           {dt.Load(rdr);}
           return dt;
       }
    }
}

业务逻辑层:
BBL------->userBBL.cs   调用db.cs中的方法   它自己也是个方法

namespace BBL
{   public class UserBBL
    {  DB db = new DB();
        UserInfo ui = new UserInfo();
        public DataTable ALL(UserInfo model)
        { if (model != null)
            {  return db.GetByModel(model); }
            else
            { return db.GetAll(); }
        }
    }
}

其实我在学的时候做东西就没用过BBL,我只觉得这层没啥太大价值(一种隔靴挠痒的感觉),毕业设计时我直接写完实体类,数据访问层中的那些方法,就跑到前台直接去调用了,(我有这样的认知自认为原因有二,一是可能它本身就真没啥价值(哇咔咔莫要讲我见识短,就是短还不让人家说了,口黑口黑)二是我做的那个站不大业务逻辑不复杂,其实又在变相说我见识浅,)以上是俺对三层见解认知


至于那个mvc嘛,最近在啃文档,死磕也没磕下来,还是认为他一直是在讲三层,至于mvc的理解现在写不出来哇,因为我自己举不出例子来,所以就是没理解,那个mvc后续吧,接下来去磕个mvc的站去,希望能够理解的了,欢迎到时候再听漠漠大师讲解mvc( 是不是有人会讲这mm真是有够臭屁)
嘎嘎,混混要给我五十大分,不给我分,跟你没完
作者: 那个谁    时间: 2011-5-26 08:23:50

漠漠厉害。。毕竟勇气可嘉。。。。混混给分、不给分跟你没完。。
作者: momo    时间: 2011-5-26 09:22:07

那个谁 发表于 2011-5-26 08:23
漠漠厉害。。毕竟勇气可嘉。。。。混混给分、不给分跟你没完。。 ...

杰杰过来请你吃饭,今天得分啦,咚咚呛,咚咚呛!!!!!
作者: 那个谁    时间: 2011-5-26 10:26:35

momo 发表于 2011-5-26 09:22
杰杰过来请你吃饭,今天得分啦,咚咚呛,咚咚呛!!!!!

又欠我一顿饭。。。
作者: momo    时间: 2011-5-26 14:03:57

那个谁 发表于 2011-5-26 10:26
又欠我一顿饭。。。

杰杰给补充下吧,我今天再看昨晚写的好像不对,里面有错误
作者: 那个谁    时间: 2011-5-26 14:24:43

momo 发表于 2011-5-26 14:03
杰杰给补充下吧,我今天再看昨晚写的好像不对,里面有错误

我表示不会。。
作者: momo    时间: 2011-5-26 14:34:44

俺不是要误导大家的昂,上面仅代表个人观点,解释权归漠漠官方所有
下面是比较准确的解释吧,确定及肯定的讲我认知真的很浅



业务逻辑层用于做一些有效性验证的工作,以更好的保证程序运行的健壮性。如完成数据添加、修改和查询业务等;不允许指定的文本框中输入空字符串,数据格式是否正确以及数据类型验证;用户权限的合法性判断等;通过以上的诸多判断以决定是否将操作继续向后传递,尽量保证程序的正常运行。

  业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。例如Martin Fowler在《Patterns of Enterprise Application Architecture》一书中,将整个架构分为三个主要的层:表示层、领域层和数据源层。作为领域驱动设计的先驱Eric Evans,对业务逻辑层作了更细致地划分,细分为应用层与领域层,通过分层进一步将领域逻辑与领域逻辑的解决方案分离。

  业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。正因为如此,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。





欢迎光临 Scripts 学盟 (http://www.iscripts.org/) Powered by Discuz! X2