我听说控制器应该保持轻便,模型很重.
关于应该在控制器中保留什么以及应该在模型中保留什么的最佳实践,我有点困惑.
在我们的组织中,我们使用实体框架,并将表放在那里.
对于控制器,我们使用LINQ,然后将信息发送到视图.
有点混淆控制器和模型中的代码应该是什么.
ter*_*ško 11
免责声明
整个主题是一个巨大的混乱.特别是在Web MVC方面.出于所有实际目的,不可能将经典的MVC模式用于web,因为视图应该是观察模型.从理论上讲,你可以使用WebSockets实现类似的功能,但为每个用户保留持久模型并不是一个现实的解决方案.
经典MVC和MVC启发模式中最重要的思想分离关注点.它将应用程序分为两大层:
表示层
管理用户界面.它处理接口的创建并对用户对此接口的操作做出反应.此接口可能是桌面应用程序或HTML网页的GUI,但它也可以是Mars漫游器上的REST API或接收器响应程序.这就是Web应用程序可以在前端和后端实现MVC模式的原因.
必需部分是视图和控制器,但是在Web的上下文中,完全实现的视图通常还使用多个模板来创建界面.
模型层
这是所有业务规则和逻辑的生命所在.MVC中的M不是单个实体.相反,它是一个包含不同结构的图层.其中一些结构也负责与存储的交互.
控制器是表示层的一部分,它处理用户输入.在基于Web的实现的上下文中,您通常在视图和控制器之间具有1:1的关系,其中控制器从浏览器接收请求,并且基于所述请求的内容,改变模型层和视图的状态.
如果您使用的是经典的MVC或Model2 MVC,那么这就是控制器职责的范围.
在具有被动视图的MVP和MVVM模式中,类似控制器的结构负责从模型层获取信息并将其传递给当前视图实例.这篇文章可能会提供有关MVC启发模式的一些额外细节.
但是控制器决不对任何形式的业务逻辑负责.如果是,那就意味着你有一个泄漏的抽象,因为表示层的结构将起作用,应该在模型层中.
通常,控制器将是您应用程序中最简单的结构.
如前所述,model是一个层,它包含所有域业务逻辑和相关功能.该层与表示层一样,由多组结构组成:
域对象[1]
数据存储结构
该组将包含所有类,这些类抽象了与存储的交互(SQL数据库,缓存系统,noSQL,远程SOAP或REST API).他们通常会实现数据映射器或存储库模式的某些变体,但您也可以使用其他一些解决方案,例如工作单元.实施细节并不那么重要.什么是重要的是,他们让你存储从数据和检索信息到你的域对象.
服务
或者你可以称之为"组件".模型层中有高级抽象,便于域对象和存储结构之间的交互.通常代表模型层的大块,如"识别服务","邮件程序","文章管理",并将提供表示层与之交互的界面.
| 归档时间: |
|
| 查看次数: |
2105 次 |
| 最近记录: |