ken*_*ner 27 asp.net-mvc controller base-class
我见过很多人谈论在他们的ASP.NET MVC项目中使用基本控制器.我见过的典型例子就是记录或者CRUD脚手架.基本控制器类有哪些其他好的用途?
Joh*_*ell 41
基本控制器类没有很好的用途.
现在听我说
Asp.Net MVC,特别是MVC 3有大量的可扩展性钩子,它们为所有控制器添加功能提供了更加分离的方式.由于您的控制器类非常重要且对应用程序至关重要,因此保持它们的轻量级,敏捷性以及与其他所有内容松散耦合非常重要.
日志记录基础结构属于构造函数,应通过DI框架注入.
CRUD脚手架应由代码生成或自定义ModelMetadata提供程序处理.
全局异常处理应由自定义ActionInvoker处理.
全局视图数据和授权应由操作过滤器处理.使用MVC3中的全局动作过滤器更容易.
常量可以放在另一个名为ApplicationConstants的类/文件中.
基本控制器通常由没有经验的MVC开发人员使用,他们不知道MVC的所有不同的可扩展性部分.现在不要误解我的意思,我不会因为所有错误的原因而与使用它们的人一起评判和合作.它的经验为您提供了解决常见问题的更多工具.
我几乎肯定没有一个问题你用另一个扩展性钩子而不是基本控制器类来解决.除非存在显着的生产力原因并且您没有违反Liskov,否则不要采用最严格的耦合形式(继承).我宁愿花费<1秒在我的控制器上输入20次属性,而public ILogger Logger { get; set; }不是引入紧密耦合,这会以更重要的方式影响应用程序.
甚至类似userId或多租户密钥的东西也可以放在ControllerFactory而不是基本控制器中.基本控制器类的耦合成本是不值得的.
小智 8
我喜欢使用基本控制器进行授权.
我没有使用"授权"属性来装饰每个动作,而是在基本控制器中进行授权.从数据库中为登录用户提取授权操作列表.
有关授权的更多信息,请阅读以下链接. 在自定义控制器工厂中进行通用授权的良好做法?
| 归档时间: |
|
| 查看次数: |
14793 次 |
| 最近记录: |