ASP的起源

來源:互聯網
上載者:User

    Microsoft的動態伺服器網頁(Active Server Pages,ASP)技術目前已發展到了3.0版。對很多人來說,用ASP來建立Windows伺服器平台上的動態Web網頁、整個網站和基於Web的應用程式已經成為極其自然而然的方法。在瀏覽器地址欄中,副檔名.ASP同表示動態建立的網頁的副檔名.pl或.cgi一樣,已被瀏覽者所接受。事實上,對於在微軟的作業系統上工作的Web程式員來說,ASP正在變成一種不再令人激動的技術,而僅是一種工作方式。
    這種看法的改變體現了一種技術的逐步成熟。由於ASP的應用程式的數量日益增多,ASP的工具也在日益增加,同時有越來越多的第三方開發商開發出一系列基於ASP或使用ASP的附加功能模組、ActiveX伺服器組件,甚至成套的“自己做( do-it-yourself )”Web網站工具。人們幾乎不再關注微軟公司最初使用的奇特的名字。現在ASP在行業內已經成為一個公認的名詞。
    這是一本關於ASP成熟技術最新版本的書,其目的是期望讀者在一定程度上熟悉ASP的組成,瞭解ASP能夠做什麼及如何使用它。本書的目的不僅是使讀者開始使用ASP,並且還要使讀者瞭解ASP新版本的變化和它能夠做到而早期版本不能做到的事情。
    這並不意味著讀者必須成為專家才能閱讀本書,但希望讀者已瞭解Web工作的基本方式和指令碼語言的相關知識,如VBScript或JavaScript。
    本書將更多地從研究和技術的角度討論ASP,使讀者對ASP如何工作有個更好的理解,有助於讀者編寫的ASP代碼達到更高的水平。ASP 3.0核心可能沒有很多本質上的改變,但有很多令人激動的使用方法。
    本節先簡單回顧一下ASP是如何產生的,以及ASP為什麼能夠在Web程式開發人員中流行。首先從瞭解Web的基礎和動態Web頁面的發展開始。把ASP與其他許多能夠提供這種動態化的技術相比較,由此深入瞭解ASP的發展情況,同時瞭解Web應用程式的發展,而不僅限於瞭解單純的動態Web 網站。
    HTML的起源
    全球資訊網( World Wide Web,WWW )起源於設在瑞士的CERN實驗室。Tim Berners-Lee及其開發小組,花費大量的時間,研究建立了一種以一定格式傳輸資訊的方法,這就是眾所周知的超文字傳輸通訊協定 (HTTP)(簡稱為HTTP)。該協議使用了超文字標記語言 (HTML)(HTML)。HTML設計簡單,結構靈活,允許在Web瀏覽器及其他相容的應用程式中顯示文本及映像。文檔的某些部分可以成為超連結,即當其被選擇時,可以顯示不同的頁面或同一頁面的不同部分。
    標記語言是由特定字元分隔的基本元素,指定基本元素中所包含的文本或其他條目如何顯示。例如<EM>This is some Emphasized text</EM>。HTML是一種廣泛基於標準通用標記語言 (SGML)(Standard Generalized Makeup Language,SGML )的標記語言。SGML是描述語言的一種方法,其本身並不是用來建立網頁的語言。
    HTML語言從簡單開始,不斷增加一些附加的功能,直至形成了今天所用的HTML 4.0版本。這些新增的特性提供了更靈活的文本字型風格(例如< FONT >元素),以及對輸出頁面配置的更多控制(如表單和幀的使用)。
    早期的網頁所缺乏的是動態內容。剛一開始時,這還不是一個問題,因為HTML的開發是為了在電腦、網路及作業系統之間顯示和傳送資訊(特別是技術和科學資訊)。這種標準化的文檔僅是一種簡單的文本和標記,其中的映像和其他非文本的內容以單獨檔案形式存放,它們可以在各種網路上自由傳送。另外,由於資訊的格式是固定的,其組成元素的含義也是在HTML中定義好的。對於一個“閱讀器”或瀏覽器應用程式,用任何程式語言在任何平台或作業系統中相對來說是比較容易實現的。
    只要建立這些資訊網頁,文字檔和映像可通過Web伺服器應用程式傳送給使用者,Web伺服器應用程式簡單地從磁碟中讀取它們並且把輸出轉換成能夠在網路中傳送的正確HTTP協議。在客戶或使用者端,瀏覽器接收傳送到的資訊流,並轉換成為能夠顯示的頁面。
    HTML和HTTP除了具有跨平台特性之外,其最主要的長處就是其文檔可以包含有關內容的相關資訊、作者意欲表達的方式等。它可以被應用程式閱讀而不一定顯示出來:例如盲人可以使用特殊的程式把它轉換成為語音。同樣,其內容可以特殊方式顯示出來,以便那些視力差或有其他缺陷的人們更容易進行訪問。因此,技術界經常用“使用者代理程式” (user agent)這一通用術語代替“瀏覽器” ( browser )。
    動態網頁面的起源
    對於新類型的文檔內容,特別是那些設計成為允許在頁面上輸入資訊的文檔(例如HTML中< INPUT >等的表單控制項),開發一種能夠讀取這種資訊並加以利用的應用程式成為必然。很明顯,傳遞從其他應用程式中得到的內容,特別是特定類型的資料庫的內容,需要一種新的方法。每次都需要重寫一個基於文本的頁面,對於提供即時性很強的資訊當然不是一個理想的方法。
    對於Web伺服器來說,提供一個介面使其他應用程式能夠與之相連成為一種常用的方法。通過這個介面,定製的可執行程式能夠接收來自用戶端的資訊,包括通過點擊超連結或在瀏覽器中鍵入統一資源定位器( URL )所提出的頁面請求的細節。應用程式對用戶端的請求能夠產生相應的響應,而不是從伺服器磁碟上讀取文本或標記檔案。從這些早期方法開始,逐漸形成一套完整的系列方法動態建立網頁,以響應使用者的請求或資訊的變化。
    用於這些應用程式的介面仍然在使用,並被稱為公用網關介面(Common GatewayInterface,CGI ),這是一種可用任何語言(如C語言)實現的標準。它產生於那些使用cgi-bin目錄的應用程式(這裡“bin”代表二進位代碼,而不是文本)。早期的應用程式都是編譯後的程式,通常用C或C++編寫。然而這自然要求懂得C語言的編程方法,並且每當對程式做很小的文字上或標記上的變動,都必須重新編譯、重建可執行檔,這就限制了CGI和動態網頁面的使用。
    取而代之的是開發了一種用指令碼語言建立網頁的方法,這種語言就是實用摘要和報告語言(Practical Extraction and Reporting Language),或簡稱為Perl,它允許資訊的建立者以一種非常類似於簡化版C或C + +的語言編寫代碼。在Perl指令碼中,可以“寫”文本和標記,用標準輸入(stdin)和標準輸出(stdout )函數通過CGI與Web伺服器通訊,輸出到瀏覽器。
    Perl在Web上仍然是一種流行的語言,特別是在基於UNIX或Linux的系統上。然而這種語言掌握起來不是很容易,特別是對於那些沒有C或C++語言基礎的Web開發人員更是如此。現在,一些新的指令碼語言出現了,使建立網頁更加容易。我們主要看一下它們如何使開發人員的工作變得更加容易。
    1. 伺服器端指令碼技術
    對於伺服器端的指令碼需要用某種類型的中間應用程式,或外掛程式程式來串連。它必須能夠接受使用者請求,讀取並解釋合適的基於伺服器的指令檔,接著建立輸出頁,並傳送給Web伺服器,在那裡作為響應發送給用戶端。
    在某些情況下,這個任務劃分為兩個部分:
    一個應用程式或外掛程式程式處理與Web伺服器的往來通訊(一般通過CGI )。
    另一個處理解釋和執行指令碼。
    這就是ASP中的情況,指令碼引擎的使用與在其他環境下相同。
    Perl是第一個流行的伺服器端指令碼語言,但是目前已經出現很多其他的語言。在UNIX及基於Linux的系統上,一種新的稱之為PHP(Personal Home Page)的語言正變得越來越流行。還有一些語言的目標是一些特定類型的使用者,例如T C L就是一種在科學環境下使複雜的數學運算簡單化的語言。
    2. 微軟的動態網頁面建立技術
    微軟隨Windows NT 3.51推出了他們的Web伺服器軟體—Internet Information Server(IIS)1.0。這是一個提供了很多功能的相當標準的軟體,它支援CGI。然而微軟也提供了另外一個介面,允許使用C和C++等編譯語言產生可執行檔,使操作更加高效。這就是Internet伺服器應用編程介面(Internet Server Application Programming Interface,ISAPI )。它能夠提供比傳統
Perl引擎和其他技術所依賴的stdin和stdou t更為廣泛的對Web伺服器的訪問。
    此後微軟和其他第三方開發商推出了許多能通過ISAPI串連到IIS的應用軟體,這也就是為什麼ASP能夠串連到IIS以及其他微軟伺服器端動態技術。在ASP以前,用得最廣泛的是Internet資料庫連接器(Internet Database Connector,IPC )。ASP為Web開發人員使用微軟的平台開闢了一個新的天地,這使採用資料庫中的資料建立動態網頁更加容易。特別是它引入了模板(template ),即包含了帶有能夠插入資料庫查詢結果的文本和標記的模板檔案。
    現有的(或將過時的)其他微軟伺服器端頁面建立技術有db Web和OLE ISAPI。事實上,db Web就是OLE ISAPI的實現,而對於多數人來說,迄今只是證實了這一技術在實際應用中的不適應性。OLE ISAPI是通過特殊版本的ISAPI介面與IIS通訊的一些COM對象。Web伺服器軟體調用COM對象中單個指定函數並以參數為使用者的請求提供細節。COM對象返回的是作為字串的頁面的文本和標記,然後作為響應發送給用戶端。
    OLE ISAPI首創了COM對象的動態Web頁面建立,為編程人員提供通過編譯的Active XDLL建立動態網頁面的能力。然而它所使用的特定的實現和資料通訊技術對於較小的任務和內部網( intranet )工作缺乏有效性和可擴充性。同時,每當改變頁面的文本和標記時,也需要重新編譯動態連結程式庫。圖1 - 1給出了到目前為止所討論的技術的相互關係。

    3. 動態Web頁面建立方法的比較
    比較動態網頁面建立技術是一個既困難又敏感的任務,然而理解各種介面和與之相相關 App程式的差異性又是很重要的。當建立與Web伺服器互動的應用程式時,涉及到的兩個主要的問題是它們對Web伺服器本身穩定性的影響,以及處理多發或並發頁面請求的效率。這
兩個問題是相互聯絡的,又是相互排斥的。
    應用CGI和ISAPI的編譯的可執行應用程式(不是DLL檔案),通常在伺服器電腦上以進程外( out-of-process )方式運行,這就意味它們要作為單獨應用程式運行,佔有單獨的與Web伺服器應用程式不同的記憶體空間。作業系統將其作為一個單獨的進程進行管理,禁止它們訪問本身所佔記憶體以外的記憶體。
    因此,如果一個進程外應用程式失敗,不會影響到Web伺服器。同樣,假如應用程式套件組合含錯誤,企圖直接寫入Web伺服器的記憶體,會因一般性保護錯誤停止運行。進程外應用程式也會因使用者或作業系統的命令而中止,這時代碼會從記憶體中自動卸載。
    因為運行進程外程式意味著訪問Web伺服器記憶體的請求被禁止,所要求的或產生的輸出結果值不能直接傳送給Web伺服器。所以必須執行一種跨進程調用,但這比在同一進程內訪問記憶體要多花費幾倍的時間。對於可執行檔的裝載和卸載時間還有一定的影響。
    相反,應用進程內( in-process )程式—通常是能夠使用ISAPI或OLEAPI介面的DLL (不是單獨的可執行檔),因為其運行在Web伺服器的記憶體空間中,可以直接存取Web伺服器記憶體中的值,這可提供更快的訪問和響應。然而其代碼的錯誤或失敗會影響到Web伺服器。例如DLL檔案中的代碼直接寫入包含Web伺服器作業碼的記憶體空間,可能引起Web伺服器的失敗。其關係如圖1 - 2所示。

    進程外應用程式執行個體是Perl指令碼解譯器和使用ISAP I介面的.exe檔案。進程內組件的執行個體有dbWeb、IDC以及ASP技術。然而,ASP和IIS相互串連的方式還有許多種。因此,先把其他相關技術放在一邊,進一步研究ASP。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。