首页新闻找找看学习计划

弱弱的问一个三层架构的问题....

0
悬赏园豆:10 [已解决问题] 解决于 2018-01-05 15:16

      以前一直做winform小程序,终于打算自学三层架构了,虽然看了一些教程,但是实际应用中还是遇到了困难,希望有前辈答疑解惑

  按理说UI层不做任何逻辑判断,比如这个登陆窗体的事件中,如下图

 

如果在数据库没有找到的时候,UI层怎么做找不到该用户的判断呢。只是返回UserInfo这个Model类的话,必须在UI做逻辑判断才可以感觉

鲁广广的主页 鲁广广 | 初学一级 | 园豆:8
提问于:2018-01-05 14:23
< >
分享
最佳答案
0

两点:

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信息。

收获园豆:10
zouhp | 菜鸟二级 |园豆:225 | 2018-01-05 14:44

其实我就像知道,所谓的UI层,是不是多少可以写点逻辑判断,像这个UserInfo如果没有查询到,我只需判断UserInfo是否为空就可以了,也不用继承BaseEntity。因为我刚看的教程,说的是UI层是不写逻辑判断的,现在出现这种情况,我瞬间懵逼了

鲁广广 | 园豆:8 (初学一级) | 2018-01-05 14:49

这个基类是哪个命名空间下的啊,根本就找不到...

鲁广广 | 园豆:8 (初学一级) | 2018-01-05 14:55

@鲁广广:分为三层的目的是责任分离,逻辑层责任是负责整个系统的所有的业务逻辑,数据层是为了为业务逻辑层或UI层提供数据服务,UI负责主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。其实所有的代码都可以写在UI层里面,但是这样做往往使系统变得难以维护,难以做到高内聚,违背了单一职责,故把从ui层抽离出“两个大类”(抽了情况,取决你的颗粒度),让UI层依赖数据层和逻辑层,这样系统结构清晰;如果以后系统需要添加新的职责和任务,只要对应在业务层添加代码,UI层添加引用,系统就可以更容易的维护和扩展。故并不是UI不能填写逻辑判断。

zouhp | 园豆:225 (菜鸟二级) | 2018-01-05 15:05

@鲁广广: 额

zouhp | 园豆:225 (菜鸟二级) | 2018-01-05 15:07

@zouhp: 也就是说UI可以写逻辑代码吧。

鲁广广 | 园豆:8 (初学一级) | 2018-01-05 15:14

@鲁广广: 是的

zouhp | 园豆:225 (菜鸟二级) | 2018-01-05 15:15

@zouhp: 所以说,尽信书不如无书,非常感谢,结帖了哈

鲁广广 | 园豆:8 (初学一级) | 2018-01-05 15:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册