首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ASP.NET MVC中,哪些基本控制器类是很好的候选者?

在ASP.NET MVC中,哪些基本控制器类是很好的候选者?
EN

Stack Overflow用户
提问于 2011-05-25 11:25:48
回答 10查看 16.8K关注 0票数 27

我见过很多人谈论在他们的ASP.NET MVC项目中使用基础控制器。我见过的用于日志记录或CRUD搭建的典型示例就是这样做的。基本控制器类还有其他一些好的用法吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-05-25 11:51:48

基本控制器类没有很好的用法。

现在听我说完。

Asp.Net MVC,尤其是MVC3有大量的可扩展性钩子,这些钩子提供了一种更解耦的方式来向所有控制器添加功能。因为你的控制器类对于应用程序来说是非常重要和核心的,所以保持它们的轻量级、敏捷性和与其他所有东西的松散耦合是非常重要的。

framework.

  • CRUD provider.

  • Global日志记录基础结构属于构造函数,应该通过DI ActionInvoker.

  • Global进行注入。
  • 异常处理应该由代码生成处理,或者自定义ModelMetadata异常处理应该由自定义视图视图处理,数据和授权应该由操作过滤器处理。在MVC3.
  • Constants中使用全局操作过滤器更简单,可以放在另一个名为ApplicationConstants的类/文件中。

基础控制器通常由经验不足的MVC开发人员使用,他们不知道MVC的所有不同的可扩展性部分。现在不要误会我的意思,我不是在评判那些出于各种错误原因而使用它们的人。它只是为你提供了更多的工具来解决常见问题。

我几乎可以肯定,除了基本控制器类之外,没有一个问题不能用另一个可扩展性钩子来解决。不要采用最紧密的耦合形式(继承),除非有重要的生产力原因,并且不违反Liskov。我宁愿花不到1秒的时间在像public ILogger Logger { get; set; }这样的控制器上输入一个属性20次,也不愿引入紧密耦合,这会以更显著的方式影响应用程序。

甚至像userId或多租户密钥这样的东西也可以放在ControllerFactory中,而不是放在基本控制器中。一个基本控制器类的耦合成本是不值得的。

票数 39
EN

Stack Overflow用户

发布于 2011-05-26 02:58:28

我喜欢使用基本控制器进行授权。

我在基本控制器中进行授权,而不是使用"Authorize“属性来修饰每个操作。从数据库中获取登录用户的授权操作列表。

有关授权的更多信息,请阅读下面的链接。Good practice to do common authorization in a custom controller factory?

票数 9
EN

Stack Overflow用户

发布于 2011-05-25 11:33:16

我使用它来访问会话、应用程序数据等。

我还有一个应用程序对象,它包含应用程序名称等内容,我可以从基类访问它

基本上,我用它来做我经常重复的事情。

哦,我应该提一下,我不会将它用于业务逻辑或数据库访问。常量对于基类来说也是一个很好的选择。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6119206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档