- 相關(guān)推薦
WCFREST工作總結(jié)范文
總結(jié)是指對(duì)某一階段的工作、學(xué)習(xí)或思想中的經(jīng)驗(yàn)或情況加以總結(jié)和概括的書(shū)面材料,它可以提升我們發(fā)現(xiàn)問(wèn)題的能力,不如我們來(lái)制定一份總結(jié)吧。我們?cè)撛趺磳?xiě)總結(jié)呢?以下是小編收集整理的WCFREST工作總結(jié)范文,僅供參考,希望能夠幫助到大家。
最近工作中學(xué)習(xí)使用了WCF REST,REST有很多好處高效簡(jiǎn)約面向資源而客戶端調(diào)用也變得非常簡(jiǎn)單。REST入門(mén)的資料等大家可以去網(wǎng)上找這里主要分享下遇到的問(wèn)題以及解決~
一、環(huán)境準(zhǔn)備
使用WCF REST可以先下載一個(gè)模版并大致預(yù)覽
下載好這個(gè)模版后新建項(xiàng)目選擇這個(gè)模版會(huì)默認(rèn)幫我們生成一個(gè)CRUD的代碼新手朋友可以用這個(gè)快速熟悉下REST風(fēng)格的WCF、
這這里還給我們提供了一個(gè)很方便的功能help只需在我們的服務(wù)后面加上help就能顯示服務(wù)的詳情與介紹了
二、搭建REST WCF服務(wù)
1、接口的實(shí)現(xiàn)
當(dāng)我們的請(qǐng)求為Get時(shí)一般用來(lái)獲取數(shù)據(jù)時(shí)使用[WebGet]而增加修改刪除則使用[WebInvoke]里面的Method來(lái)決定使用POST或PUT等這里要注意下
Method里的一定要為大寫(xiě)POST PUT等否則會(huì)出現(xiàn)HTTP錯(cuò)誤405 405不允許此方法對(duì)于請(qǐng)求所標(biāo)識(shí)的資源,不允許使用請(qǐng)求行中所指定的方法。
我們?cè)谶@里還可以通過(guò)ResponseFormat與RequestFormat來(lái)指定接受的參數(shù)與返回的參數(shù)格式
2、類繼承接口這里先貼一部分最基礎(chǔ)的CRUD 3、Global里注冊(cè)路由
用過(guò)mvc的朋友是不是發(fā)現(xiàn)這樣寫(xiě)完后非常的像mvc呢~
三、實(shí)現(xiàn)調(diào)用服務(wù)
1、實(shí)現(xiàn)get服務(wù)
很簡(jiǎn)單我們可以直接通過(guò)瀏覽器輸入即可獲得state為1的所有數(shù)據(jù)以json格式傳輸過(guò)來(lái)
rest風(fēng)格的wcf使得我們不用再像以前一樣客戶端添加服務(wù)引用了沒(méi)有了wsdl簡(jiǎn)潔了許多效率也提高了很多使得我們?cè)L問(wèn)更容易
REST由于沒(méi)有了代理而是發(fā)送請(qǐng)求我們的客戶端可以是js訪問(wèn)如果是jquery只需$、get即可發(fā)送請(qǐng)求這里我主要說(shuō)下C#的訪問(wèn)方式
通過(guò)WebClient方式這個(gè)類封裝的比較好調(diào)用起來(lái)簡(jiǎn)單但由于封裝的過(guò)多實(shí)現(xiàn)一些功能時(shí)則不太容易
通過(guò)WebRequest方式這個(gè)則比較靈活
上面兩個(gè)是經(jīng)常用到的兩個(gè)類這里再推薦給大家一個(gè)是wcf工具里的其中一個(gè)專門(mén)用來(lái)訪問(wèn)rest服務(wù)也非常的簡(jiǎn)單
通過(guò)HttpClient這個(gè)也是微軟開(kāi)發(fā)的工具類而且在最新的net 4、5里集成了進(jìn)去
通過(guò)上面三個(gè)任意其中一個(gè)就可以實(shí)現(xiàn)提交了
但是這里有一個(gè)問(wèn)題我們以前有代理類通過(guò)調(diào)用方法得到代理類可是現(xiàn)在呢我們沒(méi)有類我們得到的是一串json格式的數(shù)據(jù)我們?cè)趺窗阉兂上耦愐粯拥姆奖悴僮髂兀?/p>
比如A公司發(fā)布了rest wcf服務(wù)數(shù)據(jù)格式j(luò)son公司B要調(diào)用A公司的服務(wù)以前ws或wcf都有代理可以生成代理類現(xiàn)在卻得到的是json數(shù)據(jù)而我們還沒(méi)有要反序列化的實(shí)體類
比如我現(xiàn)在想把得到的數(shù)據(jù)像表格一樣的展示出來(lái)
有兩種方法
1、對(duì)照json數(shù)據(jù)客戶端新建個(gè)類然后通過(guò)反序列化把json反序列化為類對(duì)象
這樣比較麻煩類少還可以要是多了則需要新建很多實(shí)體類更關(guān)鍵的是服務(wù)端的實(shí)體類更新了以前WCF或ws更新下服務(wù)即可而現(xiàn)在還要更新客戶端實(shí)體類豈不是很麻煩?
所以推薦用下面的方法
2、將json反序列話為dynamic類型
json轉(zhuǎn)換為dynamic類型起初我用的是第三方的json、net經(jīng)過(guò)嘗試發(fā)現(xiàn)再把json轉(zhuǎn)換為集合類型時(shí)總是出錯(cuò)如果有朋友知道怎么弄還望告知下。
后來(lái)經(jīng)過(guò)嘗試我采用了微軟自帶的JavaScriptSerializer下面展示代碼。
使用方法很簡(jiǎn)單經(jīng)過(guò)不論是序列化集合還是單個(gè)的都沒(méi)有問(wèn)題這個(gè)時(shí)間也會(huì)正常顯示沒(méi)有問(wèn)題~結(jié)果上面的代碼就可以把接受的json類型展示為一個(gè)table了。
好了這個(gè)問(wèn)題解決了可以上三種方式發(fā)送get請(qǐng)求了這個(gè)畢竟簡(jiǎn)單大家直接看代碼。
可以看到第一個(gè)和第三個(gè)都是非常簡(jiǎn)單的這里要注意的是要注意編碼問(wèn)題因?yàn)閭鬟f的有中文會(huì)有亂碼問(wèn)題。
所以要注意編碼問(wèn)題再第二個(gè)里可以通過(guò)得到response、ContentType先得到編碼這樣就可以自動(dòng)識(shí)別編碼格式了
再說(shuō)下HttpClient這個(gè)真正發(fā)送請(qǐng)求是在message、EnsureStatusIsSuccessful這句話。
通過(guò)上面任意一種方法我們都可以得到j(luò)son這樣再通過(guò)將json反序列話為dynamic類型就可以像有實(shí)體類一樣簡(jiǎn)單的操作了~~
【W(wǎng)CFREST工作總結(jié)】相關(guān)文章:
工作總結(jié)。01-17
經(jīng)典工作總結(jié)10-10
it工作總結(jié)10-10
工作總結(jié)10-13
學(xué)習(xí)委員學(xué)期工作總結(jié)-工作總結(jié)03-10