asp.net-mvc – 神控制器 – 如何防止它们?
在我一直在研究的几个MVC项目中,显而易见的是,有一些问题的控制器已经有机地成长为上帝阶级,每个人都在自己的领域,如果你愿意的话.
这个问题可能更多的是“什么在哪里”,但我认为这是一个重要的问题,关于SRP(单一责任原则),DRY(不要重复自己),并保持简洁,“敏捷” – 我没有足够的经验(用这种模式和一般设计)来了解这个. 在一个项目中,我们有一个NutritionController.随着时间的推移,它已经成长为包括这些动作(许多与他们各自的GET,POST和DELETE方法):
然后我们有一个ExerciseController,它将包含许多类似的操作,例如搜索和收藏夹操作.这些是否应该重构到自己的控制器中,这样就是这样? SearchController { SearchExercise SearchNutrition //... etc } FavoritesController { ViewNutritionFavorites AddToNutritionFavorites AddToExerciseFavorites EditNutritionFavorites EditExerciseFavorites //... etc } 在我看来,如果你把它们分成不同的控制器,你将会在某种程度上增加一个令人难以置信的大型依赖,来处理你需要的信息.或者你将有一个完全通用的处理应用程序,这将非常难以处理,因为你将不得不跳过这么多的圈,以获得你想要的效果(在M,V或C级别). 我在想这个错误的方式?例如,我应该有一个通用的“收藏夹”对象,然后让控制器决定要将其抛出的视图? *对不起拼写出首字母缩略词 – 我正在这样做,以防其他人遇到这个问题,这些东西是无知的 编辑: 解决方法
我会根据责任打破你的第一个列表:
HomeController的 >索引 FoodItemController > ViewFoodItem NutritionController > ViewNutritionSummary FavoritesController > AddToFavorites Django的MVC方法是将责任分为“应用程序”,每个应用程序都有自己的型号,控制器,甚至必要的模板.您最喜欢的应用是食品应用,营养应用,搜索应用和收藏应用. 编辑:OP提到搜索对每个控制器更具体,所以我做了这些动作.然而,搜索也可能只是一般的全局事物,所以在这些情况下,SearchController会很好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c# – 因为算法不同,客户端和服务器无法通信
- asp.net – 如何使用HtmlEncode与TemplateFields,数据绑定和
- ASP.NET编译器抱怨MiniProfiler不匹配的框架版本
- asp.net – 表单身份验证web.config设置
- openxml – 在Asp.net核心1.0中使用Microsoft.Office.Inter
- 如何使用Team Build部署ASP.NET Web应用程序?
- asp.net – 不允许从数据类型sql_variant到uniqueidentifie
- asp.net – 在同一行(左右)对齐标签和文本框
- 如何在ASP.NET MVC中获得HttpResponse的引用?
- ASP.NET EF错误:11007未映射实体类型