揭秘WCF REST架構(gòu)背后隱含概念
WCF經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展,很多用戶都很了解WCF REST架構(gòu)了,這里我發(fā)表一下個(gè)人理解,和大家討論討論。不同的人似乎對(duì)REST有不同的定義,有些定義是非常嚴(yán)格的,而有些則是比較自由的。我傾向于認(rèn)為WCF REST架構(gòu)存在于一個(gè)連續(xù)的范圍里, 如圖所示:
我們可以認(rèn)為WCF REST架構(gòu)背后隱含的基本理念如下:
◆越簡(jiǎn)單越好
◆Web一直是非常成功的。
◆Web是很簡(jiǎn)單的。
◆Web設(shè)計(jì)要遵循一些指導(dǎo)性原則,而這些原則在過(guò)去很長(zhǎng)一段時(shí)間內(nèi)都是可靠的。
◆Web 服務(wù)的設(shè)計(jì)要以 Web的方式。
#T#不同的人對(duì) REST有不同的定義,但可以肯定的是存在一些特征來(lái)影響一個(gè)服務(wù)是否是RESTful的,或者它能不能被認(rèn)為是RESTful, 或者它能否落在上面這個(gè)連續(xù)范圍內(nèi)的某個(gè)位置。這里列出一些(并不是全部)特征:
◆對(duì)HTTP 方法(GET,PUT,POST,DELETE是主要的HTTP方法)的合理使用——HI-REST端傾向于對(duì)具體方法用于具體的情景進(jìn)行嚴(yán)格的規(guī)定。例如一個(gè)HI-REST的實(shí)現(xiàn)中使用GET方法獲取,DELETE方法用來(lái)刪除,PUT方法用來(lái)插入或者更新,而POST方法則用來(lái)附加。而LO-REST 的解決方案則可能使用POST方法做插入,更新,刪除和附加操作。
◆對(duì)數(shù)據(jù)表現(xiàn)形式的選擇——HI-REST解決方案傾向于選擇標(biāo)準(zhǔn)的數(shù)據(jù)表現(xiàn)形式,而一些LO-REST解決方案則認(rèn)為POX也是一個(gè)不錯(cuò)的選擇。
◆對(duì)良好構(gòu)造的URI的使用——HI-REST解決方案傾向于使用描述性的URI而一般情況下不使用查詢字符串,而我們?cè)谝恍㎜O-REST解決方案中可以看到對(duì)查詢字符串的使用。
◆其他:有效負(fù)荷中包含指向相關(guān)信息的鏈接,使用合適的HTTP 響應(yīng)代碼。
我沒(méi)有在什么是REST的基礎(chǔ)上給出一個(gè)嚴(yán)格的定義,原因并不是我覺(jué)得這不重要。原因是,從WCF的角度,一個(gè)專門的定義無(wú)關(guān)緊要。WCF支持范圍兩端的 REST架構(gòu)(HI-REST和LO-REST)。事實(shí)上,在下一篇文章中,我將建立一個(gè)LO-REST的實(shí)現(xiàn),同時(shí)在之后的文章中,我將演示HI- REST端的實(shí)現(xiàn)。