3

我有点困惑。我正在学习 ASP.net MVC,目前是版本 3。当我得知 WebAPI 是 Microsoft 的最新 Web 技术并问自己是否应该继续使用 MVC 时,我已经很恼火了。

根据我今天的研究,我了解到 WebAPI 适用于需要基于纯 Http 的 API 的解决方案,这些 API 将数据提供给浏览器以外的其他应用程序。而且它没有 HTML 渲染引擎。因此,对于必须呈现大量 HTML 页面的解决方案,MVC 很好。

我还阅读了与 MVC 并行进行的 Web API 开发并代表它自己。

今天没有,当我第一次启动 Visual Studio 时,我读到 MVC4 的新特性之一是 WebAPI:

http://www.asp.net/mvc/mvc4

Web API 现在是 MVC 不可分割的一部分吗?MVC 控制器可以在同一个应用程序中直接与 Web API 控制器混合使用吗?在一篇博文中,我读到如果你在一个项目中使用 WebAPI 和 MVC,你最终会得到重复的代码。现在还是这样吗?

最佳托马斯

4

4 回答 4

1

答案是肯定的!WebAPI 具有 MVC 设计模式中的“模型”和“控制器”。但是“视图”在哪里?

如果您创建一个新的 WebAPI 项目,Visual Studio 将创建一个默认的 HomeController,它是 ASP.NET MVC 标准控制器,它还将添加一个带有 Index.cshtml 视图的 Index 操作。它以这种方式工作,因此您将能够托管您的 WebAPI 服务以测试它们。在 WCF 中,Visual Studio 为此目的推出了 WCF 测试客户端。

如果没有视图,则如果不将它们托管在 IIS 上,就无法测试我们的服务。

WebAPI 还使用相同的路由引擎和更多服务器端功能,如 ASP.NET MVC。

于 2014-03-10T16:10:10.113 回答
1

Web API 与 MVC 4 捆绑在一起。它可以单独使用,也可以与 MVC 结合使用。集成周围有一些粗糙的边缘,但没有什么非常痛苦的。

于 2012-11-23T18:26:00.287 回答
0

ASP.NET MVC

public class TweetsController : Controller {
  // GET: /Tweets/
  [HttpGet]
  public ActionResult Index() {
    return Json(Twitter.GetTweets(), JsonRequestBehavior.AllowGet);
  }
}

ASP.NET Web API

public class TweetsController : ApiController {
  // GET: /Api/Tweets/
  public List<Tweet> Get() {
    return Twitter.GetTweets();
  }
}

代码来自这个链接

两种技术有很多相似之处,例如服务 HTTP 请求。最重要的区别在于:

  • MVC 创建 HTML 视图,
  • WebAPI 具有内置的序列化。
于 2015-03-26T14:56:28.223 回答
0

ASP.NET Web API 与 ASP.NET MVC 无关。该团队已将 ASP.NET Web API 与 ASP.NET MVC 4 放在同一个 MSI 安装程序中,恕我直言,这是一个错误。这是所有混乱开始的地方,但团队知道这种混乱 AFAIK。

ASP.NET Web API 独立存在,它甚至没有任何直接依赖于System.Web. 看看这个帖子:

ASP.NET Web API 不位于 ASP.NET MVC 之上!事实上,它并不位于任何东西之上

于 2012-11-25T21:36:31.007 回答