今天收到InfoQ的推薦郵件,看了標題就很感興趣,花了一些時間一看,果然是很不錯的一個案例分析,同時也讓自己學到了不少。大致羅列一下看后的一些文章重點內容。案例地址:http://www.infoq.com/cn/articles/webber-rest-workflow
1.通過REST服務請求完成狀態遷移,同時合理利用OPTIONS來查看資源操作權限。
2.合理利用Http Heads來返回資源URI,以及通過ErrorCode來確定操作結果,并且作后處理。
3.通過返回內容指定后續流程資源定位以及操作來實現流程化。
4.通過Put報頭的兩種版本比較標示來防止并發修改。(其實也可以優化來做查詢緩存的工作)
5.使用Atom協議來發布和管理資源(Atom是最適合REST風格服務的數據源格式定義)
6.URI模版的使用建議,慎用,如果確實能夠有把握抽象資源定位。
7.Auth可以通過輕量級Http Head中的Authentication或者WS-*的方式來實現。(也可以通過https實現)
總的來說,其實整個案例分析下來以后,可以發現如果要使得服務流程化,那么前提就是數據交互格式統一(XML,Atom),然后利用Http協議作為服務協議而非承載協議,利用已有的操作約定,報文頭部標示和返回的錯誤碼來完成資源狀態遷移的工作,同時通過在返回內容中嵌入流程化內容,使得整個流程可以貫穿。(這里還是簡單的流程串聯,其實如果在流程規則協議中增加復雜的邏輯定義,則可以實現更為強大的Web workflow)。
但對于Open API或者類似的REST流程化業務來說,安全其實還是最大的挑戰,特別是在對資源的訪問控制權限上。當然可以類似于WS-Security提出一套較為安全成熟的方案,但是性能和使用簡易性則會大打折扣,也失去了REST本身的優勢。