我开始对MVC中控制器的工作感到困惑。
我有一个服务,提供了五个函数:
列出队列中的包裹
获取包裹
删除包裹
接受包裹
拒绝包裹
我的ASP.NET MVC控制器依赖于这个服务,并且通常可以在操作上执行服务调用。到目前为止,我很满意。
然后是构建ViewModel结果的第二部分。如果我在控制器中完成这一步骤,那么控制器现在就有了一个爆炸性的依赖列表——每个添加的操作都会增加构建视图模型的依赖关系,并且这些依赖关系都被控制器继承。我不太喜欢这样。我正在构建这个依赖于N个不同视图模型构建器的控制器,但每个请求只使用其中一个。
所以,我考虑将所有这些内容提取出来,并针对每个视图模型应用特定的操作过滤器。我还没有做到这一点,但这似乎还好。
这让我产生了一个问题:控制器的职责是什么?如果我最终将视图模型构建放入过滤器中,我的控制器除了执行服务调用(并提供一个过滤器插件)之外几乎没有其他作用。如果我让我的控制器负责构建每个视图模型,它就会变得一团糟。
看起来我几乎想为每个请求实例化一个操作,而不是一个控制器,并且我只是滥用了过滤器?
我有一个服务,提供了五个函数:
列出队列中的包裹
获取包裹
删除包裹
接受包裹
拒绝包裹
我的ASP.NET MVC控制器依赖于这个服务,并且通常可以在操作上执行服务调用。到目前为止,我很满意。
然后是构建ViewModel结果的第二部分。如果我在控制器中完成这一步骤,那么控制器现在就有了一个爆炸性的依赖列表——每个添加的操作都会增加构建视图模型的依赖关系,并且这些依赖关系都被控制器继承。我不太喜欢这样。我正在构建这个依赖于N个不同视图模型构建器的控制器,但每个请求只使用其中一个。
所以,我考虑将所有这些内容提取出来,并针对每个视图模型应用特定的操作过滤器。我还没有做到这一点,但这似乎还好。
这让我产生了一个问题:控制器的职责是什么?如果我最终将视图模型构建放入过滤器中,我的控制器除了执行服务调用(并提供一个过滤器插件)之外几乎没有其他作用。如果我让我的控制器负责构建每个视图模型,它就会变得一团糟。
看起来我几乎想为每个请求实例化一个操作,而不是一个控制器,并且我只是滥用了过滤器?