WCF、WebAPI、WCFREST、WebService之間的區別
在.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
相關文章
- .NET的WCF和WebService有什麼區別?(轉載)Web
- WCF、Web API、WCF REST、Web Service之區別WebAPIREST
- WCF 服務應用程式與 服務庫之間的區別
- WebApi和MVC的區別WebAPIMVC
- webservice和jms的區別Web
- webservice和restful的區別WebREST
- webapi建立和呼叫WebServiceWebAPI
- Oracle與OpenJDK之間的區別OracleJDK
- 敏捷和 Scrum 之間的區別敏捷Scrum
- PrepareStatement與Statement之間的區別REST
- Statement和PreparedStatement之間的區別
- select、poll、epoll之間的區別
- @Bean和@Component之間的區別?Bean
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- JavaSE、JavaEE、JavaME之間的區別概述Java
- GCD與NSOperation之間的區別GC
- PHP abstract與interface之間的區別PHP
- reboot和init 6之間的區別boot
- querySelector和getElementById之間的區別
- hadoop發行版本之間的區別Hadoop
- tali -f 和 tail -F 之間的區別AI
- 公共雲和私有云之間的區別
- 【轉】理解 CI 和 CD 之間的區別
- ArrayList,LinkedList,Vector,Stack之間的區別
- startup,startup mount,startup nomount之間的區別
- cookie、 sessionStorage 、localStorage之間的區別和使用CookieSession
- oracle sybase之間聯表更新的區別Oracle
- px,em,rem,vw,vh之間的區別REM
- return,continue和break之間的區別
- java使用axis 呼叫WCF webservice問題請教JavaWeb
- WCF、Net remoting、Web service概念及區別REMWeb
- Linux和windows系統之間的區別LinuxWindows
- CI和CD之間的真正區別 -Fire CI
- Kata和Kaizen之間的區別是什麼?AI
- 雲與本地部署 ERP 之間的區別
- Categorical, Ordinal, Interval - 變數之間的區別Go變數
- Git 和 SVN 之間的五個基本區別Git
- size resize與capacity reserve之間的區別