擔(dān)心未來(lái)的 REST 怪物正在形成2007-08-28 06:00:50 | 評(píng)論 (0) | 被訪問(wèn)(76)次
REST 的最大價(jià)值,在于它的簡(jiǎn)約;只要遵循上回帖子中提到的幾個(gè)基本原則,便可直接充分利用 HTTP 和 Web 服務(wù)器先天具備的架構(gòu)優(yōu)勢(shì),包括 GET 的請(qǐng)求會(huì)被 Web 服務(wù)器有效地緩存,和因不需要維系各別的會(huì)話狀態(tài),而達(dá)到非常高的伸縮性。Google 和 Amazon 等所提供的 Web services,是最好的明證。這是 REST 的擁護(hù)者津津樂(lè)道的論點(diǎn)。 但如果照目前的氣氛繼續(xù)發(fā)展下去,過(guò)分炒作“REST 是比 SOAP 更適合于 SOA 的技術(shù)實(shí)現(xiàn)手段”、“SOA 未來(lái)的希望在 REST”這類(lèi)危險(xiǎn)的觀念(上回談的主題),其最終的結(jié)果,可能是既傷害了 REST,又對(duì) SOA 沒(méi)好處的雙輸局面。 此話怎講? 目前一般認(rèn)定的(企業(yè)級(jí)) SOA 服務(wù),必須具備讓有興趣想調(diào)用該服務(wù)的消費(fèi)者,自動(dòng)發(fā)掘確切的服務(wù)端點(diǎn)、接口、和 XML 的 schema 結(jié)構(gòu)的能力。在經(jīng)常被引述、由Thomas Erl 所列的 SOA 八大原則中,便包括了 Discoverability 這條。此外,InfoQ 的 SOA 十大原?中的第三和第七個(gè)原則,也都與此相關(guān)(附帶一提,關(guān)于這個(gè)“十大原則”,我認(rèn)為它愈到后面,愈有畫(huà)蛇添足的感覺(jué),尤其是最后三條)。 不意外地,隨著 REST 的發(fā)燒,愈來(lái)愈多人探討 REST 是否也像 SOAP 一樣,需要描述語(yǔ)的問(wèn)題(例如這里和這里)。WADL 正是為滿足 discoverability 需求下的產(chǎn)物。Sun 更已經(jīng)把它納入新的 JAX-RS 的一部分(關(guān)于 WADL,這兒有 篇不錯(cuò)的簡(jiǎn)介)。有人批評(píng) JAX-RS,指出它是想像 JAX-WS 之于 SOAP 那樣,把根源于 CORBA IDL 和 Java interface那套面向?qū)ο蟮木幊虣C(jī)制和架構(gòu),硬套到 REST 上。但如上次帖子里談到的,REST 的應(yīng)用設(shè)計(jì)理念和這樣的作法,將格格不入。換句話說(shuō),它將不當(dāng)?shù)毓膭?lì)開(kāi)發(fā)人員把 REST 當(dāng)作“只不過(guò)是另一種 SOAP”來(lái)看待,而完全忽視 REST 的設(shè)計(jì)理念。REST 原始的精神和價(jià)值,將因而蕩然無(wú)存。 除了 WADL 之外,如果 RESTful服務(wù)需要注明各種需要強(qiáng)制的服務(wù)戰(zhàn)略 (policy),像服務(wù)水平、安全(身分認(rèn)證、加密、簽名...),另外像可靠性、交易等屬性,是不是也需要有一個(gè)像 header 的地方,來(lái)放這些屬性?按照這個(gè)趨勢(shì)繼續(xù)發(fā)展下去,有什么可以阻擋支持 REST 的大廠們,把它變成另一個(gè) SOAP的? 還記得 SOAP 的誕生,最早可追溯到 Dave Winer 和 Don Box 等最早發(fā)展 XML-RPC 的那段歷史嗎(可參考 Wikipedia 的記載)? 自從 SOAP 的發(fā)展從 RPC 導(dǎo)向轉(zhuǎn)成文件導(dǎo)向,復(fù)雜度升高后,XML-RPC 的創(chuàng)始人 Dave Winer 因種種因素,遂轉(zhuǎn)而去發(fā)展 RSS。我還記得約九年、十年前,RSS 還在 1.0 版本時(shí),一般認(rèn)定 RSS 的全名為 "Rich Site Summary" 或 "RDF Site Summary"。但自 Winer 氏積極參與 RSS 2.0 的制定后,開(kāi)始將 "RSS" 用來(lái)代表 "Really Simple Syndication"。從他對(duì) "RSS" 三個(gè)字母所代表的意涵詮釋上,便明確顯示出其對(duì)“簡(jiǎn)約”的強(qiáng)調(diào)。 隨著將 REST 用于企業(yè)級(jí) SOA 應(yīng)用的聲浪,REST 看來(lái)將承受愈來(lái)愈重的包袱,WADL 規(guī)范的推出,只不過(guò)是冰山的一角。我們必須好好問(wèn)問(wèn),讓 REST 重演當(dāng)初從 XML-RPC 一路到 SOAP 1.2 的復(fù)雜化歷史,是否具備充分的正面意義? |
|
|