說說Continuation Server

        Continuation Server是在一本叫做《Beyond Java》的書上面看到的。這本書寫得還不錯,只是前面幾章略顯的羅嗦了一點,反覆的討論着同一個主題。
        後面的幾章纔開始轉入主題,討論了一些比較新的咚咚,例如ruby,rails,continuation server,metaprogramming。其他幾個之前都接觸過,所以也就算是看了個小結而已,而continuation server則是第一次聽說,所以比較留意。他的理念也是比較有創意的。我們的web開發,一般都是以客戶端作爲主動的,客戶端發請求,然後接收響應,然後再發請求...整個流程都是由客戶端作推動方。這樣的一個結果就是,一般的web框架都是把他們的控制器分成一個個的方法調用,客戶端的請求就對應到這些方法調用當中。
       continuation server的創新之處就是把這個邏輯反了過來,讓服務器作爲主動方,服務器發回響應,然後等待客戶端輸入之後,繼續執行,然後發回響應...,整個流程是服務器通過發回響應進行推動。整個過程就像是函數調用那樣,服務器發送響應就是函數調用開始,而用戶發送請求就是函數的返回。要實現這個效果,就需要服務器端可以在收到請求之後能返回到之前的發送響應的後一語句。
       這裏的核心就是服務器端需要能夠動態的獲取運行棧,在發送響應前,先對當前的運行棧作一個快照,然後在響應到達時,重新從快照那裏執行,這樣就相當於實現了剛纔所說的函數調用效果。使用continuation server之後服務器端就只需要一個方法調用,對應初始請求。
        public void index(){
                snap shot();
                發送響應;
                if(輸入 = ...){
                     ...
                }else{
                     ...
                }
                snap shot();
                發送響應;
        }
       continuation server的工作就是在每次請求到達後,通過之前的快照值,返回到這個方法調用內部。
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章