- 相關(guān)推薦
WCF REST工作總結(jié)(一)
最近工作中學(xué)習(xí)使用了WCF REST,REST有很多好處高效簡約面向資源而客戶端調(diào)用也變得非常簡單。REST入門的資料等大家可以去網(wǎng)上找這里主要分享下遇到的問題以及解決~一.環(huán)境準備
使用WCF REST可以先下載一個模版并大致預(yù)覽
下載好這個模版后新建項目選擇這個模版會默認幫我們生成一個CRUD的代碼新手朋友可以用這個快速熟悉下REST風(fēng)格的WCF.
這這里還給我們提供了一個很方便的功能help只需在我們的服務(wù)后面加上help就能顯示服務(wù)的詳情與介紹了
二.搭建REST WCF服務(wù)
1.接口的實現(xiàn)
當我們的請求為Get時一般用來獲取數(shù)據(jù)時使用[WebGet]而增加修改刪除則使用[WebInvoke]里面的Method來決定使用POST或PUT等這里要注意下
Method里的一定要為大寫POST PUT等否則會出現(xiàn)HTTP錯誤405 405不允許此方法對于請求所標識的資源,不允許使用請求行中所指定的方法。
我們在這里還可以通過ResponseFormat與RequestFormat來指定接受的參數(shù)與返回的參數(shù)格式
2.類繼承接口這里先貼一部分最基礎(chǔ)的CRUD 3.Global里注冊路由
用過mvc的朋友是不是發(fā)現(xiàn)這樣寫完后非常的像mvc呢~
三.實現(xiàn)調(diào)用服務(wù)
1.實現(xiàn)get服務(wù)
很簡單我們可以直接通過瀏覽器輸入即可獲得state為1的所有數(shù)據(jù)以json格式傳輸過來
rest風(fēng)格的wcf使得我們不用再像以前一樣客戶端添加服務(wù)引用了沒有了wsdl簡潔了許多效率也提高了很多使得我們訪問更容易
REST由于沒有了代理而是發(fā)送請求我們的客戶端可以是js訪問如果是jquery只需$.get即可發(fā)送請求這里我主要說下C#的訪問方式
通過WebClient方式這個類封裝的比較好調(diào)用起來簡單但由于封裝的過多實現(xiàn)一些功能時則不太容易
通過WebRequest方式這個則比較靈活
上面兩個是經(jīng)常用到的兩個類這里再推薦給大家一個是wcf工具里的其中一個專門用來訪問rest服務(wù)也非常的簡單
通過HttpClient這個也是微軟開發(fā)的工具類而且在最新的.net 4.5里集成了進去
通過上面三個任意其中一個就可以實現(xiàn)提交了
但是這里有一個問題我們以前有代理類通過調(diào)用方法得到代理類可是現(xiàn)在呢我們沒有類我們得到的是一串json格式的數(shù)據(jù)我們怎么把他變成像類一樣的方便操作呢?
比如A公司發(fā)布了rest wcf服務(wù)數(shù)據(jù)格式j(luò)son公司B要調(diào)用A公司的服務(wù)以前ws或wcf都有代理可以生成代理類現(xiàn)在卻得到的是json數(shù)據(jù)而我們還沒有要反序列化的實體類
比如我現(xiàn)在想把得到的數(shù)據(jù)像表格一樣的展示出來
有兩種方法
1.對照json數(shù)據(jù)客戶端新建個類然后通過反序列化把json反序列化為類對象
這樣比較麻煩類少還可以要是多了則需要新建很多實體類更關(guān)鍵的是服務(wù)端的實體類更新了以前WCF或ws更新下服務(wù)即可而現(xiàn)在還要更新客戶端實體類豈不是很麻煩?
所以推薦用下面的方法
2.將json反序列話為dynamic類型
json轉(zhuǎn)換為dynamic類型起初我用的是第三方的json.net經(jīng)過嘗試發(fā)現(xiàn)再把json轉(zhuǎn)換為集合類型時總是出錯如果有朋友知道怎么弄還望告知下
后來經(jīng)過嘗試我采用了微軟自帶的JavaScriptSerializer下面展示代碼
使用方法很簡單經(jīng)過不論是序列化集合還是單個的都沒有問題這個時間也會正常顯示沒有問題~結(jié)果上面的代碼就可以把接受的json類型展示為一個table了
好了這個問題解決了可以上三種方式發(fā)送get請求了這個畢竟簡單大家直接看代碼
可以看到第一個和第三個都是非常簡單的這里要注意的是要注意編碼問題因為傳遞的有中文會有亂碼問題
所以要注意編碼問題再第二個里可以通過得到response.ContentType先得到編碼這樣就可以自動識別編碼格式了
再說下HttpClient這個真正發(fā)送請求是在message.EnsureStatusIsSuccessful();這句話
通過上面任意一種方法我們都可以得到j(luò)son這樣再通過將json反序列話為dynamic類型就可以像有實體類一樣簡單的操作了~~
【W(wǎng)CF REST工作總結(jié)(一)】相關(guān)文章:
初一工作總結(jié)10-11
高一第一學(xué)期工作總結(jié)05-23
高一英語工作總結(jié)05-26
一周的工作總結(jié)04-13
一周工作總結(jié)02-20
一天的工作總結(jié)05-24
高一英語工作總結(jié)01-20
一周的工作總結(jié)08-21
一周工作總結(jié)08-24
一周工作總結(jié)08-24