1:A.aspx.cs 调用2中的ADD方法
2:bll:a.cs 方法ADD(Model model);
return 3.ADD(model);
3:dal:a.cs 有方法ADD(Model model);
由于业务逻辑不复杂,一般的都写在存储过程中了,数据效性验证在A.aspx.cs的页面里验证了,而业务层基本上只有一个
return 数据层方法。(我现在是在表显层中前台js也判断,后台的A.aspx.cs中也判断,通过后就调用2中的方法)
这样是不是有一个问题?我的另一个同事提出的,他以前做ASP和PHP的。
如果是用抓包工具提取到提交路径和一个必要参数,然后写个程序直接提交到业务层,那如果业务层不验证的话,是不是就有问题了?
大家是怎么做验证的啊?

解决方案 »

  1.   

    个人认为是要验证。这里的验证是基于业务逻辑的验证,而不是数据的合法性(这个由UI验证)
    public void add(int a ,int b)这里面就需要验证A/B是不是INT型。而是验证a>0 and b>0.
    (UI负责验证用户输入的是不是整型的数)。
      

  2.   

    你对分层的理解有很大的问题...如果出现“表现层有些验证要跟数据库打交道”那说明你并不需要业务逻辑层...所以再次验证也没有必要了...比如验证用户名是否重复...UI提交请求到BLL...BLL的验证处理过程是走数据库还是走缓存UI不关心也不需要知道...另外这个过程只验证了一次...UI只是提出请求得到结果...如果你的UI中直接去查数据库那么你的BLL是没有存在价值的...
      

  3.   

    对于“验证用户名是否重复”这种任务...UI的验证工作仅仅是...1.是否是个字符串...
    2.长度是否符合要求...然后就丢给BLL...“用户名是否重复”的是BLL的验证工作...
      

  4.   


    我以前是在UI层调用BLL层的验证用户的重复性的现在明白了,我基本上要把以前在UI层的一些验证拿到BLL层去,就搞定了总算明白了一件事了我现在大部门操作都是Bool型,看来得改成int型,根据一些类型还提示错误