小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

面向資源的架構(gòu)

 蘭亭文藝 2018-01-13

我已經(jīng)向你展示了REST的能力,但是還沒有系統(tǒng)地講述該能力是怎樣形成的,以及如何來(lái)展現(xiàn)該能力。在這一章,我將概述一個(gè)具體的REST式架構(gòu)——面向資源的架構(gòu)(Resource-Oriented Architecture,ROA)。ROA是一種把實(shí)際問(wèn)題轉(zhuǎn)換成REST式Web服務(wù)的方法:它令URI、HTTP和XML具有跟其他Web應(yīng)用一樣的工作方式,令程序員們?nèi)菀资褂盟鼈儭?br>

在第1章,我根據(jù)REST式Web服務(wù)(RESTful web services)在兩個(gè)問(wèn)題上的不同做法來(lái)對(duì)它們進(jìn)行分類。這兩個(gè)問(wèn)題分別對(duì)應(yīng)于REST的四個(gè)標(biāo)志特征中的兩個(gè)。

作用域信息(scoping information)(“服務(wù)器發(fā)送的為什么是這些數(shù)據(jù),而不是其他數(shù)據(jù)”)——該信息是放在URI里的。這是可尋址性(addressability)原則。

方法信息(method information)(“為什么服務(wù)器應(yīng)當(dāng)發(fā)送而不是刪除這些數(shù)據(jù)?”)——該信息是放在HTTP方法里的。HTTP方法只有少數(shù)幾種,而且人人都事先知道這些方法的作用。這是統(tǒng)一接口(uniform interface)原則。

在這一章,我將介紹面向資源的架構(gòu)(ROA)的功能成分:資源、資源名稱、資源的表示、資源間的鏈接。我將解釋并宣傳ROA的特性:可尋址性(addressability)、無(wú)狀態(tài)性(statelessness)、連通性(connectedness)和統(tǒng)一接口(uniform interface)。我將展示W(wǎng)eb技術(shù)(HTTP、URI和XML)是如何實(shí)現(xiàn)這些功能成分以獲得上述特性的。

在前面幾章,我通過(guò)現(xiàn)有的一些Web服務(wù)(如S3)舉例說(shuō)明了一些概念。在本章,我除了會(huì)引用一些現(xiàn)有的Web服務(wù)(webservices)以外,還會(huì)引用一些現(xiàn)有的網(wǎng)站(web sites)來(lái)講解概念。希望此刻我已經(jīng)讓你相信“網(wǎng)站就是Web服務(wù),而且許多Web應(yīng)用(比如搜索引擎)就是REST式Web服務(wù)”了。我在講述一些抽象概念(如可尋址性)時(shí),會(huì)給出一些真實(shí)的URIs,這樣你就可以通過(guò)在瀏覽器里輸入這些URIs來(lái)親身體會(huì)有關(guān)概念了。

面向資源的架構(gòu)?

Resource-Oriented What Now?

為什么要發(fā)明一個(gè)新詞“面向資源的架構(gòu)(Resource-OrientedArchitecture,ROA)”呢?

為什么不直接用REST?嗯。我確實(shí)在本書的封面上提到了REST,并且我認(rèn)為符合面向資源的架構(gòu)也符合REST風(fēng)格。

但是,REST并不是一種架構(gòu),而是一組設(shè)計(jì)原則。你可以講“在遵守這些原則方面,一個(gè)架構(gòu)做得比另一個(gè)架構(gòu)好”,但是你不能講“REST架構(gòu)”,因?yàn)椴淮嬖谝粋€(gè)叫“REST架構(gòu)”的東西。

直到目前為止,人們已經(jīng)習(xí)慣于在設(shè)計(jì)服務(wù)時(shí),根據(jù)他們自己對(duì)REST的理解發(fā)明一次性架構(gòu)(one-offarchitectures)。這樣做最顯著的結(jié)果,是產(chǎn)生了各式各樣的REST-RPC混合Web服務(wù),而其創(chuàng)建者們還聲稱它們?yōu)镽EST式的。為此,我提出了一組構(gòu)建真正REST式Web服務(wù)的具體規(guī)則,以期能夠結(jié)束這一狀況。在接下來(lái)的兩章里,我會(huì)給出一些簡(jiǎn)單的步驟,你只要根據(jù)這些步驟就能把需求轉(zhuǎn)換成一個(gè)個(gè)資源(resources)。即便不喜歡我的規(guī)則,你至少可以知道作哪些改變是不會(huì)導(dǎo)致違反REST風(fēng)格的。

作為一組設(shè)計(jì)原則,REST是非常通用的。具體地說(shuō),它并不限定于Web。REST不依賴于HTTP機(jī)制或URI結(jié)構(gòu)。但因?yàn)槲矣懻摰氖荳eb服務(wù),所以特地用Web相關(guān)技術(shù)來(lái)講解面向資源的架構(gòu)(ROA)。我想在特定的編程語(yǔ)言中探討如何用HTTP和URI來(lái)實(shí)現(xiàn)REST。假如將來(lái)出現(xiàn)非基于Web的REST式架構(gòu),它的最佳實(shí)踐(best practices)將跟ROA的差不多,只是具體細(xì)節(jié)會(huì)有點(diǎn)差別。到時(shí)我們會(huì)有辦法解決的。

REST的傳統(tǒng)定義留下了一些空白,這給實(shí)踐者們創(chuàng)造了傳播坊間傳言(folklore)的環(huán)境。我特意在Roy Fielding的博士論文及W3C相關(guān)標(biāo)準(zhǔn)的基礎(chǔ)上更進(jìn)一步——希望對(duì)部分問(wèn)題做一個(gè)了結(jié),把那些坊間傳言提煉為一組明確定義的最佳實(shí)踐。即便REST是一種架構(gòu),用REST來(lái)稱呼我的架構(gòu)也是不公平的。我會(huì)把自己的實(shí)踐經(jīng)驗(yàn)和建議,與那些關(guān)于Web的總體想法結(jié)合起來(lái)。

我提出ROA這個(gè)新詞的根本原因是:“REST”這個(gè)詞被太多地用在派別之爭(zhēng)里。假如某人提到這個(gè)詞,那通常暗示著,他本人所贊同的架構(gòu)才是真正的REST式架構(gòu),而贊同別的REST式架構(gòu)的人則會(huì)對(duì)此持有異議。盡管REST社區(qū)在一些基本問(wèn)題(比如URI和HTTP的價(jià)值)上已達(dá)成一致,但REST社區(qū)還是存在著不同派別。

最理想的狀況是沒有派別之爭(zhēng)。可是,太多的經(jīng)驗(yàn)告訴我,僅憑意愿并不能結(jié)束它。所以,要給我的關(guān)于“應(yīng)當(dāng)如何設(shè)計(jì)REST式應(yīng)用”的思想取一個(gè)不同的名字。這樣,萬(wàn)一這些想法被不可避免地用到派別之爭(zhēng)中時(shí),那些不同意的人就可以針對(duì)我的面向資源的架構(gòu)(ROA),而不是跟REST式架構(gòu)或一般的REST混為一談。先要把概念理清了,才可能做到理解。

“面向資源的(resource-oriented)”和“面向資源的架構(gòu)(resource-orientedarchitecture)”這樣的措辭已經(jīng)被用于描述一般的REST式架構(gòu)了(注1)。我承認(rèn)“面向資源的架構(gòu)”并不完全是我原創(chuàng)的詞,但我的用法跟先前的用法剛好吻合,而且我覺得采用這個(gè)詞比聲稱代表整個(gè)REST要好。


???

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多