[摘 要]本文在對(duì)B/S體系結(jié)構(gòu)分析的基礎(chǔ)上,提出了一種新的體系結(jié)構(gòu),把B/S與C/S相結(jié)合,將組件技術(shù)和ActiveX技術(shù)分別應(yīng)用在服務(wù)器端和客戶端,開發(fā)高效、安全的應(yīng)用系統(tǒng)。本文介紹了組件以及ActiveX技術(shù),分析了Browser/Server體系結(jié)構(gòu)開發(fā)應(yīng)用軟件的特點(diǎn)和不足。提出了克服該不足的一種方法。
[關(guān)鍵詞]COM 應(yīng)用軟件 服務(wù)器
[中圖分類號(hào)]TP [文獻(xiàn)標(biāo)識(shí)碼]A [文章編號(hào)]1009-5489(2008)05-0183-02
隨著web技術(shù)的日益成熟,B/S結(jié)構(gòu)已成為取代C/S結(jié)構(gòu)的一種全新技術(shù)因此該結(jié)構(gòu)在管理信息系統(tǒng)開發(fā)領(lǐng)域中獲得飛速發(fā)展,成為應(yīng)用軟件研制中一種流行的體系結(jié)構(gòu)。
一、COM組件技術(shù)和ActiveX技術(shù)
COM是一種技術(shù)標(biāo)準(zhǔn)。它是由微軟公司創(chuàng)建,提供了使多個(gè)應(yīng)用程序或組件對(duì)象協(xié)同工作并相互通信的能力。COM組件是遵循COM規(guī)范編寫、以WIN32動(dòng)態(tài)鏈接庫(DLL)或可執(zhí)行文件(EXE)的形式發(fā)布的可執(zhí)行的二進(jìn)制代碼。遵循COM的規(guī)范標(biāo)準(zhǔn),使組件與應(yīng)用、組件與組件之間可以相互操作,極其方便地建立可伸縮的應(yīng)用系統(tǒng)。從工程的角度看,組件在應(yīng)用開發(fā)方面具有以下特點(diǎn):
(1)組件與開發(fā)的工具語言無關(guān)。開發(fā)人員可以根據(jù)需要和愛好選擇特定語言工具實(shí)現(xiàn)組件的開發(fā)。常用的開發(fā)工具是VB、VC和Delphi。將組件編譯成DLL或EXE置于服務(wù)器端??捎行ПWo(hù)商業(yè)秘密。
(2)通過接口有效保證了組件的復(fù)用性。一個(gè)組件具有若干個(gè)接口,每個(gè)接口代表組件的某個(gè)屬性或方法。其他組件或應(yīng)用程序可以設(shè)置或調(diào)用這些屬性和方法來進(jìn)行特定的邏輯處理。組件和應(yīng)用程序的連接是通過其接口實(shí)現(xiàn)的。負(fù)責(zé)集成的開發(fā)人員無須了解組件功能的如何實(shí)現(xiàn),而只須創(chuàng)建組件對(duì)象與其接口建立連接。在保證接口一致性的前提下,可以調(diào)換組件、更新版本,也可以將組件應(yīng)用在不同的系統(tǒng)中。
(3)組件運(yùn)行效率高、便于使用和管理。因?yàn)榻M件是二進(jìn)制代碼,比ASP腳本運(yùn)行效率高,所以核心的商務(wù)邏輯計(jì)算任務(wù)必須由組件來負(fù)責(zé),ASP腳本只起組裝組件的角色。而且組件在網(wǎng)絡(luò)上的位置可被透明地分配,組件和使用它的程序既能在同一進(jìn)程中運(yùn)行,也可在不同進(jìn)程或不同的機(jī)器上運(yùn)行。組件之間是相互分離和獨(dú)立的。利用MTS或COM+對(duì)組件管理更加方便。
ActiveX是遵循COM/DCOM規(guī)程而開發(fā)的用于INTERNET的一種對(duì)象鏈接與嵌入技術(shù)(OLE)。COM是應(yīng)OLE設(shè)計(jì)者的需求而誕生的。其基本的出發(fā)點(diǎn)是想讓某個(gè)軟件通過一個(gè)通用的機(jī)構(gòu)為另一個(gè)軟件提供服務(wù)。對(duì)于基于web的應(yīng)用而言,它提供了使組件嵌入到web頁面以擴(kuò)展交互功能的應(yīng)用機(jī)制??蛻舳丝丶敲嫦蛴脩舻?,以可視化的圖形視頻或文字界面、或者音頻形式在瀏覽器上出現(xiàn)。但它可能并不是瀏覽器的組成部分。這些控件原先是放在服務(wù)器上的。當(dāng)瀏覽器發(fā)出請(qǐng)求時(shí),web服務(wù)器回傳頁面,由瀏覽器負(fù)責(zé)解釋。在解釋過程中,若發(fā)現(xiàn)頁面中要求調(diào)用ActiveX控件時(shí),則用該控件的在頁面中注明的ID值先在本地的注冊(cè)表內(nèi)進(jìn)行查詢。若已經(jīng)存在,則說明該控件已經(jīng)在本地安裝,然后通過注冊(cè)表中的相關(guān)信息直接使用該控件;否則就要根據(jù)頁面中所提示的該控件所在的服務(wù)器上的路徑到服務(wù)器上去下載并且自動(dòng)完成在本地的安裝注冊(cè),使該控件成為本地資源,供今后使用,這就是所謂“一次下載,永久使用”客戶端控件一旦在本地安裝完畢,就等價(jià)于一個(gè)可執(zhí)行的應(yīng)用程序,它能訪問使用本地的資源,甚至進(jìn)行遠(yuǎn)程訪問。當(dāng)然,這可能帶來了安全性問題。
二、基于B/S體系結(jié)構(gòu)開發(fā)應(yīng)用系統(tǒng)
1.B/S三層體系結(jié)構(gòu)
在B/S體系結(jié)構(gòu)系統(tǒng)中,用戶通過瀏覽器向分布在網(wǎng)絡(luò)上的許多服務(wù)器發(fā)出請(qǐng)求,服務(wù)器對(duì)瀏覽器的請(qǐng)求進(jìn)行處理,將用戶所需信息返回到瀏覽器。B/S結(jié)構(gòu)簡化了客戶機(jī)的工作,客戶機(jī)上只需配置少量的客戶端軟件。服務(wù)器將擔(dān)負(fù)更多的工作,對(duì)數(shù)據(jù)庫的訪問和應(yīng)用程序的執(zhí)行將在服務(wù)器上完成。瀏覽器發(fā)出請(qǐng)求,而其余如數(shù)據(jù)請(qǐng)求、加工、結(jié)果返回以及動(dòng)態(tài)網(wǎng)頁生成等工作全部由Web Server完成。實(shí)際上B/S體系結(jié)構(gòu)是把二層C/S結(jié)構(gòu)的事務(wù)處理邏輯模塊從客戶機(jī)的任務(wù)中分離出來,由Web服務(wù)器單獨(dú)組成一層來負(fù)擔(dān)其任務(wù),這樣客戶機(jī)的壓力減輕了,把負(fù)荷分配給了Web服務(wù)器。
這種結(jié)構(gòu)不僅把客戶機(jī)從沉重的負(fù)擔(dān)和不斷對(duì)其提高的性能的要求中解放出來,也把技術(shù)維護(hù)人員從繁重的維護(hù)升級(jí)工作中解脫出來。由于客戶機(jī)把事務(wù)處理邏輯部分分給了功能服務(wù)器,使客戶機(jī)一下子“苗條”了許多,不再負(fù)責(zé)處理復(fù)雜計(jì)算和數(shù)據(jù)訪問等關(guān)鍵事務(wù),只負(fù)責(zé)顯示部分,所以維護(hù)人員不再為程序的維護(hù)工作奔波于每個(gè)客戶機(jī)之間,而把主要精力放在功能服務(wù)器上程序的更新工作。這種三層結(jié)構(gòu)在層與層之間相互獨(dú)立,任何一層的改變不會(huì)影響其他層的功能。
2.B/S三層體系結(jié)構(gòu)的不足
經(jīng)過近一兩年的應(yīng)用,B/S體系結(jié)構(gòu)也暴露出了許多不足地方,具體表現(xiàn)在以下幾個(gè)方面:
(1)由于瀏覽器只是為了進(jìn)行web瀏覽而設(shè)計(jì)的,當(dāng)其應(yīng)用于web應(yīng)用系統(tǒng)時(shí),許多功能不能實(shí)現(xiàn)或?qū)崿F(xiàn)起來比較困難。比如通過瀏覽器進(jìn)行大量的數(shù)據(jù)輸入,或進(jìn)行報(bào)表的應(yīng)答都是比較困難和不便的。
(2)復(fù)雜的應(yīng)用構(gòu)造困難。雖然可以用ActiveX、Java等技術(shù)開發(fā)較為復(fù)雜的應(yīng)用,但是相對(duì)于發(fā)展已非常成熟C/S的一系列應(yīng)用工具來說,這些技術(shù)的開發(fā)復(fù)雜,并沒有完全成熟的技術(shù)供使用。
(3)HTTP可靠性低有可能造成應(yīng)用故障,特別是對(duì)于管理者來說,采用瀏覽器方式進(jìn)行系統(tǒng)的維護(hù)是非常不安全與不方便的。
(4)web服務(wù)器成為對(duì)數(shù)據(jù)庫的唯一的客戶端,所有對(duì)數(shù)據(jù)庫的連接都通過該服務(wù)器實(shí)現(xiàn)。web服務(wù)器同時(shí)要處理與客戶請(qǐng)求以及與數(shù)據(jù)庫的連接,當(dāng)訪問量大時(shí),服務(wù)器端負(fù)載過重。
采用這種結(jié)構(gòu)優(yōu)點(diǎn)在于:(1)充分發(fā)揮了充分了B/S與C/S體系結(jié)構(gòu)的優(yōu)勢(shì),彌補(bǔ)了二者不足。充分考慮用戶利益,保證瀏覽查詢者方便操作的同時(shí)也使得系統(tǒng)更新簡單,維護(hù)簡單靈活,易于操作。(2)信息發(fā)布采用B/S結(jié)構(gòu),保持了瘦客戶端的優(yōu)點(diǎn)。裝入客戶機(jī)的軟件可以采用統(tǒng)一的WWW瀏覽器。而且由于WWW瀏覽器和網(wǎng)絡(luò)綜合服務(wù)器都是基于工業(yè)標(biāo)準(zhǔn),可以在所有的平臺(tái)上工作。(3)數(shù)據(jù)庫端采用C/S結(jié)構(gòu),通過ODBC/JDBC連接。這一部分只涉及到系統(tǒng)維護(hù)、數(shù)據(jù)更新等,不存在完全采用C/S結(jié)構(gòu)帶來的客戶端維護(hù)工作量大等缺點(diǎn)。并且在客戶端可以構(gòu)造非常復(fù)雜的應(yīng)用,界面友好靈活,易于操作,能解決許多B/S存在的固有的缺點(diǎn)。(4)對(duì)于原有基于C/S體系結(jié)構(gòu)的應(yīng)用,可以非常容易地升級(jí)到這種體系結(jié)構(gòu),只需開發(fā)用于發(fā)布的WWW界面,可以保留原有的C/S結(jié)構(gòu)的某些子系統(tǒng),充分地利用現(xiàn)有系統(tǒng)的資源。使得現(xiàn)有系統(tǒng)或資源無需大的改造即可以連接使用,保護(hù)了用戶以往的投資(5)通過在瀏覽器中嵌入ActiveX控件可以實(shí)現(xiàn)在瀏覽器中不能實(shí)現(xiàn)或?qū)崿F(xiàn)起來比較困難的功能。比如通過瀏覽器進(jìn)行報(bào)表的應(yīng)答。另外,在客戶端ActiveX控件的加盟,可以豐富HTML頁面,產(chǎn)生另人驚奇的效果。
Internet應(yīng)用程序大部分屬于分布式應(yīng)用程序,采用組件技術(shù)一個(gè)重要特點(diǎn)就是它的處理能力能夠隨著用戶數(shù)量、數(shù)據(jù)量所需性能的提高而增加。COM的無逢擴(kuò)展集COM+,有著如內(nèi)存數(shù)據(jù)庫、負(fù)載平衡等強(qiáng)大的功能。
三、總結(jié)
隨著INTERNET普及,基于B/S體系結(jié)構(gòu)開發(fā)應(yīng)用程序變?yōu)榱餍械姆绞?。將組件技術(shù)應(yīng)用到B/S體系結(jié)構(gòu)中,實(shí)現(xiàn)業(yè)務(wù)邏輯封裝,提高軟件的可重性和可維護(hù)性。
[參考文獻(xiàn)]
[1]夏驕雄等:《基于Intranet的管理信息系統(tǒng)》,《小型微型計(jì)算機(jī)系統(tǒng)》2001年4月。
[2]樓偉進(jìn)、應(yīng)飚:《COM/DCOM/COM+組件技術(shù)》,《計(jì)算機(jī)應(yīng)用》2000年4月。
[3]張震、張?jiān)疲骸兑环N新的web數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)》,《小型微型計(jì)算機(jī)系統(tǒng)》2001年5月。