1 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
dubbo支持多種遠(yuǎn)程調(diào)用方式,例如dubbo RPC(二進(jìn)制序列化 + tcp協(xié)議)、http invoker(二進(jìn)制序列化 + http協(xié)議,至少在開(kāi)源版本沒(méi)發(fā)現(xiàn)對(duì)文本序列化的支持)、hessian(二進(jìn)制序列化 + http協(xié)議)、WebServices (文本序列化 + http協(xié)議)等等,但缺乏對(duì)當(dāng)今特別流行的REST風(fēng)格遠(yuǎn)程調(diào)用(文本序列化 + http協(xié)議)的支持。 有鑒于此,我們基于標(biāo)準(zhǔn)的Java REST API——JAX-RS 2.0(Java API for RESTful Web Services的簡(jiǎn)寫(xiě)),為dubbo提供了接近透明的REST調(diào)用支持。由于完全兼容Java標(biāo)準(zhǔn)API,所以為dubbo開(kāi)發(fā)的所有REST服務(wù),未來(lái)脫離dubbo或者任何特定的REST底層實(shí)現(xiàn)一般也可以正常運(yùn)行。
特別值得指出的是,我們并不需要完全嚴(yán)格遵守REST的原始定義和架構(gòu)風(fēng)格。即使著名的Twitter REST API也會(huì)根據(jù)情況做適度調(diào)整,而不是機(jī)械的遵守原始的REST風(fēng)格。
附注:我們將這個(gè)功能稱之為REST風(fēng)格的遠(yuǎn)程調(diào)用,即RESTful Remoting(抽象的遠(yuǎn)程處理或者調(diào)用),而不是叫RESTful RPC(具體的遠(yuǎn)程“過(guò)程”調(diào)用),是因?yàn)镽EST和RPC本身可以被認(rèn)為是兩種不同的風(fēng)格。在dubbo的REST實(shí)現(xiàn)中,可以說(shuō)有兩個(gè)面向,其一是提供或消費(fèi)正常的REST服務(wù),其二是將REST作為dubbo RPC體系中一種協(xié)議實(shí)現(xiàn),而RESTful Remoting同時(shí)涵蓋了這個(gè)面向。
添加回答
舉報(bào)