MVC - 创建新控制器与创建新方法

时间:2014-03-01 05:43:01

标签: asp.net-mvc single-responsibility-principle

我有以下控制器类:

SchoolController extends Controller:

// Mainly for AJAX requests
+ searchSchoolDataAction()
+ searchGradeDataAction()
+ searchPeriodDataAction()

// Entry point for a school website
+ schoolAction(shortName)

// Pre-enrolment process users from a certain school can perform
+ startPreEnrolmentAction(shortName)
+ preEnrolmentStudentAction(school)
+ preEnrolmentTutorAction(school)

等等。

现在。众所周知的原则是我们应该保持控制器薄,模型厚。此外,控制人员还应遵循单一责任原则。我的控制器已经获得了很大的重量。所以,这里有一个问题:关于MVC和OOP的最佳实践,我应该何时创建一个新的控制器,何时应该向控制器添加一个新方法?此外,什么是控制器方法的一个很好的例子,或者这是程序员留下的东西? (如果是后者,这听起来有点违反直觉,因为它是一个遵循的原则,但我不确定。)先谢谢你。

2 个答案:

答案 0 :(得分:1)

控制器应仅处理用户请求,并仅在需要显示网页时添加新方法。例如,您需要为单个表假设国家/地区创建CRUD。

您的控制器将是国家/地区。 Controller Controller代表Web页面,如fetchAllAction,AddAction,UpdateAction,DeleteAction。

如果你的项目长时间运行,那么你应该在企业架构上构建你的模型。企业架构由四层组成。 i)数据模型。 ii)域逻辑模型。 iii)映射器。 iv)服务。 注意:服务层是控制器的唯一网关和公共面。

答案 1 :(得分:1)

根据我的经验,在设计控制器方法和新控制器时,SRP非常重要。

考虑您的基本控制器方法应该只包含逻辑,例如从数据库/服务查询中填充视图模型并将视图模型呈现给您的视图。

创建控制器的SRP应该是更广泛的意义。根据我的经验,它是维护,可扩展性和用户体验考虑的结合。

考虑CRM系统中“会计”部分的情况。您可能希望使用一个控制器来表示会计部门的所有方面,但您也可以将其分解为“发票”,“税收”,“工资单”等。使用多个控制器可以改善用户体验,因为他们将从URI中了解你的网页实际上在做什么。多个控制器允许您将大型控制器减薄为多个特定控制器。