2012-07-25 79 views
12

我應該爲我的兩個簡單的API使用ASMX服務或ASP.NET Web API嗎?它應該是WebAPI還是asmx

我想在ASP.NET MVC項目中創建兩個簡單的API。一個需要3個參數(currentUserIDDataTypeActionName)。它返回它們和它們所請求的數據的XML字符串。該API由客戶端JavaScript代碼使用。另一個API接收一個XML字符串並在服務器端使用它來對數據庫執行操作。

+2

ASMX = SOAP - 不容易 「消耗​​品」 由每個人; WCF = SOAP,但有許多不同的傳輸機制(遠遠超過*正好* HTTP); WebAPI =「RESTful WCF」在新衣服中是REST風格的,任何擁有HTTP堆棧的人都可以使用數據,但它僅爲** HTTP(無其他傳輸可用)。所以根據你的需求選擇你的選擇。 – 2012-07-25 05:24:14

+0

好像WebAPI是要走的路。還有一個問題,您如何實現一個WebAPI方法,該方法在方法中使用多個參數/參數(針對問題中描述的方案1)。我試圖只用多個參數來創建一個方法,但是在測試時我無法在瀏覽器中找到它。我收集它與地圖路由選擇有關嗎?建議嗎? – Matt 2012-07-25 07:04:20

+0

[asmx到WCF或Web API]的可能重複(http://stackoverflow.com/questions/10172506/asmx-to-wcf-or-web-api) – Aliostad 2012-07-25 08:51:53

回答

20

我剛纔已經回答了相關問題:

What is the future of ASP.NET MVC framework after releasing the asp.net Web API

基本上,由微軟提供的框架來開發Web服務是:

  • ASMX。基於SOAP的XML服務。

  • WCF。基於SOAP的Web服務。這些服務是傳統ASMX服務的演進,基本上它們將服務本身與傳輸協議分開。這就是爲什麼您可以使用多個端點以及多個協議(TCP,HTTP,命名管道,MSMQ,HTTPS)公開相同服務的原因。這種靈活性伴隨着配置問題。社區中關於WCF的主要投訴之一是繁瑣且廣泛的配置

  • WEB API。基於HTTP而不是SOAP。這個新的API是創建服務的新框架。與其他兩個predecesors的主要區別是,它是基於HTTP而不是SOAP,因此您可以使用多個HTTP的功能,如:

    • 它包含了非常有意義的,描述性的消息頭 - 標頭建議消息正文的內容類型,說明如何緩存信息的標題,如何保護信息等。
    • 使用動詞來定義動作(POST,PUT,DELETE ..)
    • 它包含一個正文可用於發送任何類型的內容
    • 它使用URI來標識信息路徑(資源)和動作

    WEB API專注於編寫服務以通過HTTP公開它們(目前僅在HTTP上)。如果您想使用其他協議公開您的服務,那麼您應該考慮使用WCF。

    WEB API是基於MVC(如果你想知道爲什麼它是基於MVC的理由,他們是簡單)

    的WCF的Web的API的另一個目標就是將已知的概念,這將有助於開發人員以克服他們在WCF面臨的一些缺陷,比如巨大的配置,過度使用屬性以及不支持測試的WCF基礎架構。因此,Web API使用IoC,啓用了convention-over-configuration,並試圖提供更簡單的配置環境。

    ASP.NET MVC基礎架構具有優雅的HTTP請求和響應處理能力,並且支持易於創建的控制器,這似乎是創建這種新型服務的正確方法。

採取以下兩點考慮WCF或WEB API

  • 如果你的目的是創建一個支持特殊情況下的服務之間做出選擇 - 一個單向消息,消息隊列,雙工通信等,那麼你最好選擇WCF
  • 如果你想創建可以使用快速傳輸通道的服務,比如TCP,命名管道,或者甚至是UDP(在WCF 4.5中),你也可以使用w ant在所有其他傳輸不可用時支持HTTP,那麼最好使用WCF並使用基於SOAP的綁定和WebHttp綁定。
  • 如果您想通過HTTP創建面向資源的服務,這些服務可以使用HTTP的全部功能 - 爲瀏覽器定義緩存控制,使用ETags進行版本控制和併發性,傳遞各種內容類型,例如圖像,文檔,HTML頁面等,使用URI模板在響應中包含任務URI,那麼新的Web API是您的最佳選擇。
  • 如果您想要創建一個多目標服務,可以作爲基於HTTP的資源導向服務和基於TCP的RPC樣式SOAP服務 - 首先與我交談,所以我會給你一些指示。

有關更詳細的比較:

http://www.codeproject.com/Articles/341414/WCF-or-ASP-NET-Web-APIs-My-two-cents-on-the-subjec

+1

需要添加兩點:(1)WCF配置中。 NET 4的**比以前更簡單**,以至於您可以啓動並運行SOAP服務,基本上不需要配置**(如ASMX)。 (2)WCF還有一個RESTful綁定 - 「webHttpBinding」 - 它可以使用一個代碼庫和適當的配置創建混合SOAP/REST服務。 – 2012-07-25 07:13:13

+0

是的,我知道。儘管我更喜歡WEB API。我只會在特定情況下使用WCF,例如爲了提高通過TCP公開我的綁定的性能,其他情況下的WEB API要好得多。由於兩個團隊都加入了強制WCF + ADO.Net數據服務,我認爲重點是1)保持WCF 2)大多數新功能將實現到WEB API – Jupaol 2012-07-25 07:23:28

+0

除了使用WCF REST服務的要點(揭露它們通過HTTP),如果你可以用面向MVC的方式使用WEB API來實現相同的行爲? – Jupaol 2012-07-25 07:26:02

0

如果可能,我會在mvc4中使用Web Api控制器。您可以返回一個通用的可枚舉列表或模型,它會自動將數據輸出爲任何請求的格式,例如xml或json。它非常驚人。

0

看來你確實對視圖做了很多工作,所以我認爲Web API在這一點上是更簡潔的解決方案。

相關問題