继承ApiController与IHttpController的区别

Tre*_*van 4 c# asp.net asp.net-mvc asp.net-web-api

虽然我已经使用Microsoft .NET Framework几年了,但是对于ASP.NET(尤其是ASP.NET WebAPI Framework),我还是一个新手。我正在考虑将ASP.NET WebAPI框架用于一个小项目。

我查看了ASP.NET WebAPI poster,发现一个Controller类可以:

  1. ApiController班级派生,
  2. 实施IHttpController界面

阅读该类MSDN文档ApiController显示该类已实现IHttpController。似乎IHttpController只是声明了一个名为的方法ExecuteAsync()

我不清楚的是:在什么情况下应该从中派生ApiController或仅实现IHttpController接口的ExecuteAsync()方法?每种方法的优缺点是什么?

Jer*_*vel 5

如果这与MVC中的基本控制器相同,则最简单的方法就是从基类(ApiController)派生。这在您和一些基本的请求处理之间提供了额外的抽象层次,您通常希望避免自己做这些事情。

对于ASP.NET MVC,IController如果要自定义框架处理请求的方式,则可以创建自己的类。这包括操作方法,视图渲染等。

Controller(和ApiController)类是由ASP.NET提供的标准执行所有这些东西,给你的处理请求预先定义的方式。

使用IHttpController,如果你想自定义所有这些“低层次”的东西; 使用ApiController如果你没有非常具体的需要改变任何东西。

一个Controller它的ExecuteAsync()方法(Execute在MVC)将作为请求非常基本的入口点。从该方法作为视图返回数据包括将字符串写入requestContext响应;几乎不是一种非常舒适的工作方式。

它允许您定义自己的控制器,并为您提供了很大的适应空间,但这也意味着您将不得不重新发明很多轮子。