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

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

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

    Web架構(gòu)特性及REST架構(gòu)風(fēng)格(部分內(nèi)容摘自網(wǎng)絡(luò))

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

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

    改善現(xiàn)狀的思路是,把服務(wù)端的處理和狀態(tài)前移,由客戶端來實(shí)現(xiàn)。使服務(wù)端回歸到無狀態(tài)的特性。
    以采用ajax技術(shù)的應(yīng)用系統(tǒng)為例:因?yàn)椴恍枰耆⑿戮涂梢耘c服務(wù)器進(jìn)行交互,使得有狀態(tài)客戶機(jī)成為可用選擇?;跒g覽器的應(yīng)用程序代碼可以在必要時(shí)獲取新的服務(wù)器數(shù)據(jù),并把這些數(shù)據(jù)織入當(dāng)前頁面。
    將處理和狀態(tài)前移到每個(gè)客戶機(jī)上后,實(shí)現(xiàn)了無狀態(tài)的服務(wù)端;同時(shí)緩存服務(wù)器可以緩存ajax引擎(比如dojo, prototype etc.),以及狀態(tài)無關(guān)的數(shù)據(jù)。
    個(gè)人理解,多種瀏覽器的plug-in技術(shù)(Sun的applet, MS的ActiveX等等),都應(yīng)該是這種思路的不同技術(shù)實(shí)現(xiàn)。

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

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

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

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


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 有色视频在线观看免费高清在线直播| va天堂va亚洲va影视中文字幕| 美女无遮挡免费视频网站| 美女黄网站人色视频免费国产| 久久精品国产亚洲AV蜜臀色欲| 6080午夜一级毛片免费看| 亚洲熟妇色自偷自拍另类| 无码国产精品一区二区免费| 亚洲综合视频在线观看| 日韩精品免费一级视频| 精品亚洲国产成人| 午夜一区二区免费视频| 免费又黄又爽又猛大片午夜| 久久久青草青青国产亚洲免观| AAAAA级少妇高潮大片免费看| 亚洲午夜久久久影院| 日韩免费视频一区二区| 亚洲大尺码专区影院| 女人18毛片水最多免费观看| 青娱乐在线视频免费观看| 国产亚洲精品看片在线观看| 热99RE久久精品这里都是精品免费| 亚洲综合久久综合激情久久| 久热中文字幕在线精品免费| 亚洲日韩国产一区二区三区在线| 免费在线观看亚洲| 你懂得的在线观看免费视频| 亚洲伊人久久大香线蕉啊| 日本a级片免费看| 任你躁在线精品免费| 亚洲国产日韩视频观看| 亚洲国产精品尤物YW在线观看| 国产免费爽爽视频在线观看| 国产99在线|亚洲| 亚洲av区一区二区三| 免费人成在线观看网站品爱网| 亚洲一卡2卡三卡4卡无卡下载| 国产精品亚洲αv天堂无码| 最近中文字幕国语免费完整| 另类图片亚洲校园小说区| 久久久久久亚洲精品中文字幕|