我见过很多人谈论在他们的ASP.NET MVC项目中使用基础控制器。我见过的用于日志记录或CRUD搭建的典型示例就是这样做的。基本控制器类还有其他一些好的用法吗?
发布于 2011-05-25 11:51:48
基本控制器类没有很好的用法。
现在听我说完。
Asp.Net MVC,尤其是MVC3有大量的可扩展性钩子,这些钩子提供了一种更解耦的方式来向所有控制器添加功能。因为你的控制器类对于应用程序来说是非常重要和核心的,所以保持它们的轻量级、敏捷性和与其他所有东西的松散耦合是非常重要的。
framework.
基础控制器通常由经验不足的MVC开发人员使用,他们不知道MVC的所有不同的可扩展性部分。现在不要误会我的意思,我不是在评判那些出于各种错误原因而使用它们的人。它只是为你提供了更多的工具来解决常见问题。
我几乎可以肯定,除了基本控制器类之外,没有一个问题不能用另一个可扩展性钩子来解决。不要采用最紧密的耦合形式(继承),除非有重要的生产力原因,并且不违反Liskov。我宁愿花不到1秒的时间在像public ILogger Logger { get; set; }这样的控制器上输入一个属性20次,也不愿引入紧密耦合,这会以更显著的方式影响应用程序。
甚至像userId或多租户密钥这样的东西也可以放在ControllerFactory中,而不是放在基本控制器中。一个基本控制器类的耦合成本是不值得的。
发布于 2011-05-26 02:58:28
我喜欢使用基本控制器进行授权。
我在基本控制器中进行授权,而不是使用"Authorize“属性来修饰每个操作。从数据库中获取登录用户的授权操作列表。
有关授权的更多信息,请阅读下面的链接。Good practice to do common authorization in a custom controller factory?
发布于 2011-05-25 11:33:16
我使用它来访问会话、应用程序数据等。
我还有一个应用程序对象,它包含应用程序名称等内容,我可以从基类访问它
基本上,我用它来做我经常重复的事情。
哦,我应该提一下,我不会将它用于业务逻辑或数据库访问。常量对于基类来说也是一个很好的选择。
https://stackoverflow.com/questions/6119206
复制相似问题