2013-05-06 95 views
2

我正在致力于电子商务网站(ASP.NET 4.5,Web窗体)。为了显示每款产品的评论,我使用Web API从服务器获取数据。我在这里做了一个GET Ajax调用,并且通过在ASP.NET中使用页面方法也可以实现相同的功能。ASP.NET中的页面方法和Web API之间的区别

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

Web API比页面方法有什么区别/优点?

+0

永远不要使用页面方法进行新的开发。它们是旧ASMX网络服务技术的一部分,微软说它不应该用于新的开发。在http://stackoverflow.com/a/22058068/76337查看我的答案。 – 2015-03-16 03:44:42

回答

2

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

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

在测试中,您必须旋转整个ASP.NET页面生命周期才能获取API的基本部分。因此,您需要启动完整的HTTP Context mock,并在其中填充大量与您的API无关的数据,以便使测试可以运行。总之,由于您可以避免使用Web API进行所有这些工作,因此浪费时间和浪费时间。

Web窗体和Web API只是工具。在两者之间进行选择时,选择最适合该工作的工具。 Web表单最适合提供CRUD繁重的企业风格页面的网页。 Web API旨在利用MVC的优势来构建RESTful API端点(它可以做的不仅仅是REST)。

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

+0

关于使用Web API您是对的,但您似乎无法理解“页面方法”是什么。他们基本上是在与页面相同的类中添加一些静态方法作为ASMX Web服务操作。是的,现在这是一个坏主意。 – 2015-03-16 03:42:45

0

使用Web API,您可以使用HTTP方法GET/POST/UPDATE/PUT/DELETE进行调用,并使其成为基于REST的服务。我不确定您是否可以使用Page Methods来完成这两个操作,如果不是这样,您需要拥有许多应用程序可能使用的服务,并且需要基于REST,Web API可以处理Page Methods。

相关问题