您的位置:網站首頁 > 電器維修資料網 > 正文 >
基于B/S體系結構開發的系統
來源: 日期:2013-12-8 11:33:12 人氣:標簽:
由于客戶服務器兩層結構存在靈活性差、升級困難、維護工作量大等缺陷,已較難適應當前信息技術與網絡技術發展的需要。隨著WEB技術的日益成熟,Browse/Server(簡稱B/S)結構已成為取代Browser/Server(簡稱C/S)結構的一種全新技術。采用該結構軟件的優勢在于:(1)無須開發客戶端軟件,維護和升級方便;(2)可跨平臺操作,任何一臺機器只要裝有WWW瀏覽器軟件,均可作為客戶機來訪問系統;(3)具有良好的開放性和可擴充性;(4)可采用防火墻技術來保證系統的安全性,有效地適應了當前用戶對管理信息系統的新需求。因此該結構在管理信息系統開發領域中獲得飛速發展,成為應用軟件研制中一種流行的體系結構。
本文在對B/S體系結構分析的基礎上,提出了一種新的體系結構,把B/S與C/S相結合,將組件技術和ActiveX技術分別應用在服務器端和客戶端,開發高效、安全的應用系統。 后給出了一個應用實例。
2 . COM組件技術和ActiveX技術
COM是一種技術標準。它是由微軟公司創建,提供了使多個應用程序或組件對象協同工作并相互通信的能力。COM組件是遵循COM規范編寫、以WIN32動態鏈接庫(DLL)或可執行文件(EXE)的形式發布的可執行的二進制代碼。遵循COM的規范標準,使組件與應用、組件與組件之間可以相互操作,極其方便地建立可伸縮的應用系統。從工程的角度看,組件在應用開發方面具有以下特點:
(1) 組件與開發的工具語言無關。開發人員可以根據需要和愛好選擇特定語言工具實現組件的開發。常用的開發工具是VB、VC和Delphi。將組件編譯成DLL或EXE置于服務器端。可有效保護商業秘密。
(2) 通過接口有效保證了組件的復用性。一個組件具有若干個接口,每個接口代表組件的某個屬性或方法。其它組件或應用程序可以設置或調用這些屬性和方法來進行特定的邏輯處理。組件和應用程序的連接是通過其接口實現的。負責集成的開發人員無須了解組件功能的如何實現,而只須創建組件對象與其接口建立連接。在保證接口一致性的前提下,可以調換組件、更新版本,也可以將組件應用在不同的系統中。
(3) 組件運行效率高、便于使用和管理。因為組件是二進制代碼,比ASP腳本運行效率高,所以核心的商務邏輯計算任務必須由組件來負責,ASP腳本只起組裝組件的角色。而且組件在網絡上的位置可被透明地分配,組件和使用它的程序既能在同一進程中運行,也可在不同進程或不同的機器上運行。組件之間是相互分離和獨立的。利用MTS或COM+對組件管理更加方便。
ActiveX是遵循COM/DCOM規程而開發的用于INTERNET的一種對象鏈接與嵌入技術(OLE)。COM是應OLE設計者的需求而誕生的。其基本的出發點是想讓某個軟件通過一個通用的機構為另一個軟件提供服務。對于基于WEB的應用而言,它提供了使組件嵌入到WEB頁面以擴展交互功能的應用機制。客戶端控件是面向用戶的,以可視化的圖形視頻或文字界面、或者音頻形式在瀏覽器上出現。但它可能并不是瀏覽器的組成部分。這些控件原先是放在服務器上的。當瀏覽器發出請求時,WEB服務器回傳頁面,由瀏覽器負責解釋。在解釋過程中,若發現頁面中要求調用ActiveX控件時,則用該控件的在頁面中注明的ID值先在本地的注冊表內進行查詢。若已經存在,則說明該控件已經在本地安裝,然后通過注冊表中的相關信息直接使用該控件;否則就要根據頁面中所提示的該控件所在的服務器上的路徑到服務器上去下載并且自動完成在本地的安裝注冊,使該控件成為本地資源,供今后使用,這就是所謂“一次下載,永久使用“。客戶端控件一旦在本地安裝完畢,就等價于一個可執行的應用程序,它能訪問使用本地的資源,甚至進行遠程訪問。當然,這可能帶來了安全性問題。
3 基于B/S體系結構開發應用系統
3.1 B/S三層體系結構
在B/S體系結構系統中,用戶通過瀏覽器向分布在網絡上的許多服務器發出請求,服務器對瀏覽器的請求進行處理,將用戶所需信息返回到瀏覽器。B/S結構簡化了客戶機的工作,客戶機上只需配置少量的客戶端軟件。服務器將擔負更多的工作,對數據庫的訪問和應用程序的執行將在服務器上完成。瀏覽器發出請求,而其余如數據請求、加工、結果返回以及動態網頁生成等工作全部由Web Server完成。實際上B/S體系結構是把二層C/S結構的事務處理邏輯模塊從客戶機的任務中分離出來,由Web服務器單獨組成一層來負擔其任務,這樣客戶機的壓力減輕了,把負荷分配給了Web服務器。這種三層體系結構如圖1所示。
這種結構不僅把客戶機從沉重的負擔和不斷對其提高的性能的要求中解放出來,也把技術維護人員從繁重的維護升級工作中解脫出來。由于客戶機把事務處理邏輯部分分給了功能服務器,使客戶機一下子"苗條"了許多,不再負責處理復雜計算和數據訪問等關鍵事務,只負責顯示部分,所以維護人員不再為程序的維護工作奔波于每個客戶機之間,而把主要精力放在功能服務器上程序的更新工作。這種三層結構在層與層之間相互獨立,任何一層的改變不會影響其它層的功能。
3.2 B/S三層體系結構的不足
經過近一兩年的應用,B/S體系結構也暴露出了許多不足地方,具體表現在以下幾個方面:
(1) 由于瀏覽器只是為了進行WEB瀏覽而設計的,當其應用于WEB應用系統時,許多功能不能實現或實現起來比較困難。比如通過瀏覽器進行大量的數據輸入,或進行報表的應答都是比較困難和不便的。
(2) 復雜的應用構造困難。雖然可以用ActiveX、Java等技術開發較為復雜的應用,但是相對于發展已非常成熟C/S的一系列應用工具來說,這些技術的開發復雜,并沒有完全成熟的技術供使用。
(3) HTTP可靠性低有可能造成應用故障,特別是對于管理者來說,采用瀏覽器方式進行系統的維護是非常不安全與不方便的。
(4) WEB服務器成為對數據庫的唯一的客戶端,所有對數據庫的連接都通過該服務器實現。WEB服務器同時要處理與客戶請求以及與數據庫的連接,當訪問量大時,服務器端負載過重。
(5) 由于業務邏輯和數據訪問程序一般由JavaScript、VBScript等嵌入式小程序實現,分散在各個頁面里,難以實現共享,給升級和維護也帶來了不便。同時由于源代碼的開放性,使得商業規則很容易暴露,而商業規則對應用程序來說則是非常重要的。
為克服以上不足,在原有B/S體系結構基礎上,采用一種新的體系結構,如圖2所示。
在該種結構體系中,一些需要用WEB處理的,滿足大多數訪問者請求的功能界面(如信息發布查詢界面)采用B/S結構。后臺只需少數人使用的功能應用(如數據庫管理維護界面)采用C/S結構。組件位于WEB應用程序中,客戶端發出HTTP請求到WEB SERVER。WEB SERVER將請求傳送給WEB應用程序。WEB應用程序將數據請求傳送給數據庫服務器,數據庫服務器將數據返回WEB應用程序。然后再由WEB SERVER將數據傳送給客戶端。對于一些實現起來困難的功能或一些需要豐富的HTML頁面,通過在頁面中嵌入ActiveX控件來實現。
采用這種結構優點在于:(1)充分發揮了充分了B/S與C/S體系結構的優勢,彌補了二者不足。充分考慮用戶利益,保證瀏覽查詢者方便操作的同時也使得系統更新簡單,維護簡單靈活,易于操作。(2)信息發布采用B/S結構,保持了瘦客戶端的優點。裝入客戶機的軟件可以采用統一的WWW瀏覽器。而且由于WWW瀏覽器和網絡綜合服務器都是基于工業標準,可以在所有的平臺上工作。(3)數據庫端采用C/S結構,通過ODBC/JDBC連接。這一部分只涉及到系統維護、數據更新等,不存在完全采用C/S結構帶來的客戶端維護工作量大等缺點。并且在客戶端可以構造非常復雜的應用,界面友好靈活,易于操作,能解決許多B/S存在的固有的缺點。(4)對于原有基于C/S體系結構的應用,可以非常容易地升級到這種體系結構,只需開發用于發布的WWW界面,可以保留原有的C/S結構的某些子系統,充分地利用現有系統的資源。使得現有系統或資源無需大的改造即可以連接使用,保護了用戶以往的投資(5)通過在瀏覽器中嵌入ActiveX控件可以實現在瀏覽器中不能實現或實現起來比較困難的功能。比如通過瀏覽器進行報表的應答。另外,在客戶端ActiveX控件的加盟,可以豐富HTML頁面,產生另人驚奇的效果。(6)將服務器端劃分為WEB服務器和WEB應用程序兩部分。WEB應用程序采用組件技術實現三層體系結中的商業邏輯部分,達到封裝源代碼,保護知識產權的目的。Internet應用程序大部分屬于分布式應用程序,采用組件技術一個重要特點就是它的處理能力能夠隨著用戶數量、數據量所需性能的提高而增加。COM的無逢擴展集COM+,有著如內存數據庫、負載平衡等強大的功能。
4 實例
下面以某學校學生管理系統為例說明B/S結構軟件的設計方法,該系統采用B/S體系結構與COM+技術相結合。通過該系統管理人員可以對學生的學籍、學生的日常表現、學生的學習成績、學校教師、學校的資產進行管理與維護。任課教師可以通過瀏覽器查詢所教班級學生各種相關信息。學校管理人員通過瀏覽器對學校的學生、教師等信息進行管理與維護以及有關查詢統計功能。學校資產管理人員通過C/S體系結構實現對學校資產的管理維護。
本系統結合了ASP技術和COM+技術,是一個三層結構。表示層由ASP頁面組成,用以實現WEB頁面顯示和調用COM+組件,業務邏輯和數據訪問由一組用VC實現的COM+組件構成。為了便于維護、升級和實現分布式應用,在實現過程中,又將業務邏輯層和數據訪問層分離開,ASP頁面不直接調用數據訪問層,而是通過業務邏輯層來調用數據庫。
4.1 COM組件技術應用
該系統的實現主要分為三個部分:數據庫、COM+組件和ASP頁面。其中數據庫與ASP頁面的實現與一般B/S結構的WEB應用相似。COM+實現可分為三個步驟:COM+組件的設計、COM+應用程序的生成和組件注冊、基于屬性編程。該管理系統利用VC中的ATL開發COM+組件。下面是該系統中一個定制組件部分主要代碼
在showscore.asp頁面中接受、辨別用戶的查詢請求,做出不同的查詢處理。當客戶的身分為教師或教務員時,可以查詢所有學生的成績;當客戶的身分為學生時,只能查詢本人的成績。
定制COM組件Score.dll進行查詢處理。首先設計該組件的接口,為組件設計四個屬性:SubjNo(課程號),Term(課程所屬學期),ClassNo(班級號)和StuNo(學號)。定義兩個方法RequeryScores和RequeryAllScores,分別對教師、教務部門和學生的請求做出相應的處理,并將查詢結果集返回給用戶。
以下是實現該組件Score.dll接口描述以及實現方法的部分代碼,從中可以看到組件的接口是如何實現的:
import "ocidl.idl";
[
object,
uuid(46C01798-BE39-4FC0-A25D-718BA31DFADC),
dual,
helpstring("IStudentScore Interface"),
pointer_default(unique)
]
interface IStudentScore : IDispatch{
[propget, id(1), helpstring("課程號")] HRESULT SubjNo([out, retval] BSTR *pVal);
[propput, id(1), helpstring("課程號")] HRESULT SubjNo([in] BSTR newVal);
//其它接口部分從略
[id(5), helpstring("method RequeryScores")] HRESULT RequeryScores(([out,retval]LPDISPATCH* ppRecordset));
};
STDMETHODIMP CStudentScore::RequeryScores()
{
HRESULT hr=S_OK;
IobjectContext* m_spObjectContext=NULL;
//利用ADO訪問數據庫
::CoInitialize(NULL);
_RecordsetPtr pRecordSet=NULL,pRecordSetClone=NULL;
BSTR bstrDSN=::SysAlLOCString(L"Provider=SQLOLEDB.1;Persist Security Info=True;
Password=;Initial Catalog=pubs;Data Source=zhudamiing;User ID=sa");
BSTR bstrSQL;
try{
GetObjectContext(&m_spObjectContext);
pRecordSet.CreateInstance(__uuidof(Recordset));
//根據查詢要求(查詢所有課程、查詢特定學期所有課程、查詢指定課程、查詢
//特定學期某一課程)進行不同操作生成相應SQL語句,程序具體處理從略
pRecordSet->CursorLocation = adUseClient;
pRecordSet->Open(bstrSQL,bstrDSN,adOpenKeyset,adLockOptimistIC,adCmdText);
pRecordSet->PutRefActiveConnection(NULL);
pRecordSetClone = pRecordSet->Clone(adLockOptimistic);
pRecordSetClone->QueryInterface(IID_IDispatch, (void**)ppRecordset);
pRecordSet->Close();
pRecordSet = NULL;
::SysFreeString(bstrDSN);
::SysFreeString(bstrSQL);
//事物成功完成,則提交該事物
I f(m_spObjectContext-)
m_spObjectContext->SetComplete();
}
catch(_com_error &e){
if(m_spObjectContext) //事物失敗,回滾事物處理
m_spObjectContext->SetAbort()
// 其他錯誤處理,從略
}
return hr;
}
RequeryAllScores()實現部分從略。另外ASP調用實現部分比較簡單從略。
組件編譯結束后可以用COM+組件服務管理工具來管理COM+組件及其所在的應用程序。COM+組件服務是個圖形界面的管理工具,利用它可以安裝和發布組件、配置組件及其所在應用程序的屬性,以實現組件安全性、MTS支持、排對組件、設置組件構造參數等。
4。2 ActiveX技術應用
在本系統中許多報表的打印如學生成績打印、學籍報表、學籍卡打印等需要特殊的格式。而瀏覽器所提供的打印功能無法實現。為此可采用ActiveX技術,實現在WEB環境下的本地端打印和報表生成。具體實現過程為:(1)WWW服務器在接到用戶請求后調用WEB應用程序中的相應組件,通過組件訪問數據庫,對數據處理生成報表數據,以文件形式存儲于WEB服務器中相應目錄下。(2)WWW服務器向用戶瀏覽器發送內嵌ActiveX控件的HTML頁面,并在HTML頁面里的(OBJECT)標志中的param屬性里指明數據文件的URL地址。(3)HTML頁面根據所提供的ActiveX標志從WWW服務器上下載ActiveX控件到本地端,并在瀏覽器里執行。ActiveX控件在客戶瀏覽器里完成初始化工作以后,則需直接與服務器端聯系,以獲取報表數據。ActiveX控件與服務器端的連接采用HTTP協議所提供的GET方法,根據數據文件在WWW服務器上的URL地址,直接將數據文件從WWW服務器下載到本地端。(4)對數據文件進行解析,輸入到控件的存儲顯示模塊里,用以存儲顯示。(5)當用戶按下打印按鈕時,ActiveX調用打印模塊進行打印輸出。
5 結束語
隨著INTERNET普及,基于B/S體系結構開發應用程序變為流行的方式。將組件技術應用到B/S體系結構中,實現業務邏輯封裝,提高軟件的可重性和可維護性。
參考文獻:
[1]余英 ,梁剛 VC實踐與提高COM和COM+篇. 中國鐵道出版社
[2]林子禹等 基于WEB與組件技術的企業應用系統設計模型 計算機工程與應用 2000.6.
[3]夏驕雄等 基于Intranet的管理信息系統 小型微型計算機系統 2001、4
[4]樓偉進,應飚.COM/DCOM/COM+組件技術 :計算機應用2000、4.
[5]張震、張曾科 一種新的WEB數據庫系統結構
【看看這篇文章在百度的收錄情況】
相關文章
- 上一篇: 多極管功放的負反饋
- 下一篇: 操作LED電子顯示屏需注意的問題