2 回答
TA贡献1804条经验 获得超8个赞
“可是我查看一些资料说mvc模式是应该在model中进行数据读取的”,这里的Model并不是指MVC里的Model。MVC是表现层的架构,这里的Model实际上是ViewModel,即供View进行展示的数据。ViewModel不包含业务逻辑,也不包含数据读取(就如同LZ的MemberViewModel)。
而在N层架构中,一般还会有一个Model层,用来与数据库的表相对应(如LZ的User),也就是所谓ORM中的O。这个Model可能是POCO,也可能是包含一些验证逻辑的实体类,一般也不包含数据读取。进行数据读取的是数据访问层,也就是LZ的UserRepository。而作为UI层的MVC一般不直接操作数据访问层,中间会有一个业务逻辑层封装业务逻辑、调用数据访问层。UI层(Controller)通过业务逻辑层来得到数据(Model),并进行封装(ViewModel),然后选择相应的View。
以上说的只是简单的N层架构,如果是分布式系统,可能还会有服务层、DTO层等等,就不赘述了。
不过,也没有必要严格遵循N层架构的模式。对于十分简单的系统,如果业务逻辑十分简单,只是到数据访问层相应方法的映射,那么完全可以剔除业务逻辑层,而像LZ那样直接通过Controller调用数据访问层。但对于相对较大的系统,业务逻辑复杂,不管将其置于Controller中还是数据访问层中,都会导致其臃肿,职责不单一。这时还是需要提供一个业务逻辑层的。
因此,LZ的做法适合小型简单的系统。对于稍复杂的系统,最好提供业务逻辑层,它不仅仅是“封装一次”数据读取,还封装业务逻辑。
- 2 回答
- 0 关注
- 751 浏览
添加回答
举报