Ore*_*n A 3 model-view-controller design-patterns
我是新来的MVC但是从我迄今教训(例如这里,通过ScottGu)一个应该立志"瘦控制器",而不是"胖"的人.
除此之外,视图本身就很薄,并且您将在模型中获得大量代码.
所以我的问题是 - 如何将模型中的代码划分为不同的逻辑部分以降低复杂性?
您是否在模型本身内使用数据访问层和业务逻辑层(我猜这仍然会包含大量代码),还是有更好的方法可以做到这一点?
谢谢.
Col*_*ond 10
我们使用的图层是:
视图 - 尽可能薄 - 没有逻辑 - 只显示
视图模型 - 每个视图的强类型 - 不包含实体,只包含我们想要在任何一个视图中的字段.
控制器 - 只是路由和调用VMS.通过路由到错误页面处理从较低级别冒出的异常.
View Model Services - 创建视图模型并将其解压缩到EF实体中.没有数据访问逻辑.每个控制器一个VMS.大量使用AutoMapper将视图模型的数据传输到实体中.
商业服务 - 数据访问的主要方面.每个控制器一个BS.使用尽可能多的存储库来完成其工作.交易范围控制器在这里 VMS对BS进行一次调用 - 如果需要,它会在单个事务中包装所有必需的DB调用.我们预计BS将来会拨打外部服务电话.
存储库 - 每个(顶级)实体一个 - 为一组实体执行所有CRUD操作.我们的实体是大型复杂的对象图 - 因此我们处理每个存储库的最顶层父级.
上下文 - 围绕EF产生的上下文的薄包装,所以他们可以嘲笑我.
就MVC而言 - 模型部分由控制器下方的所有部分组成.