第十一篇:REST調用
創新互聯科技有限公司專業互聯網基礎服務商,為您提供內江服務器托管,高防物理服務器租用,成都IDC機房托管,成都主機托管等互聯網服務。上篇寫的是Ajax調用WCF,今天寫一篇如何以REST方式調用WCF服務。不知道REST是什么的同學,可以去google一下。對某些類型的應用,REST還是相當不錯的方式,所以專門寫一篇來說明一下開發方法。
老規矩,上代碼,直接在代碼注釋里講解。
1、服務端:
服務契約,我們定義CRUD4個方法(增查改刪),對應HTTP METHOD分別為PUT/GET/POST/DELETE:
- using
- using
- using//這個命名空間要求引入System.ServiceModel.Web.dll
- namespace
- "WCF.Demo"
- publicinterface
- //WebInvoke中標明REST的相關屬性,以這個方法為例,調用的Url是 ..../Data/key/data,HTTP方法是PUT,響應為Json格式(也可以換成xml)
- //這樣如果客戶端用PUT方法訪問 ..../Data/1/100,就會映射到CreateData方法上來,并且傳入key=1,data=100
- "Data/{key}/{data}""PUT"
- voidstringstring
- "Data/{key}""GET"
- stringstring
- "Data/{key}/{data}""POST"
- voidstringstring
- "Data/{key}""DELETE"
- voidstring
然后是實現類,這個簡單,沒什么可說的。
- using
- using
- using
- namespace
- //這個例子中用了Single Instance模式,這樣m_DataDict的值才能保留住
- publicclass
- privatestringstringnewstringstring
- publicvoidstringstring
- publicstringstring
- return"NOT FOUND"
- publicvoidstringstring
- publicvoidstring
配置文件最關鍵了,注意里面綠色的注釋部分:
- <?xmlversion"1.0"encoding"utf-8"?>
- <configuration>
- <system.serviceModel>
- <services>
- <servicename"Server.DataProvider">
- <!--必須使用webHttpBinding,而且要定義此endpoint的behaviorConfiguration(見后)-->
- <endpointaddress""binding"webHttpBinding"contract"Server.IData"behaviorConfiguration"restBehavior"/>
- <host>
- <baseAddresses>
- <addbaseAddress"http://localhost:8080/wcf"/>
- </baseAddresses>
- </host>
- </service>
- </services>
- <behaviors>
- <!--定義endpoint的behavior,webHttp節點表示啟用web方式訪問,這對REST是非常關鍵的-->
- <endpointBehaviors>
- <behaviorname"restBehavior">
- <webHttp/>
- </behavior>
- </endpointBehaviors>
- </behaviors>
- </system.serviceModel>
- </configuration>
最后發布服務,沒什么特殊的,和以前一樣:
- using
- using
- namespace
- class
- staticvoidstring
- usingnewtypeof
- "Running ..."
這個服務端沒有用IIS做HOST,直接用自己的進程做的宿主(當然了,本質還是http.sys在工作)。
2、客戶端
我們這回要用REST形式訪問服務端,所以不是普通意義上的WCF客戶端了,再也用不著那么麻煩的寫配置文件創建Channel或者代理了。
- using
- using
- namespace
- class
- staticvoidstring
- //用一個WebClient就可以搞定了
- new
- //以PUT方式訪問Data/1/100,會映射到服務端的CreateData("1", "100")
- "http://localhost:8080/wcf/Data/1/100""PUT"string
- //以GET方式訪問Data/1,會映射到服務端的RetrieveData("1"),應該返回"100"
- "http://localhost:8080/wcf/Data/1"
- //以POST方式訪問Data/1/200,會映射到服務端的UpdateData("1", "200")
- "http://localhost:8080/wcf/Data/1/200""POST"string
- //再GET一次,應該返回"200"
- "http://localhost:8080/wcf/Data/1"
- //以DELETE方式訪問Data/1,會映射到服務端的DeleteData("1")
- "http://localhost:8080/wcf/Data/1""DELETE"string
- //再GET一次,應該返回"NOT FOUND"
- "http://localhost:8080/wcf/Data/1"
OK,運行一下客戶端,返回如下,和預期一致:
需要補充一下,如果用IIS做HOST,比如DataService.svc.cs是實現類,一定要在DataService.svc中加上Factory,如下:
- <%@ ServiceHost Language="C#""true""WebServer.DataService""DataService.svc.cs""System.ServiceModel.Activation.WebServiceHostFactory"
表明不是使用默認的ServiceHostFactory,而是適應WEB HTTP開發的WebServiceHostFactory。
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網頁名稱:WCF簡單教程(11)REST調用-創新互聯
本文鏈接:http://m.newbst.com/article28/dpgojp.html
成都網站建設公司_創新互聯,為您提供網站導航、外貿建站、定制開發、App開發、軟件開發、自適應網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯