2013-05-06 94 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。

相關問題