以前一直做winform小程序,终于打算自学三层架构了,虽然看了一些教程,但是实际应用中还是遇到了困难,希望有前辈答疑解惑
按理说UI层不做任何逻辑判断,比如这个登陆窗体的事件中,如下图
如果在数据库没有找到的时候,UI层怎么做找不到该用户的判断呢。只是返回UserInfo这个Model类的话,必须在UI做逻辑判断才可以感觉
两点:
1.在抛出throw new Exception("登陆失败。") 异常时没有任何意义的,用户第一的原则这个错误信息和报错结果十一样,但可以在这里写入日志文件。
2.UserInfo可以继承一个基类BaseEntity,里面有Message、Result的属性,将throw new Exception("登陆失败。")改成UserInfo.Message="登陆失败",UserInfo.Result=false;如果存在UserInfo.Message="登陆成功",UserInfo.Result=true;在ui进行UserInfo.Result值判断,弹出对应UserInfo.Message信息。
其实我就像知道,所谓的UI层,是不是多少可以写点逻辑判断,像这个UserInfo如果没有查询到,我只需判断UserInfo是否为空就可以了,也不用继承BaseEntity。因为我刚看的教程,说的是UI层是不写逻辑判断的,现在出现这种情况,我瞬间懵逼了
这个基类是哪个命名空间下的啊,根本就找不到...
@鲁广广:分为三层的目的是责任分离,逻辑层责任是负责整个系统的所有的业务逻辑,数据层是为了为业务逻辑层或UI层提供数据服务,UI负责主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。其实所有的代码都可以写在UI层里面,但是这样做往往使系统变得难以维护,难以做到高内聚,违背了单一职责,故把从ui层抽离出“两个大类”(抽了情况,取决你的颗粒度),让UI层依赖数据层和逻辑层,这样系统结构清晰;如果以后系统需要添加新的职责和任务,只要对应在业务层添加代码,UI层添加引用,系统就可以更容易的维护和扩展。故并不是UI不能填写逻辑判断。
@鲁广广: 额
@zouhp: 也就是说UI可以写逻辑代码吧。
@鲁广广: 是的
@zouhp: 所以说,尽信书不如无书,非常感谢,结帖了哈