一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

[觀點] RIA是三層應用體系的二次革命

  RIA(Rich InterNET Application)為何而產(chǎn)生,它的意義何在?流行的說法是:為Web應用提供豐富的操作體驗,提高系統(tǒng)的友好性云云。這種看法不能說錯,但是我希望從另一個角度來理解:為什么說RIA的出現(xiàn)是歷史的必然,以及RIA對于多層應用的意義究竟是什么。

  我們回頭來看一看程序分層結構發(fā)展的歷史。早期的程序是沒有什么分層的概念的,包括界面、邏輯和數(shù)據(jù)在內(nèi)的所有內(nèi)容全部編譯到單一的執(zhí)行文件中,如下圖所示:

  隨著應用程序的發(fā)展,對數(shù)據(jù)管理的需求越來越強烈,于是數(shù)據(jù)庫出現(xiàn)了。從而數(shù)據(jù)這一部分從應用程序中剝離,成為獨立于編程語言而單獨發(fā)展的分支。數(shù)據(jù)庫的獨立發(fā)展是客戶/服務器(C/S)體系結構的前提和必要條件,從此應用程序發(fā)展為下圖所示的兩層結構:

  數(shù)據(jù)庫與應用程序的分離,應用程序從單層過度到兩層,是分層體系發(fā)展歷史上的一個重大的里程碑——我個人把它叫做“應用程序的第一次社會大分工”。

  想當然耳,有了第一次就會再有第二次。促成第二次社會大分工的是Web的蓬勃發(fā)展,HTML成為發(fā)布應用界面的標準手段,表現(xiàn)層從邏輯層分離出來,兩層結構進化為三層結構:

  第二次社會大分工已經(jīng)發(fā)生,三層應用成為標準,那么是不是我們這個歷史時代已經(jīng)結束了呢?接下來是不是應該開始期待四層結構的到來呢?我說不是,三層結構還沒有發(fā)展到頭,革命尚未成功,同志仍需努力。

  還有什么任務還沒有完成呢?在回答這個問題之前,請你先考慮這樣一個問題,多層體系的本質(zhì)特性是什么?當然不同的人對這個問題會有不同的理解,就我而言,最基礎的觀點是:一個應用究竟是不是多層應用,要看它的每一層是不是具有獨立可替換性。換句話說,把應用程序中的一層完全替換為其他實現(xiàn),對其他層(理論上)完全沒有影響,或者(實際上)只有很小的影響,這個應用才能稱為多層應用,否則就是偽多層應用。如果在層與層之間存在嚴重的耦合,那么分層就沒有一點意義了。千萬別掛著三層的羊頭,賣著兩層或單層的狗肉(盡管狗肉不見得不好)。

  讓我們從這個觀點來考察第一次社會大分工的結果。不妨問問以下幾個問題:

  1. 如果把應用邏輯層從Java換成C#(或者其他語言,看你的實際情況),程序還能跑嗎?數(shù)據(jù)庫需要改變嗎?

  回答:能。數(shù)據(jù)庫不用修改。

  2. 如果把數(shù)據(jù)庫從Oracle換成Mysql(或其他數(shù)據(jù)庫,同上),程序還能跑嗎?邏輯層需要改變嗎?

答:如果程序沒有依賴于某個數(shù)據(jù)庫獨有的特性,就沒有問題。通常需要對數(shù)據(jù)庫驅(qū)動程序和連接信息作一些修改,對于配置良好的應用程序,這些修改是很小的。

  從這些問題我們可以認為,兩層結構的這一次社會大分工是非常成功、非常徹底的,數(shù)據(jù)庫和編程語言基本上已經(jīng)完全解耦,數(shù)據(jù)庫不再依賴于編程語言,編程語言也不再依賴數(shù)據(jù)庫。同時我要強調(diào)一點,之所以能夠進行這樣完全的解耦,主要功勞在于標準化的數(shù)據(jù)庫查詢語言——SQL的存在。試想如果每種數(shù)據(jù)庫都有自己的一套完全不兼容的API會怎樣?那樣任何一個程序都會綁死在特定的數(shù)據(jù)庫上,根本談不上什么分層。

  現(xiàn)在再來看一看三層的情況,同樣有如下問題:

  如果把業(yè)務邏輯層從C#切換到Java,表現(xiàn)層需要修改嗎?

  問題來了。這種情況下何止是需要修改,所有的ASP.NET Server Control全部廢掉了,除了用JSP重寫一遍以外,別無他法。這種問題對于Java來說更加嚴重,因為Java表現(xiàn)層框架可以說是山頭林立,每個框架都有自己的一套語法機制,換個框架基本上就意味著推倒重來。這也是Java社區(qū)為什么從前幾年就開始推崇“無侵入”設計理念的重要原因——切換的代價太大了。

  基于此種現(xiàn)狀可以得出結論:相對于第一次大分工來說,三層應用這一次分工是不完全、不徹底的。像ASP.NET或JSF,甚至包括ROR的RHTML,這些使用服務器生成技術的框架只能叫做偽三層應用,因為表現(xiàn)層被綁死在了特定的后端技術上,根本沒有脫離后端平臺獲得重用的機會。在這些框架里,表現(xiàn)層只能算是應用邏輯層的附庸,還談不上是獨立的一個層。

  第二次大分工還沒有完成,三層應用還不算完整,那么誰來發(fā)起二次革命,完成未竟的事業(yè)呢?這就引出了我在標題提出的觀點:RIA將完成三層體系的二次革命。

  我不想再重復RIA有哪些好處、帶來什么體驗之類老生常談,只想說從歷史發(fā)展來看,RIA的出現(xiàn)是時代使然,它的出現(xiàn)將補上三層結構最后那缺失的一部分。從RIA技術發(fā)展的現(xiàn)狀也可以清楚的看到這種趨勢:所有現(xiàn)代RIA技術,包括Flash/Flex、Silverlight、Ajax、Curl等等,它們的一個基本的共同點就是不依賴于特定的后臺技術,可以和任何服務端搭配使用。甚至可以說,不具備此特點的技術不應當稱之為RIA。(當然,各種RIA技術或多或少還是有一定平臺傾向,但做到平臺無關性不再是一個困難的目標)此外我在前面也說過,多層技術的發(fā)展有賴于層與層之間的標準接口,這種趨勢現(xiàn)在也已經(jīng)非常明顯。XML-RPC、SOAP、JSON、REST各種技術的不斷涌現(xiàn),無不是順應歷史的要求,力圖解決接口標準的問題,為三層結構的最終實現(xiàn)奠定必要的物質(zhì)基礎。

  Ajax是略微特殊的一個案例。盡管也稱之為RIA,但相較Flex和Silverlight這樣完整的解決方案,許多Ajax框架還是不太容易脫離服務端生成技術。OPOA(One Page, One Application)的概念多年前就已經(jīng)出現(xiàn),其核心思想就是不要再讓服務器參與頁面生成,在瀏覽器中利用Javascript來構造一個完整的應用。但現(xiàn)狀來看,用Ajax實現(xiàn)OPOA在許多實例中仍然有很大難度,Ajax在所有RIA方案中對后臺的依賴性是最大的一個。不過HTML/CSS/Javascript仍然在不斷進步,利用一些尚未標準化的技術(如Google Gears)也能解決大多數(shù)問題,Ajax的前景應當還是值得期待的。

  歷史大勢,浩浩蕩蕩,順之者昌,逆之者亡。表現(xiàn)層脫離后臺技術的桎梏,自由獨立地發(fā)展,這已經(jīng)是確定不移的趨勢。試圖將表現(xiàn)層綁定在后臺實現(xiàn)上的技術(典型代表ASP.NET和JSF),盡管在設計上極盡精妙,終究是背離歷史發(fā)展方向的,有如再賢明的君主也無法掩蓋集權專制的弊端。唯有RIA,相信將會“道路越走越寬闊”。

it知識庫[觀點] RIA是三層應用體系的二次革命,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久精品国产99精品国产2021 | 精品久久久中文字幕一区 | 久久网站免费 | www午夜 | 色在线视频网站 | 四虎久久精品国产 | 国产成人精品一区二三区2022 | 亚洲一区二区三区四区在线观看 | 在线成人小视频 | 欧美日韩一区二区亚洲 | 亚洲酒色1314狠狠做 | 久久全国免费久久青青小草 | 国产在线播放免费 | 国产精品第二页在线播放 | 福利岛国深夜在线 | 一区二区中文字幕 | 国语对白免费观看网址 | 国产免费叼嘿在线观看 | 91精品视频免费观看 | 日韩在线播放中文字幕 | 影音先锋国产系列精品 | 国内精品伊人久久大香线焦 | 四虎新网站 | 国内精品久久久久久野外 | 91在线品视觉盛宴免费 | 国产91精品一区二区 | 亚洲激情图片区 | 香蕉免费一区二区三区在线观看 | 国产精品1024永久观看 | 亚洲网站一区 | 亚洲国产成人超福利久久精品 | 日本精品www色 | 成人综合网站 | 国产二区视频 | 五月婷婷色 | 美女让男人插 | 一本久久a久久精品亚洲 | 成人免费大片黄在线观看com | 岛国美女全棵写真视频在线观看 | 久久香蕉国产精品一区二区三 | 激情六月在线视频观看 |