1. 程式人生 > >WCF、WebAPI、WCFREST、WebService之間的區別

WCF、WebAPI、WCFREST、WebService之間的區別

pipes asmx 平板電腦 bind template windows服務 創建 通過 soa

在.net平臺下,有大量的技術讓你創建一個HTTP服務,像Web Service,WCF,現在又出了Web API。在.net平臺下,你有很多的選擇來構建一個HTTP Services。我分享一下我對Web Service、WCF以及Web API的看法。

  Web Service

  1、它是基於SOAP協議的,數據格式是XML

  2、只支持HTTP協議

  3、它不是開源的,但可以被任意一個了解XML的人使用

  4、它只能部署在IIS上

  WCF

  1、這個也是基於SOAP的,數據格式是XML

  2、這個是Web Service(ASMX)的進化版,可以支持各種各樣的協議,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.

  3、WCF的主要問題是,它配置起來特別的繁瑣

  4、它不是開源的,但可以被任意一個了解XML的人使用

  5、它可以部署應用程序中或者IIS上或者Windows服務中

  WCF Rest

  1、想使用WCF Rest service,你必須在WCF中使用webHttpBindings

  2、它分別用[WebGet]和[WebInvoke]屬性,實現了HTTP的GET和POST動詞

  3、要想使用其他的HTTP動詞,你需要在IIS中做一些配置,使.svc文件可以接受這些動詞的請求

  4、使用WebGet通過參數傳輸數據,也需要配置。而且必須指定UriTemplate

  5、它支持XML、JSON以及ATOM這些數據格式

  Web API

  1、這是一個簡單的構建HTTP服務的新框架

  2、在.net平臺上Web API 是一個開源的、理想的、構建REST-ful 服務的技術

  3、不像WCF REST Service.它可以使用HTTP的全部特點(比如URIs、request/response頭,緩存,版本控制,多種內容格式)

  4、它也支持MVC的特征,像路由、控制器、action、filter、模型綁定、控制反轉(IOC)或依賴註入(DI),單元測試。這些可以使程序更簡單、更健壯

  5、它可以部署在應用程序和IIS上

  6、這是一個輕量級的框架,並且對限制帶寬的設備,比如智能手機等支持的很好

  7、Response可以被Web API的MediaTypeFormatter轉換成Json、XML 或者任何你想轉換的格式。

  

  WCF和WEB API我該選擇哪個?

  1、當你想創建一個支持消息、消息隊列、雙工通信的服務時,你應該選擇WCF

  2、當你想創建一個服務,可以用更快速的傳輸通道時,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他傳輸通道不可用的時候也可以支持HTTP。

  3、當你想創建一個基於HTTP的面向資源的服務並且可以使用HTTP的全部特征時(比如URIs、request/response頭,緩存,版本控制,多種內容格式),你應該選擇Web API

  4、當你想讓你的服務用於瀏覽器、手機、iPhone和平板電腦時,你應該選擇Web API

WCF、WebAPI、WCFREST、WebService之間的區別