posts - 176, comments - 240, trackbacks - 0, articles - 7

          cocoon的文檔中有這樣一段話:
          Traditional Web applications try to model the control flow of a Web application by modeling the application as a finite state machine (FSM). In this model, the Web application is composed of multiple states, but the application can be only in one state at a time. Any request received by the application transitions it into a different state. During such a transition, the application may perform various side-effects, such as updating objects either in memory or in a database. Another important side-effect of such a transition is that a Web page is sent back to the client browser.

              Servlet模型提供的正是一個(gè)最基本的基于IO的FSM模型:應(yīng)用程序的狀態(tài)變量存儲(chǔ)在session中,應(yīng)用程序根據(jù)用戶請(qǐng)求更新session中 變量的值。這里一個(gè)隱含的假設(shè)是session中的變量是不相關(guān)的,因?yàn)閟ervlet模型中沒有提供任何機(jī)制來同時(shí)操縱一組相關(guān)變量,例如我們?cè)? session中存放了三個(gè)變量name, title, data, 如果我們希望刪除這三個(gè)變量,我們必須通過三次獨(dú)立的函數(shù)調(diào)用來完成,servlet模型本身并不知道這三者之間的關(guān)聯(lián)關(guān)系。
              當(dāng)web應(yīng)用程序逐漸變的復(fù)雜起來,這個(gè)最簡(jiǎn)單的FSM模型就顯得力不從心了。因此發(fā)展出了MVC模型(Model-View-Controller), 這是對(duì)有限狀態(tài)機(jī)的一個(gè)精細(xì)化。首先我們識(shí)別出session,request中的變量之間存在相關(guān)性,而且變量之間的地位也是不平等的,某些變量的改變 將直接導(dǎo)致另外一些變量的改變。因此變量根據(jù)相關(guān)性被聚合起來,構(gòu)成很多對(duì)象。應(yīng)用程序的狀態(tài)不再由一個(gè)個(gè)獨(dú)立的變量構(gòu)成,而是由具有更豐富語義的對(duì)象構(gòu) 成。在大的結(jié)構(gòu)方面,一些基本的對(duì)象被分離出來,構(gòu)成一個(gè)核心,即model層, 而外圍的變量被分割在不同的view中。 在流行的struts和webwork等MVC框架中,變量的聚合都定義在action層, 各個(gè)相關(guān)的action并沒有匯聚成一個(gè)具有獨(dú)立意義的對(duì)象,似乎僅僅做到了model層和view層的分離,在model層內(nèi)部并沒有建立合適的模型, 即struts和webwork等建立的MVC模型中隱含假定整個(gè)model層內(nèi)部是沒有結(jié)構(gòu)的(注,我對(duì)struts和webwork的了解限于簡(jiǎn)單介 紹文檔,這里的說法可能并不準(zhǔn)確)。一些更加精細(xì)的MVC架構(gòu)直接支持model層的分解,即model層由一系列不相關(guān)的對(duì)象構(gòu)成,每個(gè)對(duì)象具有從屬于 自己的action。沿著這個(gè)復(fù)雜性發(fā)展的級(jí)列繼續(xù)下去,我們可以知道,當(dāng)對(duì)象之間的交互變得更加復(fù)雜的時(shí)候,我們需要框架本身能夠直接支持model層 對(duì)象之間的相關(guān)性。最簡(jiǎn)單的控制關(guān)系是樹形結(jié)構(gòu),即父節(jié)點(diǎn)控制子節(jié)點(diǎn),父節(jié)點(diǎn)銷毀的時(shí)候子節(jié)點(diǎn)自動(dòng)銷毀。這樣就構(gòu)成所謂的HMVC (Hierarchical MVC)模型。在這個(gè)模型中,model層由一系列的對(duì)象組成,而且這些對(duì)象被分割到不同的package中,組成一個(gè)樹形結(jié)構(gòu).
          主站蜘蛛池模板: 兴宁市| 巴里| 闽清县| 海淀区| 剑河县| 绥中县| 肃宁县| 驻马店市| 临沂市| 福安市| 兴宁市| 临颍县| 青州市| 拜城县| 育儿| 通江县| 宁陕县| 镇平县| 虞城县| 永善县| 安平县| 冕宁县| 和硕县| 阿克陶县| 盐边县| 镇安县| 晋中市| 成安县| 五指山市| 饶平县| 法库县| 金湖县| 湖南省| 长宁县| 镇平县| 安塞县| 庄浪县| 泾川县| 孝昌县| 儋州市| 上杭县|