ASP.NET中的页面方法和Web API之间的区别

时间:2013-05-06 12:31:30

标签: asp.net asmx asp.net-4.5

我正在开发一个电子商务网站(ASP.NET 4.5,Web Forms)。为了显示每个产品的评论,我使用Web API从服务器获取数据。我在这里进行GET Ajax调用,同样的功能也可以通过在ASP.NET中使用页面方法来实现。

我对这里使用Web API对页面方法的可能优势感到有些困惑。我已经通过各种articles来了解Web API,但我找不到Web API和页面方法之间的任何比较。

Web API对页面方法的区别/优势是什么?

2 个答案:

答案 0 :(得分:2)

在最基本的层面上,区别在于您希望避免使用传统的ASP.NET Web窗体页面来提供API请求,因为它将继承大量与其无关的方法和事件。 。例如,您将在API类上公开一个Page.MasterPage属性,该属性不会映射到API端点将公开的内容。

为了更直接,您将使您的API端点更难维护和测试。如果您通过页面使用ASP.NET Web Forms实现它们,那么每个API端点都会有一个新的“页面”。这将使得维护变得更加困难,因为您将隐藏在纠结的代码文件细节中,以便在HTTP POST与HTTP GET之间进行筛选,并对这些方法的ASP.NET Web Forms处理进行处理。

在测试中,您必须启动整个ASP.NET页面生命周期才能获得API的基本部分。因此,您需要启动完整的HTTP Context模拟并填充那些与您的API无关的数据,以使测试可以运行。简而言之,这是一个混乱和浪费的时间,因为你可以避免所有这一切与Web API。

Web窗体和Web API只是工具。在两者之间进行选择时,选择最适合工作的工具。 Web窗体最适合提供CRUD重型企业样式页面的网页。 Web API是为了利用MVC的优势来构建RESTful API端点(它可以做的不仅仅是REST)而定制的。

通过编写大量HTTP处理程序,您可以更接近Web API在ASP.NET Web窗体中提供的内容,但是您将无缘无故地重新发明轮子。

答案 1 :(得分:0)

使用Web API,您将能够使用HTTP方法,GET / POST / UPDATE / PUT / DELETE进行调用,并使其成为基于REST的服务。我不确定你是否可以使用Page Methods来做这两个,如果没有,你需要一个许多应用程序可能使用的服务,它需要基于REST,Web API将适用于Page Methods。