第7章 Internet技術(3 / 3)

(3)ActiveX技術

Microsoft公司開始並沒有認識到Internet的潛力。事實上,直到Sun公司推出Java,使Web出現了激動人心的景象後,Microsoft才最終決定重新考慮它們的Inernet和Web戰略,由於Microsoft在PC軟件業的霸主地位,因此,它選擇的是在保持現有技術的兼容性的基礎上進行擴展,以支持Internet。於是,ActiveX技術應運而生,由於ActiveX和Java是一對競爭性的產品,因此,把它們對照起來研究可以加深對這類技術的了解。

OLE(object linking and embedding,對象連接和嵌入)伴隨著Windows 3.1推出以來,一直是將不同的Windows應用程序聯係在一起的一個重要技術,應用十分廣泛,而且也具有擴展到Internet上使用的潛力,因此,Microsoft將OLE技術加以擴展,形成了ActiveX。OLE技術的底層基礎是COM(component object model,構件對象模型),OLE在COM的基礎上提供了一整套廣泛的服務,包括應用自動化、標準拖放、對象鏈接和嵌入,以及可視化編輯等。而ActiveX技術在繼承了OLE技術的同時,在規模和速度方麵針對網絡應用的需要進行了優化,另外它還包含了對Internet的編程支持。

ActiveX技術包括下麵幾個部分:ActiveX控件、ActiveX腳本語言、ActiveX文檔和ActiveX服務器擴展。

另外,由於Microsoft的大多數商用軟件都是基於OLE技術的,並且現在市場上大多數的Windows軟件也是基於OLE技術的。因此,通過把OLE擴展到Internet上的方式,給軟件開發商帶來了很大的好處,因為開發者可以很容易地對原來基於OLE的程序加以修改,就可以支持Internet了。Microsoft也是試圖以OLE技術的廣泛支持作為基礎,通過這種簡單的擴展,盡快地在Intetnet市場上占一席之地,獲得較大份額。

(4)ASP

ASP即Active Server Pages (ASP)是微軟的Internet Information Server 3.0(IIS)的一個部件。利用ASP,用戶可以在服務器端執行用Vbscript或Javascript編寫的嵌入在HTML文件中的小程序。而在以前,這些小程序都是在客戶端的瀏覽器上執行的。由於是在服務器上執行,程序可以不必考慮與各類瀏覽器的兼容問題。雖然在服務器上執行會增加服務器的負擔,但由於此時可以存取服務器的有關資源,這些用解釋型語言編寫的程序將具有強大的交互能力。實際上,微軟的基於Win95和NT Workstation平台的Web服務器,在安裝了相關部件後,同樣也支持Active Server Pages。通常使用Active Server Pages的Web網頁具有後綴名.asp。當客戶端用戶的請求是一個ASP文件時,服務器將在傳送該文件之前執行文件中的程序腳本,並把程序的輸出放在頁麵中相應的位置。ASP文件中所有位於“<”和“>”之間的字符串,都將被服務器解釋為程序代碼。

ASP本身提供了很多Active Server部件以擴展ASP的編程能力。這些部件對調用者隱藏了具體的編程細節,通過對這些部件的調用,編程人員用很少的代碼就可以完成許多複雜的任務。用戶也可以用其他編程語言開發自己的ActiveX Server部件。

Server是ASP的一個內置的對象,它可以用來控製ASP文件的運行環境。除了Server對象,ASP還有Request,Response,Session和Application等內置對象。這些對象可以用來獲取客戶端用戶信息,向用戶發送信息和存儲、共享客戶端用戶信息。

(5)CGI

HTML隻能反映靜態信息,要使主頁能夠響應客戶的動作,並與本地的數據庫聯係,並將數據庫的內容傳送給遠端的瀏覽器,則可通過CGI實現。

CGI(Common Gateway Interface)意即公共網關接口,它為HTTP服務器定義了一種與外部應用程序共享信息的方法。當服務器接收到來自某一客戶機的請求,要求啟動一個網關程序(即CGI腳本)時,它把有關該請求的信息綜合到一個環境變量集合中,然後CGI腳本程序將檢查這些環境變量,以試圖找到那些為響應請求而必需的信息。此外,CGI還將為它自己的腳本程序定義一些標準的方法,以確定如何為服務器提供必要的信息,如腳本程序的MIME類型等。

組建一個Web網絡數據庫服務係統,網絡上需要一個Web服務器、客戶端瀏覽器和通用網關接口CGI(Common Gateway Interface)應用程序。

CGI接口通常有三種方式;CGI WIN(Windows CGI),CGI BIN(基於Script語言)及CGI DOS。

Windows CGI接口程序主要是通過Windows CGI標準與Web服務器通信。當Web服務器接收到客戶端瀏覽器的服務請求時,服務器將客戶請求信息數據發送到相應的映射Windows CGI接口程序(CGI程序通常是可以在主機上運行的某一端可執行代碼),CGI WIN程序從接收到的請求信息數據中提取運行參數並利用主機資源運行,當完成任務後,將執行結果提交給Web服務器,由服務器完成與客戶端瀏覽器的通信。CGI IN和CGI DOS接口原理與此相同。

對於Web數據庫服務,CGI接口可以接收對數據庫的各項服務請求,其中包括查詢、修改、添加、刪除等服務,然後將結果返回給Web服務器。CGI數據庫管理接口程序的常用編程工具有Visual Basic,Shell Script,Perl,Java以及C C++等。

(6)構件技術:DCOM與CORBA

由於同一個軟件不能在不同的平台上使用,給Web上的應用程序帶來了不少麻煩。TCP IP已經成為了網絡上的標準協議,使得異種網絡可以互聯。人們也希望能找到一個操作係統級的“TCP IP”,使二進製的應用程序隻要遵循一種標準,就可以在不同的平台上運行。

構件技術是解決這個問題的一個途徑。人們本來希望使用軟件構件解決軟件重用的問題,軟件重用就是希望在一個程序中編寫的功能也能夠在其他的程序中使用,以前的結構化編程和麵向對象的編程技術也都是為了解決這一問題,但它們都是在源代碼級的複用,而構件技術是二進製級,即希望在一個操作係統平台上編譯的構件,也能在其他操作係統上運行。軟件構件的設想來自無線電中的集成電路:使用者不必過問封閉芯片的內部細節,隻根據其接口特性進行維護、升級和重構,以此提高係統的計算能力,減少升級、維護費用。軟件構件又稱為軟件部件或軟件組件,是具有特殊計算功能的、獨立的軟件模塊,這種軟件模塊按照一定的接口規範可以實現互操作,進而完成軟件係統的集成,構件軟件(component software)技術,是一種以軟件構件組合起來建立應用係統的技術,它涉及支持這種應用的開放式構件庫,以及把庫中構件組合起來的應用開發工具、標準和環境。

盡管當前軟件構件已在軟件複用上呈現巨大優勢,但時至今日,軟件構件尚無確切定義。在實際應用中,隻有兩種被產業界普遍接受的標準,即OMG(object management group,對象管理組織)的CORBA(common object request broker architecture,公共對象請求中介代理結構)和Microsoft的COM DCOM(distributed common object model,分布式公共對象模型)。這兩種標準提供了相應構件軟件的底層支持,它們所定義的軟件構件都在應用軟件層上(二進製級)。除此底層標準外,還有構架在它們之上的應用技術體係,即以CORBA為基礎的Opendoc和以COM DCOM為基礎的OLE和ActiveX。當前,CORBA得到OMG組織成員和產業界的廣泛支持,而COM DCOM則因為Microsoft係列及其應用產品的普及而得到廣泛應用。二者孰優孰劣,盡管世界上很多專業討論組、軟件製造商們眾說紛紜,也已經形成了不少值得借鑒的觀點,但結論仍然是模糊的,決定權要看用戶的選擇。