一直疑惑,WinForm中(当然ASP.NET中也行),三层架构,数据验证到底在写在Form中,还是写在业务逻辑中。当然编号重复之类的,肯定在业务逻辑中,但是如 年龄为数据,年龄>18且小于50,单据号必须是8位-10位,写在哪一层?
    写在业务逻辑层,那要不停的抛异常,捕捉异常;或者要得到返回的错误号;写在窗体层,那代码就可以简单点。    大家是如何处理的?

解决方案 »

  1.   

    如果是正规系统应该写在业务逻辑层,逻辑层是可以迁移替换的.你winform的业务逻辑层也可以拿去webform用,只要换界面而不再用考虑业务逻辑的合法性,这是多层的出发点之一
      

  2.   

    如果是正规系统应该写在业务逻辑层,逻辑层是可以迁移替换的.你winform的业务逻辑层也可以拿去webform用,只要换界面而不再用考虑业务逻辑的合法性,这是多层的出发点之一--------------------------------------------------------------------
    言之有理,但在界面层中还要不要判断呢?如果不要的话,那是不是就得捕捉异常了?
      

  3.   

    最基本的逻辑比如唯一性,只有写在数据库(创建唯一索引)才是最可靠的,
    我的做法是要对此问题实施策略,要根据不同的需求分别制定在哪里验证.
    最好写一个通用类,根据不同的Client端,它的表现形势也不一样,比如在逻辑层呼叫它,它只返回对错,在Winform中它也可以立即判定对错,在WEB它可以直接参与验证脚本的编写
      

  4.   

    还是说要看你写的东西大小了``小东西我还是习惯直接写form中``
    大点的东西`肯定要往逻辑里面加
      

  5.   

    按道理说,验证也是属于业务逻辑的重要部分,
       但是,如果 BusinessLayer 和UI部署在不同机器上,验证放在BusinessLayer,就会影响网络的交互量。
       所以,这个问题需要综合权衡。