2012-11-23 136 views
2

今天我讀了很多關於ASP.net Web API的內容。我是否理解正確,如果我需要一個只需要HTTP作爲傳輸的WebService,我可以使用ASP.net API並且不需要WCF? 到目前爲止,看起來Web API比WCF更容易使用。我是否需要WCF如果我可以使用ASP.net Web API

最佳 托馬斯

回答

4

的回答你的問題基本上是肯定的。如果您a)只想使用HTTP,b)希望將內容作爲XML或JSON返回,c)希望使用RESTful API並且d)不需要任何高級消息傳遞功能,那麼Web API是您的最佳選擇。正如你指出的那樣,它比WCF更容易使用。

當您創建Web服務時,您有兩個基本選項:基於SOAP的服務或RESTful API。如果您使用的是基於SOAP的服務,則應使用WCF。如果您使用的是RESTful服務,則應使用Web API。您可以看到以下博客文章以進一步討論: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx

另外,無論您選擇SOAP還是REST,都取決於您的具體情況。一些常規準則如下:有利於SOAP服務

因素:

  • 您是服務的唯一消費者,還是有 消費者有限的宇宙
  • 先進的功能,如交易,WS - 安全, 可靠的消息傳遞等是必需的
  • 服務必須暴露在HTTP以外的其他傳輸,如TCP,MSMQ,命名管道等
  • 功能可以暴露不容易映射到CRUD操作的實體或者集合
  • 您需要爲複雜類型的強類型
  • 網絡帶寬問題不是一個問題,有利於RESTful的

因素支持服務:

  • 服務必須由大量客戶(即互聯網)
  • 先進的功能,如交易,WS-安全,可靠的消息傳遞等,不要求
  • 接受的服務只能通過HTTP暴露
  • 功能輕鬆映射到CRUD操作的實體或者集合
  • 您需要爲其他媒體類型,如JSON或YAML
  • 網絡帶寬問題考慮

編輯支持: 作爲對您的評論的迴應,如果您使用WCF/SOAP,則可以使用SOAP支持的各種功能。這包括事務,可靠消息傳遞,各種消息傳遞模式(單向,雙工等)和WS-Security。這些標準由the OASIS standard body維護,通常稱爲WS- *。 WS- *標準的列表可以在here找到。

如果您使用的是Web API/REST,則無法使用任何WS- *功能。但是,仍然可以使用IIS和ASP.Net中提供的標準身份驗證技術對RESTful服務的訪問進行身份驗證和授權。有關更多信息,請訪問以下鏈接:

http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/

http://stevescodingblog.co.uk/basic-authentication-with-asp-net-webapi/

和一些blog postings的。

+0

您發現REST缺少WS-Security。這對實現具有認證/授權的API的目標有多大影響? – Thomas

+0

根據您的評論,我在帖子中添加了一些信息。如果您使用的是Web API/REST,則不能使用任何WS- *功能,因爲這是特定於SOAP的。但是,您可以使用IIS/ASP.Net中提供的其他技術對Web API服務進行身份驗證和授權 –

+0

非常感謝,非常有幫助。我認爲對於我的應用程序來說Web API就足夠了,同時,由於我們的應用程序的流量很大,我認爲Web AIP會更好地執行。 – Thomas

相關問題