虽然我已经使用 Microsoft .NET Framework 多年了,但当谈到 ASP.NET,尤其是 ASP.NET WebAPI Framework 时,我还是个新手。我正在考虑将 ASP.NET WebAPI 框架用于一个小项目。
我正在查看 the ASP.NET WebAPI poster ,并注意到 Controller
类可以:
ApiController
类, 或 IHttpController
接口(interface)阅读 MSDN documentation for the
ApiController
class 表明它实现了 IHttpController
。看来 IHttpController
只是声明了一个名为 ExecuteAsync()
的方法。我不清楚的是:在什么情况下你应该从
ApiController
派生,或者只是实现 IHttpController
接口(interface)的 ExecuteAsync()
方法?每种方法的优缺点是什么? 最佳答案
如果这与 MVC 中的基本 Controller 相同:最简单的方法是从基类 ( ApiController
) 派生。这在您和一些基本请求处理之间提供了一个额外的抽象级别,这是您通常希望避免自己做的事情。
对于 ASP.NET MVC,如果您想自定义框架处理请求的方式,您可以创建自己的 IController
类。这包括 Action 方法、 View 渲染等。Controller
(和 ApiController
)类由 ASP.NET 作为所有这些东西的标准实现提供,并为您提供处理请求的预定义方法。
如果你想自定义所有这些“低级”的东西,请使用 IHttpController
;如果您没有特别需要更改任何内容,请使用 ApiController
。Controller
及其 ExecuteAsync()
方法(MVC 中的 Execute
)将作为请求的非常基本的入口点。从此方法作为 View 返回数据包括将字符串写入 requestContext
响应;几乎不是一种非常舒适的工作方式。
它允许您定义自己的 Controller 并为您提供很大的适应空间,但这也意味着您将不得不重新发明很多轮子。
关于c# - 继承 ApiController 和 IHttpController 的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21464909/