什么时候应该在Asp.net MVC(设计问题)中创建新的Controller类? [英] When should I create new Controller class in Asp.net MVC (Design Question)?

查看:151
本文介绍了什么时候应该在Asp.net MVC(设计问题)中创建新的Controller类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  1. 控制器是应用层(在DDD中)

    在我提出问题之前, / li>

  2. 它控制应用程序流程。

  3. 保持薄薄

  4. 它控制工作单位(又称事务)

我的问题是什么时候应该创建新的Controller类?。我将在 NerdDinner 中以DinnerController为例。




  • 是否为 Dinner Module 的控制器? (是模块吗?IMO,对于模块来说太小了)

  • 如果是,应该为每个模块创建控制器?控制器会变胖吗?

  • 如果不是,何时应该创建新的控制器?



我个人更喜欢根据用例创建Controller类。例如,CreateDinnerControllelr,EditDinnerController,ListDinnerController,SearchDinnerController等。但是有一些缺点IMO例如


  1. 有时它违反了DRY原则(它可能需要在两个位置创建相同的ViewModel,例如创建和编辑可能有DinnerViewModel)

  2. 需要明确定义路由? (我仍然喜欢路线,如 /晚餐/创作 /晚餐/编辑/ 1

提前感谢

解决方案

在ASP.net MVC和rails工作后,我认为Controller应该创建资源(在REST 样式应用程序中)。


Before I ask the question, here is my understanding about Controller in MVC pattern.

  1. Controller is Application Layer (in DDD)
  2. It controls Application flow.
  3. It is kept thin
  4. It controls unit of work (a.k.a Transaction)

My question is "when should I create new Controller class?". I'll take an example as DinnerController in NerdDinner.

  • Is it the controller for Dinner Module? (Is it module? IMO, it is too small for module)
  • If it is, should I create controller for each module? And will the controller become fat?
  • If it is not, when should I create new controller?

I personally prefer to create Controller class per use case. For example, CreateDinnerControllelr, EditDinnerController, ListDinnerController, SearchDinnerController, etc. But there are a few drawbacks IMO such as

  1. Sometimes, it violates DRY principle (it might need to create the same ViewModel in two place, e.g. Create and Edit might have DinnerViewModel)
  2. Need to explicitly define routing? (I still perfer route like /Dinner/Create, /Dinner/Edit/1)

Thanks in advance.

解决方案

After working on ASP.net MVC and rails, I think Controller should create per Resource (in the REST style application).

这篇关于什么时候应该在Asp.net MVC(设计问题)中创建新的Controller类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆