???? 關鍵詞:網(wǎng)絡,體系結(jié)構(gòu),特點,方案
1 引 言
九十年代末,隨著網(wǎng)絡技術(shù)在各行各業(yè)的深入應用,IT行業(yè)又出現(xiàn)了一種低費用、低管理開銷、并享有Client/Server計算模式優(yōu)點的新型體系結(jié)構(gòu)——三層網(wǎng)絡體系結(jié)構(gòu)。如果把C/S體系結(jié)構(gòu)稱為“胖客戶機/服務器”計算模式,那么,三層體系結(jié)構(gòu)可以稱為“瘦客戶機/服務器”計算模式。
2 技術(shù)特點
三層(或多層)結(jié)構(gòu)的特點是在兩層結(jié)構(gòu)的基礎上加入一個(或多個)中間件層。它將C/S體系結(jié)構(gòu)中原本運行于客戶端的應用程序移到了中間件層,客戶端只負責顯示與用戶交互的界面及少量的數(shù)據(jù)處理(如數(shù)據(jù)合法性檢驗)工作??蛻舳藢⑹占降?a target="_blank">信息(請求)提交給中間件服務器,中間件服務器進行相應的業(yè)務處理(包括對數(shù)據(jù)庫的操作),再將處理結(jié)果反饋給客戶機。
與傳統(tǒng)的C/S體系結(jié)構(gòu)相比,三層體系結(jié)構(gòu)存在以下優(yōu)點:
2.1 客戶端零維護
在三層體系結(jié)構(gòu)中,幾乎所有的業(yè)務處理都是在中間件Web Server上完成的,客戶端只需要安裝支持Java的瀏覽器即可,不用做任何其它安裝和配置工作,所以也就不存在客戶端維護的問題,真正實現(xiàn)了“客戶端零維護”。處理業(yè)務時,操作員可以直接通過Web瀏覽器訪問Web Server進行業(yè)務處理工作。
2.2 可擴展性好
三層體系結(jié)構(gòu)的可擴展性好體現(xiàn)在以下四個方面:
第一,工作節(jié)點的可擴展性好。由于三層體系結(jié)構(gòu)的客戶端零維護的特點,使增加一個工作節(jié)點的工作簡單到了只需增加一臺裝有Web瀏覽器的PC機即可。
第二,應用系統(tǒng)的可擴展性好。好的應用系統(tǒng)應該能方便地實現(xiàn)一定程度上業(yè)務的變化和業(yè)務單元的增加。三層體系結(jié)構(gòu)采用面向?qū)ο蟮姆治龊驮O計模式,將業(yè)務模塊都封裝到了業(yè)務類和服務類中,所以,如果一個業(yè)務流程變了,或需要增加一個新的業(yè)務模塊,只需替換或增加新的業(yè)務類和服務類即可。
第三,業(yè)務邏輯與用戶界面及數(shù)據(jù)庫分離,使得當用戶業(yè)務邏輯發(fā)生變化時只需更改中間層的控件/組件/JB/EJB即可。
第四,便于數(shù)據(jù)庫移植。由于客戶端不直接訪問數(shù)據(jù)庫,而是通過一個中間層進行訪問,所以,在改變數(shù)據(jù)庫、驅(qū)動程序或存儲方式時無需改變客戶端配置,只要集中改變中間件上的持久化層的數(shù)據(jù)庫連接部分即可。
2.3 安全性好
在三層體系結(jié)構(gòu)中,客戶端只能通過Web Server而不能直接訪問數(shù)據(jù)庫,這大大提高了系統(tǒng)的安全性。如果對系統(tǒng)提出更高的安全性要求的話,還可以通過防火墻進行屏蔽。
2.4 資源重用性好
由于將業(yè)務邏輯集中到Web Server統(tǒng)一處理,三層體系結(jié)構(gòu)可以更好地利用共享資源。例如數(shù)據(jù)庫連接是一項很消耗系統(tǒng)資源、影響響應時間的事件,在三層體系結(jié)構(gòu)中可以將數(shù)據(jù)庫連接放在緩沖池中統(tǒng)一管理,由不同應用共享,并有效控制連接的數(shù)量。
3 組成結(jié)構(gòu)
三層結(jié)構(gòu)主要由以下三部分組成:
3.1 客戶端
客戶端的主要任務是顯示用戶界面,接收用戶事件。三層體系結(jié)構(gòu)中,用戶界面通過瀏覽器顯示,WebServer將應答最終以HTML為載體下載到客戶端瀏覽器,經(jīng)瀏覽器(如IE、NetScape)進行解釋,得到最終的用戶界面。從技術(shù)的角度劃分,客戶端程序由以下幾部分組成:
3.1.1 HTML
HTML是所有界面元素的載體,標題、正文、Table、Form、Script程序段、Applet、ActiveXControl……所有這些都是通過<標識></標識>嵌在HTML中的。HTML是各種瀏覽器的通用語言,界面上的一切對象都要嵌入到HTML中才能被瀏覽器所解釋。
3.1.2 CSS
對CSS的翻譯,國內(nèi)不同文獻有不同的解釋,比較通用的解釋是“層疊風格表單”。層疊風格表單的標準是由W3C組織制定的,目前市面上各個瀏覽器普遍支持的是CSS1標準。
層疊風格表單定義了一個文檔元素的顯示特性。
HTML標識符所包含的每一個元素都可以被定義到一個或多個內(nèi)容顯示的設置。從功能上講,CSS可以細分為CSS1/2和CSS-P(層疊風格表單定位)。CSS1/2的作用是設置文檔元素的顏色、字體等顯示特性;CSS-P的作用是設置文檔元素在頁面上的精確位置。
對于創(chuàng)建一個中型或大型企業(yè)的管理信息系統(tǒng),這樣大規(guī)模的基于Web Server的系統(tǒng)來說,使用CSS是一個理想的選擇。它可以有效地保證所有頁面呈現(xiàn)統(tǒng)一的顯示風格,同時也能減少大量編碼工作。
3.1.3 Script
Script是指某一種腳本語言,目前主要有JavaScript和VBScript兩種通用的腳本語言。由于網(wǎng)景的Netscape不支持VBScript,所以要想編寫跨瀏覽器的腳本程序,JavaScript是唯一的選擇。
從功能上講,Script可以分為客戶端腳本和服務端腳本,由于在三層體系結(jié)構(gòu)中,服務端的控制和應答由Servlet和JSP完成,所以系統(tǒng)只使用客戶端腳本。
客戶端腳本的主要作用是:檢查錄入數(shù)據(jù)的合理性,充當過濾器的作用,保證提交給Web Server的數(shù)據(jù)是合法的;結(jié)合業(yè)務規(guī)則,控制界面元素的顯示特性;在必要情況下進行cookie操作。
3.1.4 Object
Object是嵌入HTML中的外來對象,常用的Object有兩種:Java Applet和MSActiveX Control。當系統(tǒng)對界面的靈活性及功能的需求超出了HTML和Script的實現(xiàn)范圍時,開發(fā)者往往會考慮到Object技術(shù)。
Applet是運行于客戶端的Java小應用程序,隨包容它的頁面一起下載到客戶端,由支持Java的瀏覽器(帶有Java虛擬機)解釋并運行。
ActiveXControl的作用類似于Applet,所不同的是它只能運行于Windows平臺的客戶端,而且只在第一次訪問包容ActiveX Control頁面時下載并安裝ActiveXControl,直到服務端的ActiveXControl版本升級了才會下載第二次。
3.2 中間件服務器
中間件服務器由Web Server和Java ApplicationServer兩部分組成,有的中間件將這兩部分集成到了一起。
3.2.1 Web Server
HTTPServer使用基本的服務器構(gòu)架,它在啟動時創(chuàng)建自己的服務處理線程池。在線程處理池中的線程進入循環(huán),監(jiān)聽來自客戶端的HTTP請求,并使用HTTP協(xié)議,對來到的HTTP請求進行處理。所有的HTTP連接都傳給它們。HTTP請求到來后,服務處理線程根據(jù)URL和Server的配置信息進行必要的授權(quán)檢查,決定調(diào)用哪個Servlet來處理請求,然后將Servlet處理之后的結(jié)果作為應答反饋給客戶端。
在HTTP Server中有幾個處于核心地位的Servlet,它們提供標準的HTTP功能。這幾個核心的Servlet分別是:File Servlet,用于處理對文件服務的請求,Cgi Servlet,提供基本的CGI功能,InvokerServlet,作為一個元Servlet(meta-servlet),負責其它Servlet的加載、擊活和刪除;Dispatcher Servlet:間離部分可信和完全可信的Servlet,使它們在各自安全的“沙箱”里執(zhí)行。
網(wǎng)絡應用級協(xié)議有多種,如HTTP、FTP、SMTP等,其中,HTTP協(xié)議是最安全、應用最廣的協(xié)議,HTTP請求是被防火墻視為安全的請求。因此,三層結(jié)構(gòu)中間件都帶有HTTPServer,它是三層結(jié)構(gòu)中間件的門戶,是聯(lián)系客戶端和真正處理業(yè)務的Application Server的橋梁和紐帶。
3.2.2 Java Application Server
Application Server是中間件的核心部分,是真正實現(xiàn)業(yè)務功能的服務,它接受HTTPServer分配的請求,做出相應處理,再將處理結(jié)果傳遞給HTTPServer,由HTTPServer形成HTTP應答反饋給客戶端。
3.2.3 數(shù)據(jù)庫服務器
數(shù)據(jù)庫服務器是業(yè)務對象的屬性得以永久性保存的載體。保證對象持久的最直接的方法是使用面向?qū)ο蟮臄?shù)據(jù)庫管理系統(tǒng),它是專門為存儲和共享對象而設計的。目前,大型三層體系結(jié)構(gòu)應用系統(tǒng)中用的較多的關系型數(shù)據(jù)庫有Orcale、DB2、Sysbase等。
4 實現(xiàn)分類
三層結(jié)構(gòu)體系存在著J2EE和Windows DNA兩大陣營。
4.1 基于Windows DNA結(jié)構(gòu)的實現(xiàn)方案
如果采用Windows DNA體系結(jié)構(gòu),則數(shù)據(jù)庫應考慮微軟的SQLServer。SQLServer數(shù)據(jù)庫僅適用于中小企業(yè)級。
采用Windows DNA的優(yōu)勢在于,目前絕大多數(shù)桌面操作系統(tǒng)都是微軟的Windows平臺,而且我們所常用的辦公軟件也是微軟的產(chǎn)品。這樣很容易將電子商務系統(tǒng)與日常辦公結(jié)合起來。另外,微軟的產(chǎn)品價格平易近人。再者,Windows2000不僅本身自帶了IISWeb server,而且也完全集成了COM+-中間件服務,無需再額外選擇所謂的“中間件”服務器。另外,采用Windows DNA結(jié)構(gòu),開發(fā)效率要比采用J2EE效率高50%以上。
采用Windows DNA的缺點在于,系統(tǒng)的平臺兼容性、移植性差。這是眾所周知的,無需贅述。
基于Windows DNA結(jié)構(gòu)的實現(xiàn)方案簡單地說就是:ASP+ActiveXControl+COM++ODBC。
4.2 基于J2EE的實現(xiàn)方案
J2EE是一種利用Java 2平臺來簡化諸多與多級企業(yè)解決方案的開發(fā)、部署和管理相關的復雜問題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎就是核心Java平臺或Java 2平臺的標準版,J2EE不僅鞏固了標準版中的許多優(yōu)點,例如“編寫一次、到處運行”的特性、方便存取數(shù)據(jù)庫的JDBC API、CORBA技術(shù)以及能夠在Internet應用中保護數(shù)據(jù)的安全模式等等,同時還提供了對EJB(Enterprise JavaBeans)、Java ServletsAPI、JSP(Java Server Pages)以及XML技術(shù)的全面支持。
Sun公司在企業(yè)版中增加了一整套核心企業(yè)應用程序編程界面,而所有這些界面均為標準的模塊化組件。J2EE技術(shù)還為這些組件提供一整套企業(yè)服務,通過自動化的方式完成應用程序開發(fā)中的諸多耗時且費力的艱難工作,為用戶提供一種可創(chuàng)建廣泛兼容的企業(yè)解決方案而無需進行復雜編程的平臺。利用這一優(yōu)勢可以方便地開發(fā)出高質(zhì)量的、適合企業(yè)使用的應用程序,還可極大地減少產(chǎn)品研發(fā)上市時間、成本和風險。
概括起來,J2EE體系結(jié)構(gòu)的優(yōu)點是:
Java Servlet和JSP都要編譯為Java Class才作為Servlet運行,因此執(zhí)行性能會明顯提高。
Java Servlet和JSP中可以完全使用Java進行編程,可以完成許多簡單的商業(yè)邏輯,特別是JSP,可以直接書寫HTML,因此簡化了頁面的輸出,這樣就保留了腳本語言易于使用的優(yōu)點。
復雜的商業(yè)邏輯以組件的形式部署在EJBServer中。由于EJBServer提供了多種組件事務服務,使系統(tǒng)更能夠應付大量的并發(fā)用戶和管理復雜的事務邏輯。
EJBServer中集成的組件命名服務可以使組件位置透明化,簡化了組件的部署和客戶端應用的維護。
開發(fā)過程易于分工,可以由專人負責編寫組件,其他人組裝頁面。
J2EE平臺全面支持和實施XML,這種強大的組合可使XML具備跨平臺的兼容性,甚至用于對XML代碼進行語法檢查和調(diào)試的工具也可與平臺無關。J2EE技術(shù)和XML技術(shù)分別是企業(yè)開發(fā)的陰陽兩極,因為XML可實施獨立于平臺的數(shù)據(jù),而J2EE平臺則可實施獨立于平臺的解決方案。XML可通過移植的方式表現(xiàn)數(shù)據(jù),因此就對Java技術(shù)的可移植性構(gòu)成了補充。
基于J2EE結(jié)構(gòu)的實現(xiàn)方案是:JSP+JavaBeans/EJB+Servlet+JDBC。
5 實現(xiàn)案例
??? 筆者以Windows DNA方式做了一個實現(xiàn)案例:
此案例服務器站建立在Windows2000上,數(shù)據(jù)庫服務器選用的是SQLServer 6.5。數(shù)據(jù)庫中存放了大量的單位基本信息,經(jīng)過身份確認的用戶可以根據(jù)各自不同的需求對這些數(shù)據(jù)進行相應的操作,如數(shù)據(jù)的上報,查詢等。案例中主要用到了ASP和JavaScript等方法。
5.1 建立連接
為了建立與數(shù)據(jù)庫的連接,可以通過兩種方式:一種是建立DNS,另一種是OLE DB。這里我們用了DNS方式建立了一個SQL的數(shù)據(jù)源Convote。一個DSN連接通常需要的參數(shù)有:DSN名,用戶名,口令,例如我們用用戶名“users”,口令“pass”,通過DSN
連接數(shù)據(jù)庫。
5.2 用戶登陸
用戶輸入用戶名和密碼后提交,用下列語句取得用戶信息:
取得用戶名和密碼后與數(shù)據(jù)庫內(nèi)的用戶名和密碼進行比較,正確的可以進入系統(tǒng),否則提示出錯。
5.3 數(shù)據(jù)查詢
與數(shù)據(jù)庫的連接結(jié)束后一定要關閉連接:conntemp.close()
5.5 ActiveX控件
當用戶的需求用Script無法滿足時,我們常常要用到Java Applet和MSActiveX控件。這里,就MSActiveX控件有個實例。ActiveX控件把主機應用程序顯示和操作組件所需的附加支持包含在GUI環(huán)境中,還可以把OCX組件放在網(wǎng)頁當中。
如當用戶需要在客戶端進行IC卡的讀寫時,由于IC卡的讀寫是較復雜的程序,單純用Script語句根本就無法實現(xiàn)此功能。此時我們就需要用到ActiveX控件。用VB編寫了一個ActiveX OCX,把它嵌入HTML中,讓第一次訪問的用戶隨頁面一起下載,同時OCX所要調(diào)用的DLL也隨著OCX一起下載到客戶端,于是控件在客戶端就可以執(zhí)行起來。
這里我們使用的是Asp頁面靜態(tài)調(diào)用ActiveX控件的方法:
之后,就可以在ASP語句中使用此ActiveX組件的幾個方法了。
讀卡界面如圖3所示。
??? 點擊讀卡,則可以讀出卡內(nèi)信息,如圖4所示。
??? 總之,B/S模式應是今后的發(fā)展方向。
評論
查看更多