C# 控制器多但动作少或控制器少但动作多

C# 控制器多但动作少或控制器少但动作多,c#,asp.net-mvc,controller,asp.net-mvc-4,C#,Asp.net Mvc,Controller,Asp.net Mvc 4,是什么让您决定创建一个新控制器,而不是向现有控制器添加更多操作?你在哪里划清界限,为什么?决定何时创建新控制器的主要因素是它们执行的逻辑/功能。您需要确保: 前面的每个控制器都用于协调它们相应的域服务/模型和它们的视图之间的通信。作为一般经验法则,我尽可能地简化所有操作,如果它们变大或太多,那么我看看是否可以创建帮助器函数 如有必要,我为每个DB实体配备一个控制器 例如,我有一个用户控制器,一个购物车控制器,一个物品控制器等等 我认为没有任何具体的规定。这只是为了让一切都合乎逻辑。如果这对你来说

是什么让您决定创建一个新控制器,而不是向现有控制器添加更多操作?你在哪里划清界限,为什么?

决定何时创建新控制器的主要因素是它们执行的逻辑/功能。您需要确保:


前面的每个控制器都用于协调它们相应的域服务/模型和它们的视图之间的通信。

作为一般经验法则,我尽可能地简化所有操作,如果它们变大或太多,那么我看看是否可以创建帮助器函数

如有必要,我为每个DB实体配备一个控制器

例如,我有一个用户控制器,一个购物车控制器,一个物品控制器等等

我认为没有任何具体的规定。这只是为了让一切都合乎逻辑。如果这对你来说是合乎逻辑的,那么这就是最重要的,除非你在一个团队中,否则它对每个人来说都是合乎逻辑的

希望这能有所帮助。

当然,图片中没有涉及到的是动作的数量\--至少在“哦,我在这个控制器中有50多个动作,让我们开始另一个”


准则应该是:控制器是对同一类型对象(同一类型的模型可能是更好的定义)进行操作的逻辑组。如果您有一个功能非常丰富的模型,有30个单独的操作可以在其上执行,请继续并将它们放在同一个控制器中

另一方面:如果您有简单的模型,并且您发现自己编写的控制器每个都只有几个操作,那么这应该是对应用程序的可维护性感到满意的理由,而不是担心的理由


注:

当然,一个控制器有这么多的动作是可能的代码滥用的危险信号,所以这个数字应该考虑进去——只是不能作为某种硬性规定


²这实际上是一个指导原则——这里的目标是建立一个可维护的系统,而不是遵循一些宗教经典。

“控制器是一个逻辑组,用于操作相同类型的对象(相同类型的模型可能是更好的定义)”。这听起来像一个控制器一个实体吗?@Elisa:听起来像,但也有可能实体之间的关系如此密切,以至于它们实际上属于同一个控制器。是什么使两个实体如此密切相关,以至于它们进入同一个控制器?@Elisa:它们是相关的事实:)例如
Widget
WidgetCategory
。我想你想听一些硬性的标准——没有一个。好吧,说到事实,软件架构是关于感觉的;-)
public class ProfileController {  }

public class MainController {  }

public class AccountController {  }

public class ShoppingCartController {  }