WCF簡(jiǎn)單教程(11)REST調(diào)用-創(chuàng)新互聯(lián)

第十一篇:REST調(diào)用

創(chuàng)新互聯(lián)科技有限公司專(zhuān)業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供內(nèi)江服務(wù)器托管,高防物理服務(wù)器租用,成都IDC機(jī)房托管,成都主機(jī)托管等互聯(lián)網(wǎng)服務(wù)。

上篇寫(xiě)的是Ajax調(diào)用WCF,今天寫(xiě)一篇如何以REST方式調(diào)用WCF服務(wù)。不知道REST是什么的同學(xué),可以去google一下。對(duì)某些類(lèi)型的應(yīng)用,REST還是相當(dāng)不錯(cuò)的方式,所以專(zhuān)門(mén)寫(xiě)一篇來(lái)說(shuō)明一下開(kāi)發(fā)方法。

老規(guī)矩,上代碼,直接在代碼注釋里講解。


1、服務(wù)端:

服務(wù)契約,我們定義CRUD4個(gè)方法(增查改刪),對(duì)應(yīng)HTTP METHOD分別為PUT/GET/POST/DELETE:

  1. using
  2. using
  3. using//這個(gè)命名空間要求引入System.ServiceModel.Web.dll
  4. namespace
  5. "WCF.Demo"
  6. publicinterface
  7. //WebInvoke中標(biāo)明REST的相關(guān)屬性,以這個(gè)方法為例,調(diào)用的Url是 ..../Data/key/data,HTTP方法是PUT,響應(yīng)為Json格式(也可以換成xml)
  8. //這樣如果客戶(hù)端用PUT方法訪問(wèn) ..../Data/1/100,就會(huì)映射到CreateData方法上來(lái),并且傳入key=1,data=100
  9. "Data/{key}/{data}""PUT"
  10. voidstringstring
  11. "Data/{key}""GET"
  12. stringstring
  13. "Data/{key}/{data}""POST"
  14. voidstringstring
  15. "Data/{key}""DELETE"
  16. voidstring

然后是實(shí)現(xiàn)類(lèi),這個(gè)簡(jiǎn)單,沒(méi)什么可說(shuō)的。

  1. using
  2. using
  3. using
  4. namespace
  5. //這個(gè)例子中用了Single Instance模式,這樣m_DataDict的值才能保留住
  6. publicclass
  7. privatestringstringnewstringstring
  8. publicvoidstringstring
  9. publicstringstring
  10. return"NOT FOUND"
  11. publicvoidstringstring
  12. publicvoidstring

配置文件最關(guān)鍵了,注意里面綠色的注釋部分:

  1. <?xmlversion"1.0"encoding"utf-8"?>
  2. <configuration>
  3. <system.serviceModel>
  4. <services>
  5. <servicename"Server.DataProvider">
  6. <!--必須使用webHttpBinding,而且要定義此endpoint的behaviorConfiguration(見(jiàn)后)-->
  7. <endpointaddress""binding"webHttpBinding"contract"Server.IData"behaviorConfiguration"restBehavior"/>
  8. <host>
  9. <baseAddresses>
  10. <addbaseAddress"http://localhost:8080/wcf"/>
  11. </baseAddresses>
  12. </host>
  13. </service>
  14. </services>
  15. <behaviors>
  16. <!--定義endpoint的behavior,webHttp節(jié)點(diǎn)表示啟用web方式訪問(wèn),這對(duì)REST是非常關(guān)鍵的-->
  17. <endpointBehaviors>
  18. <behaviorname"restBehavior">
  19. <webHttp/>
  20. </behavior>
  21. </endpointBehaviors>
  22. </behaviors>
  23. </system.serviceModel>
  24. </configuration>

最后發(fā)布服務(wù),沒(méi)什么特殊的,和以前一樣:

  1. using
  2. using
  3. namespace
  4. class
  5. staticvoidstring
  6. usingnewtypeof
  7. "Running ..."

這個(gè)服務(wù)端沒(méi)有用IIS做HOST,直接用自己的進(jìn)程做的宿主(當(dāng)然了,本質(zhì)還是http.sys在工作)。


2、客戶(hù)端

我們這回要用REST形式訪問(wèn)服務(wù)端,所以不是普通意義上的WCF客戶(hù)端了,再也用不著那么麻煩的寫(xiě)配置文件創(chuàng)建Channel或者代理了。

  1. using
  2. using
  3. namespace
  4. class
  5. staticvoidstring
  6. //用一個(gè)WebClient就可以搞定了
  7. new
  8. //以PUT方式訪問(wèn)Data/1/100,會(huì)映射到服務(wù)端的CreateData("1", "100")
  9. "http://localhost:8080/wcf/Data/1/100""PUT"string
  10. //以GET方式訪問(wèn)Data/1,會(huì)映射到服務(wù)端的RetrieveData("1"),應(yīng)該返回"100"
  11. "http://localhost:8080/wcf/Data/1"
  12. //以POST方式訪問(wèn)Data/1/200,會(huì)映射到服務(wù)端的UpdateData("1", "200")            
  13. "http://localhost:8080/wcf/Data/1/200""POST"string
  14. //再GET一次,應(yīng)該返回"200"
  15. "http://localhost:8080/wcf/Data/1"
  16. //以DELETE方式訪問(wèn)Data/1,會(huì)映射到服務(wù)端的DeleteData("1")
  17. "http://localhost:8080/wcf/Data/1""DELETE"string
  18. //再GET一次,應(yīng)該返回"NOT FOUND"
  19. "http://localhost:8080/wcf/Data/1"

OK,運(yùn)行一下客戶(hù)端,返回如下,和預(yù)期一致:

WCF簡(jiǎn)單教程(11) REST調(diào)用

需要補(bǔ)充一下,如果用IIS做HOST,比如DataService.svc.cs是實(shí)現(xiàn)類(lèi),一定要在DataService.svc中加上Factory,如下:

  1. <%@ ServiceHost Language="C#""true""WebServer.DataService""DataService.svc.cs""System.ServiceModel.Activation.WebServiceHostFactory"

表明不是使用默認(rèn)的ServiceHostFactory,而是適應(yīng)WEB HTTP開(kāi)發(fā)的WebServiceHostFactory。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁(yè)名稱(chēng):WCF簡(jiǎn)單教程(11)REST調(diào)用-創(chuàng)新互聯(lián)
本文鏈接:http://muchs.cn/article28/dpgojp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、外貿(mào)建站定制開(kāi)發(fā)App開(kāi)發(fā)、軟件開(kāi)發(fā)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站