2012-03-19 125 views
89

使用每種技術有什麼優點和缺點?WCF vs ASP .Net Web API

WCF Web Api現在合併到Asp.net中 Asp.net web api現在支持自託管。

我仍然想象如果我想要公開多個協議模式的相同的操作,我仍然傾向於WCF或Mvc終點也可以這樣做嗎?

此外,新的Asp.Net網絡API暴露Wsdl?如果不是,客戶會如何弄清楚他們可以使用哪些操作?

Mvc的最佳特徵是模型綁定器。 WCF的等效性有多強大?

那麼有人能告訴我,Asp.net web api帶來什麼好處嗎? WCF似乎絕對是更強大/可擴展的選擇,imo。關於WCF模型中唯一的Mvc Web Api可能是易於開發的,但是如果它最終成爲一個嚴重的設計限制,那就意味着它會蹲下。

+15

我發現這個問題的標題有點誤導。標題是「MVC 4 vs Wcf Web Api」,但這個問題似乎更多地涉及WCF與ASP .Net Web API。從標題中我認爲比較的是標準的MVC 4框架(控制器,模型,視圖)與ASP .Net Web API框架。其他人發現這個標題誤導? – BruceHill 2013-09-27 15:34:19

回答

72

首先,我建議你閱讀我的文章的題目: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx

關於你的WSDL的問題 - 因爲的WebAPI不使用SOAP,它不需要一個WSDL,並且不出口的。您可以使用Hypermedia通過可能的活動URL列表返回資源(將其視爲自描述資源)

+6

這是一個非常好的寫作。我見過的最好的一個。但我現在比以往更加困惑。 WebApi增加了很多,但無法公開其他端點似乎非常嚴格。如果你有一個可以使用soap的客戶端,他們現在將被迫構建操作並在soap可以爲他們生成整個上下文時手動解析結果。你還會鎖定他們脫離更高級的肥皂功能,如可靠的會議和酸交易......嘆氣。 – Alwyn 2012-03-26 04:58:44

+2

@Alwyn - 我認爲你提到的所有事實都是真實的,因此不應該讓你困惑,而是幫助你做出決定--Web API有其自身的優勢,但是如果你的服務需要暴露於多個端點,包括其他協議,或者您對客戶端自動生成功能或soap高級功能有強烈的需求 - 這些可能是考慮爲什麼比WCF更喜歡Web API – BornToCode 2015-01-22 11:41:02

8

WCF Web API主要關注REST實現。如果你正在設置一個REST實現,那麼標準的WCF位在後面會有點痛苦。如果您正在設置RESTful服務,您會發現WCF Web API有更好的體驗。如果您正在設置SOAP服務,那麼WCF Web API並不是您最好的朋友,您最好使用WCF來處理您的服務。

+2

是的配置是一種痛苦,但它是一次性設置成本。完成之後,您幾乎可以將行爲/端點複製並粘貼到其他服務。大多數情況下,只需使用WebGet標記新操作即可獲得。另一方面,如果你有一個想要使用Soap + Wsdl的客戶端,它只是一個配置變更,而不是代碼+部署+ QA +。那麼Mvc Web Api如何更好? – Alwyn 2012-03-19 22:15:08

+1

如果您已經習慣了WCF,則可以繼續沿着這條路徑前進。除了我提到的之外,還有一些關於WCF Web API中的REST的內部改進(我沒有在我面前列出),但是要麼可以工作,要麼我們不會花費數週來重構,工作服務,尤其是因爲思維有一些範式的轉變。對於未來的工作,我會考慮WCF Web API。但是我一直在使用WCF Web API很長一段時間,所以我可能會有偏見。 – 2012-03-19 22:18:04

15

選擇取決於我們想要做什麼。

  1. ASP.NET Web API是一個用於僅通過HTTP構建非基於SOAP的服務的框架 - 因此使用此框架的可用傳輸協議不多。
  2. WCF/Windows通訊基礎是用於交換基於SOAP消息的框架 - 在這裏我們使用了很多的傳輸協議:HTTP,TCP,命名管道,MSMQ,等...

我不知道關於哪一個在數據量方面有更好的性能,可能是WCF,因爲我們可以使用低協議。任何意見都表示讚賞。

+2

沒有冒犯,但HTTP只是**應用層**協議。它對什麼**傳輸層協議可以使用沒有固有的限制。 – smwikipedia 2013-11-17 08:18:14

0

將WCF用於Intranet/B2B站點n用於B2C/C2C/Internet站點的Web API ...... SOAP/XML仍然是企業內部通信的標準,它不會消失!