虽然我已经使用 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/

    10-11 19:22