<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Web架構特性及REST架構風格

    Posted on 2008-03-24 16:35 bluoy 閱讀(394) 評論(0)  編輯  收藏
    Web架構特性及REST架構風格(部分內(nèi)容摘自網(wǎng)絡)

    良好的Web架構風格:
        1. 客戶/服務器模式:  實現(xiàn)了UI與數(shù)據(jù)的分離。
        2. 服務端無狀態(tài)性: 可見性,可靠性,可伸縮性等方面的改善。
         可見性-無狀態(tài)性使得服務器不必要維護海量的上下文(Context)。
         可靠性-無狀態(tài)性減少了服務器從局部錯誤中恢復的任務量。
         可伸縮性-無狀態(tài)性使得服務器可以很容易的釋放資源。
        3. 緩存: 減少服務端不必要的處理。
        4. 可伸縮性: 便于分布式和集群部署。
         上面的2,3點也是影響4的主要因素。而隨著系統(tǒng)用戶規(guī)模的指數(shù)上升,可伸縮性將變的至關重要。

    現(xiàn)在大多數(shù)應用程序都忽略或者違反了上述2, 3的風格。當然也肯定失去了4帶來的好處。
    比如Java Servlet中HttpSession的應用,使服務器端保存了客戶端的狀態(tài)。
    時下流行的動態(tài)頁面的做法也使得資源緩存變得困難或者不可能。
    這些都直接影響了應用的可伸縮性。

    改善現(xiàn)狀的思路是,把服務端的處理和狀態(tài)前移,由客戶端來實現(xiàn)。使服務端回歸到無狀態(tài)的特性。
    以采用ajax技術的應用系統(tǒng)為例:因為不需要完全刷新就可以與服務器進行交互,使得有狀態(tài)客戶機成為可用選擇。基于瀏覽器的應用程序代碼可以在必要時獲取新的服務器數(shù)據(jù),并把這些數(shù)據(jù)織入當前頁面。
    將處理和狀態(tài)前移到每個客戶機上后,實現(xiàn)了無狀態(tài)的服務端;同時緩存服務器可以緩存ajax引擎(比如dojo, prototype etc.),以及狀態(tài)無關的數(shù)據(jù)。
    個人理解,多種瀏覽器的plug-in技術(Sun的applet, MS的ActiveX等等),都應該是這種思路的不同技術實現(xiàn)。

    經(jīng)過以上分析整理,實際上已經(jīng)涉及到了時下流行的一個概念-REST.

    REST(Representational State Transfer)來源于Dr. Roy Thomas Fielding,  <Architectural Styles and the Design of Network-based Software Architectures>
    當瀏覽器瀏覽訪問一個url資源時,返回的頁面即為該url資源的representation,這個representation給瀏覽器一個state,當
    瀏覽器訪問下一個url資源時,瀏覽器的state就transfer了。
    REST其本身只是為分布式超媒體系統(tǒng)(distributed hypermedia systems)設計的一種架構風格,而不是某個標準,框架。

    REST的設計準則
        1.網(wǎng)絡上的所有事物都被抽象為資源(resource);
        2.每個資源對應一個唯一的資源標識符(resource identifier);
        3.通過通用的連接器接口(generic connector interface)對資源進行操作;
        4.對資源的各種操作不會改變資源標識符;
        5.所有的操作都是無狀態(tài)的(stateless)。

    REST中的資源所指的不是數(shù)據(jù),而是數(shù)據(jù)和表現(xiàn)形式的組合。
    REST是基于Http協(xié)議的,任何對資源的操作行為都是通過Http協(xié)議來實現(xiàn)。以往的Web開發(fā)大多數(shù)用的都是Http協(xié)議中的GET和POST方法,對其他方法很少使用,這實際上是因為對Http協(xié)議認識片面的理解造成的。Http不僅僅是一個簡單的運載數(shù)據(jù)的協(xié)議,而是一個具有豐富內(nèi)涵的網(wǎng)絡軟件的協(xié)議。他不僅僅能對互聯(lián)網(wǎng)資源進行唯一定位,而且還能告訴我們?nèi)绾螌υ撡Y源進行操作。Http把對一個資源的操作限制在4個方法以內(nèi):GET, POST,PUT和DELETE,這正是對資源CRUD操作的實現(xiàn)。由于資源和URI是一一對應的,執(zhí)行這些操作的時候URI是沒有變化的,這和以往的 Web開發(fā)有很大的區(qū)別。正由于這一點,極大的簡化了Web開發(fā),也使得URI可以被設計成更為直觀的反映資源的結(jié)構,這種URI的設計被稱作 RESTful的URI。這位開發(fā)人員引入了一種新的思維方式:通過URL來設計系統(tǒng)結(jié)構。當然了,這種設計方式對一些特定情況也是不適用的,也就是說不是所有的URI都可以RESTful的。
    REST 之所以可以提高系統(tǒng)的可伸縮性,就是因為它要求所有的操作都是無狀態(tài)的。由于沒有了上下文(Context)的約束,做分布式和集群的時候就更為簡單,也可以讓系統(tǒng)更為有效的利用緩沖池(Pool)。并且由于服務器端不需要記錄客戶端的一系列訪問,也減少了服務器端的性能。


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 91成人免费观看在线观看| 久久久久亚洲AV无码去区首| 丁香花在线观看免费观看图片| 精品久久久久久久免费加勒比| 亚洲欧洲日韩极速播放| 女人张开腿等男人桶免费视频| 亚洲一线产品二线产品| 美女黄网站人色视频免费国产| 国产精品亚洲专区无码不卡| 亚洲精品无码专区2| 久久久久久毛片免费看| 亚洲国产成人片在线观看无码| 91青青国产在线观看免费| 亚洲第一页中文字幕| 久久久久国产精品免费免费搜索 | 成人免费看黄20分钟| 亚洲精品无码mⅴ在线观看| 天天操夜夜操免费视频| 国产精品亚洲一区二区三区在线观看| 免费一级毛片女人图片| www成人免费观看网站| 亚洲AV第一页国产精品| 国产无人区码卡二卡三卡免费 | 亚洲?V无码乱码国产精品| 国产va免费精品| 亚洲国产日韩一区高清在线| 野花高清在线观看免费完整版中文| 亚洲国产精品无码第一区二区三区| 亚洲国产精品一区二区第一页免| 中文字幕无码日韩专区免费| 亚洲人成影院在线高清| 亚洲精品国产高清嫩草影院| 亚洲午夜免费视频| 亚洲熟妇自偷自拍另欧美| 中文字幕不卡亚洲| 99re热免费精品视频观看| 国产免费高清69式视频在线观看| 亚洲精品第一国产综合精品| 人人狠狠综合久久亚洲高清| 久久A级毛片免费观看| 美女被免费视频网站|