用于多个控制器/模型的案例


A case for multiple controllers/models?

我正在构建一个监控应用程序。我有几个类别,每个类别都有几个监视器。监视器的一个示例是CPU使用情况的图表。

我的问题是关于建筑的。我试图实现MVC,使项目的未来扩展简单,但我已经达到了一个困境。要么我
  1. 为每个监视器提供单独的控制器和模型,或
  2. 有一个MonitorController对象和一个MonitorModel对象,每个监视器有一个方法

#1的缺点是

  • 我必须单独定义每条路由
  • 我将为每个路由实例化不同的控制器,当每个控制器基本上只有一个任务要执行:调用模型的getData()方法。基本上,到目前为止,我已经能够为所有监视器使用一条路由/{category}/{monitor},并且简单性很好。

#2的缺点是

  • MonitorModel对象将变得巨大且不可维护,因为每个图表的getData()方法可能非常复杂,跨越数十行。

这里正确的方法是什么?

(顺便说一下,我用的是PHP)

建立模型的第一条原则是尽量保持简单。将这几十行逻辑放到另一个项目中,并在mvc项目中引用它。把你的MVC应用程序想象成你的UI,所有的"业务逻辑"都应该保存在一个项目中,而这个项目完全不知道它最终会如何显示。

这样做将使它非常清楚,你可能应该有一个Monitors控制器与Data方法,它接受一些指示符,显示哪个监视器,并为该监视器产生一个视图。这将是最直接的mvp方式。

现在处理多种不同类型的监视器!一套DisplayTemplates处理显示每种不同类型是可行的方法。Data的视图实际上变成了@Html.DisplayFor(x => x)。使用DisplayTemplates时必须连接msdn。

需要注意的是,总是向视图传递一个简单的DTO。越简单越好,从长远来看,这将使你的生活更轻松。

现在你就有了一个漂亮的、清晰的应用程序切片,当事情发生变化时,不同的部分不会过多地相互踩踏。