網路城邦
上一篇 回創作列表 下一篇  字體:
你是不是鐵道迷
2009/03/10 09:35:05瀏覽326|回應0|推薦0
台灣和日本有不少的鐵道迷, 現在台灣也有捷運, 高鐵和頃斜式列車, 和日本不相上下了.曾經在東京住了兩個月, 坐過東京的每一條捷運線, 搭乘子彈列車通過富士山, 再到箱根搭高山鐵路, 終於成為一位日本鐵道迷, 在澳洲唸書時, 也常搭鐵道, 第一次搭上雙層列車. 在歐洲旅遊時, 也從荷蘭搭鐵道到巴黎, 第一次坐上臥床艙. 說到捷運就更多了, 東京, 巴黎, 紐約, 波士頓, 雪梨, 上海, 深圳.

最近發現 SOA 裡面也有鐵道迷 (Rails). 其中的關連應該從 REST (Representational State Transfer)講起. 目前在 SOA 裡面分為兩派, 一派為 SOAP + WS-*, 另外一派就是 REST. 一般而言, SOAP 比較適合 B2B, REST 比較適合 B2C. 我們比較熟悉 SOAP + WS-*, 對 REST 很漠生.

REST 的理念來自一篇博士論文(Roy Fielding, 2000), 裡面談到一些網際網路的設計原則,它是以資源導向 (resource)為觀點, 每個 resource 有唯一的識別代碼, 同時有統一的介面和操作, 論文裡面是建議運用最簡單操作 Create, Read, Update, Delete (CRUD). 在網路實作上,就是 http 的 put, get, post, delete 等四項操作, 同時遵循Client/Server, Stateless, Cacheable, Layered 的原則.也有人提出 ROA (Resource-Oriented Architecture) 來闡述這個理念.

想要快速知道 ROA 和 SOA 在設計理念上的差異, 在勞虎的 "REST 的口水正在洩洪" 中有兩個很清楚的比喻:

例訂單查詢,可以透過一個幕後是 Java 方法的 Web service 來接受用戶請求,用戶端,也就是服務消費者,將訂單序號作為參數,放在請求裡面。在這種設計模式之下,主角是及物動詞,也就是對訂單(受詞)的查詢動作;但如果要改用資源導向的觀念、也就是 REST 理念來設計的話,主角會是那千千萬萬筆的訂單,也就是名詞 - 每筆訂單都有一個獨特、專屬的 URI/URL 來識別, 據以對它們進行各別的查、增、刪、改。

ATM 也舉過一個例子,她說如果用 REST 來設計燈光控制的應用,那你的房子裡面的每一個燈泡都必須有一個獨特的 URI,然後對每盞燈發送開/關的控制信號;而不是透過一個統一的燈光總控來進行控制。看一個自然語言的例子,要表達類似的意念,我們可以說:「我不(太)同意你的看法」,但也可以說「我和你的看法不同」,前者以動詞為重心的表達方式,較為強烈而單刀直入,後者以名詞為主題的表達方式,讓人的感覺較為婉轉,REST 在設計上的體現,也有這種婉轉的味道。


REST 的最大價值,在於它的簡約;只要遵循上回帖子中提到的幾個基本原則,便可直接充分利用 HTTP 和 Web server 先天具備的架構優勢,包括 GET 的請求會被 Web server 有效地 cache,和因不需要維繫各別的 session 狀態,而達到非常高的延展性。Google 和 Amazon 等所提供的 Web services,是最好的明證。這是 REST 的擁護者津津樂道的論點。


記得第一次看到 REST這個字眼是在一份 RFID 的資料上, 摸不著頭緒, 也沒有連想到和 SOA 有關. 現在終於知道為什麼了.

在 REST 實作上稱為 RESTful 軟體, 現在被最多人討論的就是 : Ruby on Rails (RoR)

尤其 Ruby + Rail 的綜效是 Programmer 的生產力大幅提昇,
國外有人做過比較, 它是 Java 10 倍或 PHP 5 倍的生產力.
一個 Java 需要 4 個月的專案, 改用 RoR 只需要 4 天.


這是個 10 倍數的時代, 已經達到另人驚豔的地步.是一個值得注意的發展方向, 就 rest 的英文原意為休息而言, 或許它真的能夠讓 programmer 得到更多休息時間.讓我們視目以代.


( 創作另類創作 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=robertyjlai&aid=2728288