我正在开发一个电子商务网站(ASP.NET 4.5,Web Forms)。为了显示每个产品的评论,我使用 Web API 从服务器获取数据。我在这里进行 GET Ajax 调用,同样的功能也可以通过在 ASP.NET 中使用页面方法来实现。
我对在此处使用 Web API 优于页面方法的可能优势感到有些困惑。我浏览了各种文章来了解 Web API,但我还没有找到 Web API 和页面方法之间的任何比较。
Web API 与页面方法相比有哪些区别/优势?
我正在开发一个电子商务网站(ASP.NET 4.5,Web Forms)。为了显示每个产品的评论,我使用 Web API 从服务器获取数据。我在这里进行 GET Ajax 调用,同样的功能也可以通过在 ASP.NET 中使用页面方法来实现。
我对在此处使用 Web API 优于页面方法的可能优势感到有些困惑。我浏览了各种文章来了解 Web API,但我还没有找到 Web API 和页面方法之间的任何比较。
Web API 与页面方法相比有哪些区别/优势?
在最基本的层面上,不同之处在于您将希望避免使用传统的 ASP.NET Web 窗体页面来提供 API 请求,因为它将继承大量根本不属于它的方法和事件。例如,您将在 API 类上公开一个 Page.MasterPage 属性,该属性绝不会映射到 API 端点将公开的内容。
更直接地说,您将使 API 端点更难维护和测试。如果您通过页面使用 ASP.NET Web 表单来实现它们,那么每个 API 端点都会有一个新的“页面”。这将使维护变得更加困难,因为您将陷入纠结的代码文件详细信息中,以便在 HTTP POST 与 HTTP GET 之间进行筛选,并与 ASP.NET Web 窗体处理这些方法进行斗争。
在测试中,您必须启动整个 ASP.NET 页面生命周期才能获得 API 的基本部分。因此,您需要启动完整的 HTTP 上下文模拟,并使用大量与您的 API 无关的数据填充这些模拟,以使测试可运行。简而言之,这是一个混乱和浪费的时间,因为您可以通过 Web API 避免所有这些。
Web 表单和 Web API 只是工具。在两者之间进行选择时,请选择最适合该工作的工具。Web Forms 最适合提供 CRUD 重企业风格页面的网页。Web API 旨在利用 MVC 的优势来构建 RESTful API 端点(它可以做的不仅仅是 REST)。
通过编写大量 HTTP 处理程序,您可以更接近 Web API 在 ASP.NET Web 窗体中为您提供的功能,但是您将无缘无故地重新发明轮子。
使用 Web API,您将能够使用 HTTP 方法、GET/POST/UPDATE/PUT/DELETE 进行调用,并使其成为基于 REST 的服务。我不确定您是否可以使用页面方法来完成这两个操作,如果不能,并且您需要拥有许多应用程序可能使用的服务并且它需要基于 REST,那么 Web API 将在页面方法上运行。