在具有多个控制器的一个控制器VS中具有许多方法

hsi*_*sim 7 c# asp.net-mvc

我正在开发一个应用程序,我正在思考一些事情.所以我想我会问这里有经验的人告诉我他们对此的看法.

所以我有这个控制器(存储控制器),它很庞大,有很多方法,Get和Post动作等等.它工作得很好,但我还处于开发阶段.

我想知道什么是最好的做法:拥有这个控制器,它拥有如此多的方法和动作,或者将方法分成多个控制器?让一个控制器处理几乎所有方法或许多控制器是理想的吗?

在您询问之前,是的,我的商店控制器中的所有内容都与"商店相关".但在我的商店里我有物品,包裹等等.

编辑

感谢大家!根据你的建议,我将我的巨大Store控制器分成了较小的控制器:一个用于物品,一个用于包装,依此类推.这确实使代码更具可读性.此外,提供的大量评论将使我有望升级,所以非常感谢!

Paw*_*ger 7

将您所有控制器的动作分成一些逻辑包绝对更好-将它们移至单独的控制器。因此,对于其他将从事该项目的开发人员来说,这一切对您而言都变得更加可读和直观。

问题是:如何划分?

实际上,有一些标准可以影响这样的决定,例如:

  • 控制器应与一组逻辑连接的页面连接。因此,例如在电子商务平台的情况下,您可能会拥有CheckoutController,ProductController,UserAccountController等。
  • 您还应该考虑应考虑哪些业务概念。在您的情况下,您有一个概念商店,但是您可能已经意识到,它本身就是一个非常广泛的概念。因此,您可能应该在业务概念中区分更多细节。

一种很常见的方法是将控制器除以CRUD,尽管并不总是适用。另一方面,您的控制器不应过于颗粒化-因此您不应夸大其词。

请记住,ASP.NET MVC使用CoC(配置公约)方法,该方法也适用于控制器和视图命名约定及其分组和放置在适当目录中的方式。在划分控制器时,应考虑到这一点。


ram*_*ilu 3

我更喜欢多个控制器而不是具有多个操作的单个控制器。我会这样做 - 让 BaseStoreController 从 Controller 派生,该控制器将具有常见的功能和属性。然后从 BaseStoreController 派生 StorePackageController、StoreItemsController 等。

在每个控制器内,我将有与包、项目等相关的相应操作。在每个操作内,我将确保使用命令模式和外观模式来确保正确的代码分离。