0

我正在开发一个必须在不同页面上显示图表的 Web 应用程序。每个页面对应一个Controller,每个需要图表的Controller都有一个ChartService的接口。该服务向第三方供应商请求图表。然后,它将用 JavaScript 封装在一些 HTML 中的图像作为字符串直接返回到输出流中。ChartService 需要提供数据和一些其他参数,例如时间段和模板文件。

我应该将图表功能抽象到它自己的控制器中吗?每种不同类型的图表都可以由 ChartController 上的不同操作方法提供服务。

但是,我从多个控制器提供我的一些页面会是一个问题吗?确定何时应赋予其自己的控制器功能的准则是什么?

4

3 回答 3

1

听起来你根本不需要改变任何东西。您已经在包装器中抽象出第三方服务,这样您的控制器就不会直接依赖于该特定服务。在这种情况下创建一个新的控制器相当于在你的包装器周围创建一个包装器。

当您想向应用程序添加行为时,请创建一个新控制器。

于 2010-08-06T20:29:48.090 回答
0

戴夫,

我有一个抽象的基本控制器,你的主控制器继承自。基本控制器将具有所有必需的功能,而子控制器将覆盖适当的部分。在不了解您的困境的完整背景的情况下,这可能是也可能不是可行(或理想)的方法,但它是我目前在所有控制器中采用的方法。

[编辑] - 这种方法的美妙之处在于,如果幸运的话,75% 的基本控制器功能将保留,只有 25% 的功能被覆盖和/或为该子控制器添加定制功能。这将为您提供一个非常干净的范例,因为每种新图表类型都有自己的模型/控制器,具有可能相同的操作方法名称,从而使新图表类型的“进入”成本非常便宜。

吉姆

于 2010-08-07T08:59:19.490 回答
0

IMO,如果您有一个带有 url 的“图表”部分,例如

charts/income
charts/expenditure

那么图表控制器是有意义的。此外,例如,如果您的图表控制器仅由来自各个页面的 ajax 查询调用,那么 chartingController 仍然有意义。但是如果你有像这样的网址

products/list
products/yearlyStockChart
employees/details
employees/performanceChart

然后,您需要一个具有 List() 和 yearlyStockChart() 操作的 ProductsController,以及一个具有 details() 和 performanceChart() 操作的 employeesController,这两个控制器都使用 chartingService。

于 2010-08-07T10:57:53.323 回答