在.NET Framework中,有不少種技術能夠建立基於http協議的服務,譬如說web service, wcf,wcf rest和web api等等。網上有不少的文章教咱們如何開發、使用這幾種技術,可是沒有說明他們之間的關係,通過一段時間的查閱資料,現將個人理解整理以下。web
web service:json
- 基於SOAP,僅僅支持http協議。
- 數據傳輸格式是xml。
- 只能部署在iis上面。
wcf:windows
- 基於soap,支持多種傳輸協議,如http,https,tcp,msmq和命名管道等等。
- 數據傳輸格式是xml。
- 服務配置比較繁瑣。
- 能夠host在應用程序、iis或者windows service中。
wcf rest:api
- 須要配置webHttpBindings節點。
- 數據傳輸格式能夠是xml、json、atom等。
- 默認支持http get和post操做,能夠經過在iis中對可接受的request進行額外的配置來支持更多http操做,譬如說put、delete等等。
- 經過webGet方式來傳參,則必須指定UriTemplate模版。
web api:瀏覽器
- 是一種輕量級的構建http服務的框架,是在.NET平臺下構建restful web service的理想框架。
- 和wcf rest service相比,web api提供http的所有特性,如URIs、request/response headers、 caching、versioning、various content format。
- 同時支持mvc的特性。
- 能host在應用程序和iis中。
- 適用於各類不一樣的客戶端,譬如瀏覽器、手機app、pc端應用等等。
- response被序列化成json、xml或者其餘種類的格式。
什麼時候使用wcf或者web api:restful
- 若是有以下特殊場景:單向消息、消息隊列、雙工通訊等等,請使用wcf。
- 當傳輸通道不侷限於http的時候,譬如更想支持tcp、udp等,推薦使用wcf。
- 當要建立面向資源的服務或者但願支持http的所有的特性的時候,推薦使用web api。
- 當須要支持多種客戶端時,推薦使用web api。