2

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

我的问题是关于建筑的。我正在尝试实施 MVC 以使项目的未来扩展变得简单,但我陷入了两难境地。要么我

  1. 每个监视器有一个单独的控制器和模型,或者
  2. 有一个MonitorController对象和一个MonitorModel对象,每个监视器有一个方法

#1 的缺点是

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

#2的缺点是

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

这里的正确方法是什么?

(顺便说一句,我正在使用 PHP。)

4

1 回答 1

1

模型的第一条规则是使它们尽可能简单。将这几十行逻辑放到另一个项目中,并在你的 mvc 项目中引用它。将您的 MVC 应用程序视为您的 UI,所有“业务逻辑”都应保存在一个项目中,该项目完全不知道它最终将如何显示。

这样做会很清楚,您可能应该有一个Monitors带有Data方法的控制器,该方法需要一些说明符来显示哪个监视器并为该监视器生成一个视图。那将是最直接的 MVC 方式。

现在处理多种不同类型的显示器!一套DisplayTemplates显示每种不同类型的句柄是要走的路。你的观点Data基本上变成了@Html.DisplayFor(x => x). 关于使用的强制性 msdn 链接DisplayTemplates

请注意,始终将简单的 DTO 传递给您的视图。越简单越好,从长远来看,这将使您的生活更轻松。

现在,您将拥有一个干净利落的应用程序,当事情发生变化时,不同的部分不会互相践踏太多。

于 2013-02-27T20:34:22.237 回答