無為

          無為則可為,無為則至深!

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
          本文從網(wǎng)絡(luò)應(yīng)用的結(jié)構(gòu)分析了C/S和WEB應(yīng)用的特征以及各自的優(yōu)勢和限制;講述了W?EB應(yīng)用中數(shù)據(jù)處理過程;還講述了WEB應(yīng)用中各部分的功能劃分;最后詳盡分析了應(yīng)用從C?/S向WEB平臺移植的步驟。
            從90年代開始,客戶機/服務(wù)器(Client/Server,以下簡稱為C/S)結(jié)構(gòu)代替了原來的主機/終端(Host/Terminal)結(jié)構(gòu),并且在整個IT發(fā)展中發(fā)揮了巨大的作用。但隨著Interne?t的不斷普及和應(yīng)用的迅速升級,C/S的應(yīng)用感到有些力不從心。


          一、C/S結(jié)構(gòu)的限制

            網(wǎng)絡(luò)應(yīng)用絕大部分都可分為以下四個層次:表現(xiàn)層、事務(wù)層、數(shù)據(jù)邏輯層和數(shù)據(jù)存儲層。在C/S結(jié)構(gòu)中,表現(xiàn)層和事務(wù)層都放在客戶端,而數(shù)據(jù)邏輯層和數(shù)據(jù)存儲層則置于服務(wù)器端。這種組織安排帶來諸多的限制:
            1、客戶端很龐大,以致于應(yīng)用程序升級和維護時十分困難且耗資很大;
            2、事務(wù)層不能與跨平臺的客戶端共享;
            3、孤立了不同的邏輯組件;
            4、沒有統(tǒng)一的數(shù)據(jù)邏輯層來提供不同種類的數(shù)據(jù)存儲層;
            5、C/S組織結(jié)構(gòu)不支持Internet。
            做過C/S結(jié)構(gòu)下的MIS開發(fā)和維護的人們對第1點體會頗深:對應(yīng)用程序一個小小的改動,就必須通知或親臨每一個客戶端去更新;新增或升級一臺機器,都要把應(yīng)用及其相關(guān)的文件安裝在客戶端上。如果整個系統(tǒng)有成千上萬個客戶端,可以想象維護的工作量有多大。


          二、Web應(yīng)用的解決方案

            Web平臺是一個調(diào)度任務(wù)集中的、以客戶為中心的應(yīng)用程序平臺;它是一個分布式、開放、適用性強、高性能、端到端的平臺;它使企業(yè)利用技術(shù)獲取競爭優(yōu)勢。


          1.?分布式

            C/S技術(shù)的出現(xiàn),給系統(tǒng)集成方案帶來了集中的信息和本地的PC環(huán)境,但其數(shù)據(jù)的共享程度是很不夠的,大家可以想想,在C/S應(yīng)用中,有多少人能夠得到你想發(fā)布的信息。當今的信息技術(shù)需要新的解決方案,它提供以客戶為中心的用戶界面和Web的分布結(jié)構(gòu),它帶有IT環(huán)境的個人特征,如數(shù)據(jù)存取、安全性能等,這就是我們通常所說的三層結(jié)構(gòu)。


          2.?Web結(jié)構(gòu)的優(yōu)勢

            在Web結(jié)構(gòu)中,事務(wù)層和數(shù)據(jù)邏輯層放在中間組件層,這是關(guān)鍵,是與C/S結(jié)構(gòu)的最大區(qū)別,它能解決以下幾個問題:
            (1)?客戶端很瘦小,并且很容易在運行時自動升級;
            (2)?事務(wù)層可在跨平臺的客戶端上共享;
            (3)?不同邏輯組件的分離意味著圖形設(shè)計人員、事務(wù)邏輯開發(fā)人員和數(shù)據(jù)庫分析人員可以獨立地設(shè)計他們各自的部分;
            (4)?統(tǒng)一的、抽象的用戶界面可使用戶更有效地從同一數(shù)據(jù)源中存取數(shù)據(jù);
            (5)?這種結(jié)構(gòu)可更有效地在企業(yè)內(nèi)部網(wǎng)、國際互聯(lián)網(wǎng)和外聯(lián)網(wǎng)上運行。
            中間組件層充當一個服務(wù)器,這就是通常所說的應(yīng)用服務(wù)器。


          3.?開放性

            Web是一個開放的環(huán)境,應(yīng)用由復(fù)用組件集成,通過標準語言匯編、跨平臺的統(tǒng)一協(xié)議發(fā)布,用標準用戶界面顯示,它與硬件平臺和操作系統(tǒng)無關(guān)。現(xiàn)在有三種組件模型:Activ?eX、JavaBeans和CORBA,每一種模型有它自己的通信協(xié)議:ActiveX用COM和DCOM,JavaBea?ns和CORBA用ⅡOP。但并不是每一種瀏覽器都支持動態(tài)的HTML,Java腳本的擴充至少支持三種模型:Active?Server、LiveWire和PowerDynamo。


          4.?適應(yīng)性

            一個可適應(yīng)的開發(fā)環(huán)境是非常重要的,采用應(yīng)用服務(wù)器的目的在于它支持多種組件模型,但在客戶端和數(shù)據(jù)庫服務(wù)器端需要有更強的適應(yīng)性。
            隨著Web技術(shù)的介入,用戶界面設(shè)計已發(fā)生了巨大的變化,因為在站點上,并沒有類似迷惑用戶的東西或用戶手冊。一個成功的站點應(yīng)首先吸引用戶,而后留住用戶。而引入新的、面向圖形化的和直覺的用戶界面標準,就允許最終用戶可以直接與它們交流。


          三、Web結(jié)構(gòu)中各部分的分工

          1.?Web發(fā)布部分

            如上圖,Web服務(wù)器僅僅是把要顯示的內(nèi)容從站點上以文件的形式讀取,然后以靜態(tài)的HTML格式送到客戶端的瀏覽器;也可以Applet增強表現(xiàn)能力,但它僅僅是利用?ActiveX或JavaBeans通過頁面或組件,并沒有通過任何事務(wù)數(shù)據(jù)服務(wù)器。


          2.?Web數(shù)據(jù)處理部分

            Web數(shù)據(jù)處理增強了標準Web站點存取數(shù)據(jù)的能力,包括許多數(shù)據(jù)類型。我們可根據(jù)數(shù)據(jù)的存取容量把數(shù)據(jù)分成兩大組類:標準的在線事務(wù)處理(OLTP)程序?qū)⒒ㄙM大量時間去檢索和操作核心在線數(shù)據(jù),這種數(shù)據(jù)需要連續(xù)讀取和回寫。而另一種輔助數(shù)據(jù)是只讀的,如幫助文件、用戶信息和文檔等。Web數(shù)據(jù)處理主要集中在輔助數(shù)據(jù),而Web?OLTP主要集中在核心在線數(shù)據(jù)。


          3.?客戶端

            客戶端是表現(xiàn)邏輯層,執(zhí)行含有各種擴展的HTML(包括動態(tài)HTML)頁面,這些擴展既來自瀏覽器,也來自可視化JavaBeans和ActiveX組件。在任何情況下,我們至少需要一個HT?ML頁面,由此HTTP可從服務(wù)器端傳至客戶端,應(yīng)用程序的其它部分可以是一個整體。因為大部分的Web應(yīng)用都是為Internet編寫的,對專業(yè)的IT應(yīng)用而言,Web是一個成功的平臺,用戶可以在斷開連接后繼續(xù)工作,這就意味著遠程象本地一樣可存取事務(wù)和邏輯數(shù)據(jù)。這樣不僅要分發(fā)應(yīng)用程序,而且還要分發(fā)數(shù)據(jù)。
          <div?align="center">
          ??<img?src="cstoweb.jpg"?width="410"?height="244">
          </div>
          ?
          4.?應(yīng)用和數(shù)據(jù)服務(wù)器端

            Web結(jié)構(gòu)中的剩余部分就是完成應(yīng)用程序如何與數(shù)據(jù)協(xié)同工作。數(shù)據(jù)可分成兩大類:事務(wù)邏輯和數(shù)據(jù)邏輯。數(shù)據(jù)邏輯駐在數(shù)據(jù)服務(wù)器中,而事務(wù)邏輯則置于應(yīng)用服務(wù)器中。事務(wù)邏輯又可分為兩類:事務(wù)組件和應(yīng)用服務(wù),事務(wù)組件定義了事務(wù)及其操作,而應(yīng)用服務(wù)則是提供一般應(yīng)用性能的組件,如菜單管理、主從數(shù)據(jù)格式等。
            前面我們已介紹了Web發(fā)布、Web數(shù)據(jù)處理和Web?OLTP。事實上,在一個完整的應(yīng)用中,這三種方式往往同時存在。例如,對不存取任何數(shù)據(jù)的Web頁面,傳統(tǒng)的Web方法是很好的,由Web服務(wù)器從文件系統(tǒng)中讀取頁面,然后送給客戶端。


          四、移植的步驟

            當我們確定移植順序時,牢記以下幾個因素:第一、要知道你能承受多大風險,由此決定每一步你做多大的修改;第二、盡管我們關(guān)注配置環(huán)境本身,但開發(fā)環(huán)境很關(guān)鍵,一個完整的Web解決方案應(yīng)包括這兩部分。下面詳述從C/S移植到Web平臺的五個步驟:


          1.?為事務(wù)邏輯選定開發(fā)平臺

            首先,要為事務(wù)邏輯的開發(fā)及客戶端與應(yīng)用服務(wù)器間的通信選定組件模型,然后決定采用何種應(yīng)用服務(wù)器來實現(xiàn)事務(wù)邏輯。對于事務(wù)邏輯,頁面服務(wù)器是最簡單的選擇,但它是否采用動態(tài)數(shù)據(jù)對象(Active?Da?ta?bjects,簡稱ADO)或JavaBeans,或兩者都采用,這將取決于很多因素,如當前配置、開發(fā)工具和平臺限制等。通常采用關(guān)聯(lián)組件的通信模型,但并不需要選擇支持多種組件的應(yīng)用服務(wù)器,比較典型的是包含兩類服務(wù)器:一類是基于HTTP的頁面服務(wù)器,用來處理Web數(shù)據(jù)流程;而另一類則是事務(wù)服務(wù)器,用來處理Web在線事務(wù)處理(OLTP)。
            如果當前是兩層結(jié)構(gòu),為第三代語言開發(fā)環(huán)境,則不必考慮遺留的事務(wù)邏輯,因為當前并沒有應(yīng)用服務(wù)器;但若是兩層結(jié)構(gòu)、第四代語言開發(fā)的應(yīng)用程序,則可利用它自身的應(yīng)用服務(wù)器和事務(wù)邏輯擴展為三層結(jié)構(gòu)的應(yīng)用。PowerBuilder及其不可視對象提供了一個很好的開發(fā)環(huán)境。現(xiàn)存的三層結(jié)構(gòu)應(yīng)用,無論是第三代或第四代應(yīng)用都有應(yīng)用服務(wù)器的形式,你可選用舊服務(wù)器,也可轉(zhuǎn)到新的服務(wù)器。


          2.?為表現(xiàn)邏輯選定開發(fā)平臺

            選擇客戶端的開發(fā)環(huán)境要求比較謹慎,因為帶寬和功能間的協(xié)調(diào)在不同應(yīng)用之間差異很大。無論如何,要選擇可視化的組件和你所期望能支持的瀏覽器,若兩種瀏覽器都要求支持,則需要自己編寫一些通用的程序。對于應(yīng)用服務(wù)器,ActiveX和JavaBeans之間的選擇完全取決于開發(fā)經(jīng)驗、策略以及市場上可用的組件。
            關(guān)心當前應(yīng)用程序,就象關(guān)心表現(xiàn)邏輯一樣,看它是兩層結(jié)構(gòu)還是三層結(jié)構(gòu),盡管兩層結(jié)構(gòu)的應(yīng)用是肥客戶端,必須分開,但真正的技術(shù)卻不需要改變。僅需要至少一個HTML來啟動頁面,重新配置表現(xiàn)邏輯,并允許HTTP機制存取它。


          3.?選定開發(fā)環(huán)境

            選擇好的開發(fā)環(huán)境是移植至Web平臺的關(guān)鍵,因為開發(fā)工具有助于開發(fā)進程。可以選擇符合工業(yè)標準的組件模型,它將為你生成事務(wù)邏輯,然后不必修改源程序而生成這些組件。有些工具可生成多樣的表現(xiàn)層次,如?javascript、Java或ActiveX組件等。
            在此描述的開發(fā)環(huán)境是第四代語言的范圍,這類工具可在統(tǒng)一的、集成的環(huán)境中創(chuàng)建一個完整的應(yīng)用,所有的表現(xiàn)和事務(wù)邏輯都用同一種語言來編寫。在配置階段,根據(jù)運行平臺生成不同的組件和語言模型。


          4.?統(tǒng)一并構(gòu)建事務(wù)邏輯

            在此必須有一個關(guān)于開發(fā)和配置環(huán)境的詳細圖表,重新規(guī)劃現(xiàn)有的編碼。可以先忽略改變語言和組件模型的細節(jié),而僅重視邏輯本身。從事務(wù)邏輯中分離表現(xiàn)邏輯,然后在把事務(wù)邏輯從應(yīng)用服務(wù)器中分離出來。一旦定義好事務(wù)邏輯,就可配置應(yīng)用服務(wù)器。組織事務(wù)邏輯有兩種比較好的方法:從數(shù)據(jù)模型或客戶端應(yīng)用中提取邏輯。有些數(shù)據(jù)邏輯存放在當前的應(yīng)用中,所以要把它當成組件重新生成。


          5.為Web應(yīng)用重新配置表現(xiàn)邏輯

            必須重新配置表現(xiàn)邏輯才能適應(yīng)瀏覽器環(huán)境,這一過程相當嚴格,因為瀏覽器環(huán)境把客戶端組件送至用戶,有許多可選方案。如果開發(fā)環(huán)境支持一般的技術(shù),而又想在這種技術(shù)下使用最好的策略,例如PowerBuilder支持由數(shù)據(jù)窗(DataWindow)生成HTML,但又計劃將來生成更完整的應(yīng)用程序,在這種情況下,符合Java的數(shù)據(jù)窗是可以考慮的。
            當表現(xiàn)邏輯改成Web環(huán)境時,需要開發(fā)一些新的組件。如果沒有生成任何新的頁面,則C/S應(yīng)用與Web應(yīng)用的用戶界面可以完全一樣。
          [ 相關(guān)貼圖 ]


          凡是有該標志的文章,都是該blog博主Caoer(草兒)原創(chuàng),凡是索引、收藏
          、轉(zhuǎn)載請注明來處和原文作者。非常感謝。

          posted on 2006-06-11 12:48 草兒 閱讀(110) 評論(0)  編輯  收藏 所屬分類: ajax
          主站蜘蛛池模板: 西林县| 锦州市| 天全县| 明溪县| 锡林浩特市| 九江市| 行唐县| 建宁县| 郯城县| 印江| 曲阳县| 太原市| 陵水| 宁蒗| 鄂托克旗| 太仆寺旗| 正阳县| 林州市| 伊金霍洛旗| 绥化市| 新巴尔虎右旗| 石棉县| 丰顺县| 永丰县| 磐安县| 平利县| 潍坊市| 长武县| 龙泉市| 潼南县| 铁岭市| 丹江口市| 延寿县| 晋宁县| 泰来县| 孝昌县| 宾阳县| 新津县| 宁蒗| 岚皋县| 田林县|