<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • WEB服務器多框架的解決方法

    時間:2024-08-13 05:06:22 Web Services 我要投稿
    • 相關推薦

    WEB服務器多框架的解決方法

      【摘要】在INTRANET上設計基于WEB的MIS時,大批量數據錄入變成了操作上的瓶頸,并給WEB SERVER與DATABASE造極大的負擔。

      為解決這個問題,我們設計了多框架結構,將應用的功能進行細分,然后交給各框架分別完成,這種分工協作方式可以使操作界面上的數據實現受控的部分刷新,有效地減小了網絡的數據傳輸量,縮短了各部分的處理時間,同時了也大大減輕了WEB SERVER與DATABASE的系統負擔。

      多框架解決方案采用ASP(ActiveX Server Pages)及ADO(ActiveX Data Objects)完成與數據庫的交互工作。采用DOM技術解決和框架之間的協作問題。

      關鍵詞:多框架

      *注:本文中討論的方案中WEB服務器為IIS4.0、客戶端瀏覽器為IE4.0以上版本。

      一、問題的提出

      最初,我們采用ASP及ADO技術在INTRANET上設計基于WEB的MIS(下文簡稱MIS)時,沿用了以往設計WEB站點時的設計習慣。但隨著設計的深入,我們發現,現有的系統結構無法承擔大批量的數據錄入工作,因此,必須重新構造系統的總體設計結構。

      MIS與普通的WEB站點之間最大的區別在于處理信息的方式。普通WEB站點的主要功能是發布信息,采集信息只是它極小的一部分功能,而且這些信息采集功能也都是比較簡單的。但對于MIS系統來說,信息的采集及維護工作占有比較高的比例,在這些信息采集功能中還存在一些較為復雜及大批量的數據錄入功能,這些功能成為了系統中的設計難點。

      二、問題的分析

      當一個系統涉及到復雜及大批量的數據錄入功能時,同時也就涉及到了響應速度及界面的問題。在以往的C/S方式中,客戶端的錄入速度由錄入員來控制,一般情況下,當錄入員熟悉了操作方式之后,錄入速度是不受系統限制的。但在WEB方式下,頁面采用完全刷新方式,每次的交互操作至少要造成一個頁面的刷新。這種刷新的工作不僅更新了數據,也將界面上的一些固定內容重新加載了一遍。對于普通用戶來說,這種短時間的刷新并不會造成影響;但對于長時間進行操作的錄入員來說,錄入一條數據就要等待一段時間(這一段時間可能是2-3秒,也可能是十幾秒甚至幾分鐘),是絕對不能接受的。即使,網絡有足夠的帶寬,頁面的重載也會造成一種閃動的效果,這種一閃一閃的刷新造成錄入員必須重新識別頁面上的各種元素,不僅也會拖慢了他們的錄入速度,還造成眼睛的快速疲勞。

      三、解決方案

      如果能夠“不”刷新頁面而“快速更新”頁面中的數據,問題應該能夠解決了。而且頁面由于沒有刷新,一些必須由服務器保存的狀態信息也能夠在客戶端保存下來了,從而減輕服務器的負擔。那么如何達到這個目標呢?下面將詳細討論。

      1.設計思路

      首先,我們確立采用多框架建立頁面。框架(Frames)其實不是什么新東西,許多站點上都用它來完成顯示固定標題及菜單的功能。采用框架能夠避免一些頁面的重復訪問。但是如果結合使用DOM(Document objects model),框架可以完成許多細致的工作。

      按照DOM的定義,框架可以被當作一個對象。假設我們建立了一個框架,并給它取名為A,則對于建立框架的頁面來說,A是Frames集合中的一個成員,而對于A中的頁面來說,A相當于window對象。因些,雖然框架之間不存在從屬關系,但可以通過它們的父頁面(對象)建立各框架之間的關系。

      如右圖所示:框架之間能夠進行相互控制與數據傳送。

      1).在框架A中用的是最常用的框架控制方式,利用<A TARGET=“B” HREF=”URL”> 控制B框架中的頁面重載。

      2).在框架B中,通過按鈕的點擊事件對框架C進行控制,這里的控制是通過DOM來實現的。(假設B中按鈕Name值為“B1”)

      控制C中的URL,在按鈕的ONCLICK事件中加入以下代碼:(VBScript)

      sub b1_onclick

      set Bframe = parent.B

      Bframe.location.href = “URL”

      End sub

      控制C中的文本框內容,在按鈕的ONCLICK事件中加入以下代碼:(VBScript)

      sub b1_onclick

      set Bframe = parent.B

      Brame.document.all.txt1.value = “劉念”

      ‘txt1是C框架中文本框的Value值

      end sub

      2.新的框架結構

      如上圖,我們定義了一個新的框架結構。在新的框架結構中,除了用來放置一、二級菜單的MENU1、MENU2和用來放置三級菜單及具體應用功能的Aapp之外,還增加了三個專門用來處理數據的框架(在上圖中用虛線表示)。這三個框架不需要界面,在應用執行的時候是看不見的。

      三個數據處理框架的與Aapp框架分工合作,完成具體的功能。

      Aapp 針對具體功能的界面和專用控制腳本

      Bfun 客戶端公用函數和全局變量

      Cbuf 數據集合存儲緩沖區

      Dcom 服務器端命令執行結果存儲緩區

      在系統中,根據生存周期按Bfun→Aapp→Cbu

      f→Dcom的順序從大到小存放變量和數據對象。具體約定如下:

      Bfun 系統級全局變量。如:用戶的登錄信息和操作記錄。

      Aapp 功能級全局變量。如:步驟狀態參數、功能常數。

      Cbuf 如果一個功能在操作上存在多個步驟,在其中不確定的連續幾個步驟中會用到的公共數據就保存在這個

      框架中,如一個緩沖表。

      Dcom 針對Cbuf,此框架只保存在多個步驟中的一步里需要用到的數據。如:函數計算結果。

      Cbuf及Dcom框架中保存的數據主要從服務器上取得。

      3.程序流程說明

      在一個具體的功能中,Aapp對整個程序流程進行控制。Aapp通過對象關系取得Bfun中的變量值或調用Bfun中的函數。而Cbuf及Dcom中會包含一個完整的服務器端處理流程,AAPP在適當的時候將業務流程控制權交給Cbuf或Dcom,Cbuf或Dcom在流程執行完成之后必須將流程控制權還給Aapp。由于借助了DOM中對象的方法與觸發事件,Aapp中可以實現部分數據更新,就象一個C/S中的客戶端程序。

      如上圖,Cbuf與Dcom負擔了與WEB SERVER及DATABASE的數據交換工作,使Aapp在第一次被裝入后就只需要在客戶端瀏覽器中運行。這樣,Aapp中的主要界面就不需要進行刷新,避免了頁面刷新時造成的延遲和閃爍問題。而Cbuf與Dcom中可以只根據約定格式返回數據和一個事件觸發腳本,數據傳輸量可以根據需要降到最小,又因為Cbuf與Dcom沒有可視界,因此在瀏覽器中的加載速度也是最快的。另外,Bfun中保存了大部分的函數和變量,即使Aapp的頁面需要重載,也只需要重載該頁面專用的一部分內容。

      4.數據存儲格式約定

      將數據寫入Aapp界面中的方式有兩種:

      一種是在Cbuf與Dcom定制腳本將數據寫到Aapp中;

      另一種則是由Aapp中的腳本讀取Cbuf與Dcom中的數據再寫到自已的界面上。

      兩種方法最終都要保證Aapp取得程序流程控制權。

      當從服務器上取到的數據比較少時(比如出錯提出示信息),前一種方法是可行的。但當從服務器取回的是一個數據集合(比如多行的記錄集)時,前一種方法會造成控制腳本太長的問題,而且靈活性也不如后一種方法。而且按照各框架的分工,數據的控制功能應該由Aapp去完成。因此后一種方法是數據控制的主要方法,但采用后一種方法必須在Cbuf與Dcom中定義一個數據格式。

      在數據量少的時候,可以用變量保存數據,變量名可以在提交URL時定義,也可以使用默認變量名。兩種定義方式性能差別不大,具體采用那一種可以根據個人喜好而定。

      在數據量比較大時,最常見的情況是在服務器上取回了一個若干行的記錄集。這時可以采用表格保存數據。具體格式如下:

      假設在提交ASP文件的URL時定義的表格對象名為rsTest,則會返回兩個表格對象rsTest和rsTestStru。

      RsTestStru用來存放記錄集的列屬性數據。這個表由固定的五列組成:

      1.ID 列順序號

      2.NAME 名稱

      3.TYPE 數據類型

      4.LENGTH 長度

      5.PREC 小數位

      RsTest用來存放記錄集的各行數據。

      在DOM中,表格對象的行和列都有屬于相應的對象集合。通過指定行和列的序號能夠很準確的定位到任何一個數據元素,再結合innerText屬性便可以取出想要的數據。但DOM并沒有給出對表格元素進行排序及查找的方法,因此我們必須自己編寫這方面的函數腳本。

      對于實際的WEB-MIS,還要考慮ASP及數據庫方面的程序優化問題;一些額外的功能,如打印控制等,仍需要借助ActiveX或Java applet來實現,這里不作討論。

      四、應用實例

      本方案在“深圳市自來水公司管理信息系統(SW-MIS)”的“抄表收費分系統”中獲得了應用,“抄表數據錄入”功能在采用本方案進行優化后,在50個并發用戶的測試中達到了不少于10條/(用戶*分鐘)的錄入速度。而且WEB SERVER與SQL SERVER的CPU占用率能夠始終保持在10%左右。

    【WEB服務器多框架的解決方法】相關文章:

    WEB服務器多框架的解決方案05-20

    WEB服務器流量超負載問題解決方法10-02

    安裝Web服務器07-16

    WEB服務器的優化方法10-30

    Web服務器常規維護10-16

    Java Web服務器(應用服務器)10-03

    如何保證Web服務器安全06-30

    WEB服務器的優化方法簡介06-24

    java實現web服務器的方法10-14

    基于Unix的Web服務器安全07-27

    主站蜘蛛池模板: 色哟哟国产精品免费观看| 亚洲精品成人无限看| 亚洲午夜国产精品无码老牛影视| 99re66热这里只有精品| 日韩精品一二三四区| 四虎国产精品免费入口| 久久精品99久久香蕉国产色戒 | 第一福利永久视频精品| 亚洲国产高清精品线久久| 国产精品超碰12396| 国产精品九九九久久九九| 午夜精品久久久久久久久| 久久99精品久久久久久秒播| 久久最新精品国产| 99热门精品一区二区三区无码| 亚洲精品夜夜夜妓女网| 青草国产精品视频。| 国产手机在线精品| 91精品国产成人网在线观看| 99久久99这里只有免费费精品| 日产精品久久久久久久| 伊人久久精品无码二区麻豆| 久久夜色精品国产www| 国产色精品vr一区区三区| 国产成人精品综合在线观看| 日韩一级精品视频在线观看| 国产精品福利在线观看| 国产精品女同一区二区| 精品亚洲成a人片在线观看少妇| 亚洲精品午夜国产VA久久成人| 亚洲国产精品丝袜在线观看| 久久亚洲AV永久无码精品| 久久99精品国产麻豆婷婷| 精品一区二区三区在线观看| 精品国内自产拍在线观看| 国产精品天干天干在线综合| 6080亚洲精品午夜福利| 91精品国产91久久久久久| 91自慰精品亚洲| 国产精品成人久久久久三级午夜电影| 亚洲国产精品自在在线观看 |