Active Server Pages

Active Server Pages

動態伺服器網頁(Active Server Pages),由微軟公司開發的伺服器端運行的腳本平台,它被Windows下Internet Information Services (IIS)的程序所管理。通過ActiveX server 的技術讓不同的用戶能有不同的畫面,或需要讓他們可以訪問伺服器 (server)上的數據時,使用ASP3.0中提供了五個自帶的對象創建模擬和安全性的動態內容,來協助程序員隱藏複雜的溝通機制,讓程序員可以專註在解決問題和應用之上,這樣可以更快速地開發動態網頁的同時每一個組件都是可以由一組富有經驗的程序員根據動態網頁最常用的功能而獨立開發。

簡介


五個組件包括:
Application:在一個 ASP-based application 讓不同用戶共享信息。
Request:從用戶處理取得信息
Response:將信息送給用戶
Server:提供一些 Web Server 的工具
Session:存儲在一個 session 內用戶的信息

ASP 的特色


ASP隱藏了網頁伺服器與瀏覽者之間溝通的繁瑣機制的同時也基於script base的特性,網頁撰寫員可以專心撰寫應用的程序的邏輯部份,再者ASP也像 HTML 般通過撰寫程序來實時測試網頁是否安全地運行,而不必擔心程序和伺服器不能溝通的問題,另外因為那些 script 是於發送前於伺服器中先行轉譯處理成為HTML后再而發送至代理伺服器邊的動態網頁技術,不必擔心瀏覽器的支持性及網頁撰寫員的程序邏輯像 client-side script 會被盜用,因此最終瀏覽者只會是使用 HTML 來瀏覽。
利用ASP程序最常用的是Cookies,它利用Session組件實現的。同時還可以利用第三方組件延伸ASP的作用,如利用MailSender組件發送電子郵件。
通過ASP我們可以結合HTML網頁、ASP指令和ActiveX組件創建動態、交互且高效的WEB伺服器應用程序。同時,ASP也支持VBScript和JScript等腳本語言,默認為VBScript。其中JScript是微軟公司的ECMAScript標準的實現,並且有自己的擴展。
[編輯]對象的支持
ASP對 COM 的支持會允許撰寫員使用 server component(或OLE Automation server)。通過它撰寫程序可以發展自己的對象,或將把程序轉成 Web-base 的介面。
[編輯]狀態 (State) 的管理
狀態管理是ASP的重要功能之一,原因為HTTP是一個stateless的協議,當有匿名的 request進入時,瀏覽者無法辨認這些的request 是否安全,或那些request 之間的關聯性時,便無法通過瀏覽者取得信息如帳戶及密碼等,對交易特性的 Web 應用程序造成了阻礙。因此ASP通過 cookie的包裝和使用讓瀏覽者可以簡單地管理眾多用戶名稱的不同狀態。

版本


ASP 目前最新的版本為 3.0,與Windows 2000 一起發行,並內植於 IIS 5.0 中。
ASP 1.0 內含於 Windows NT 4.0 Service Pack 3 (IIS 3.0) 發行。
ASP 2.0 內含於 Windows NT 4.0 Option Pack,與 IIS 4.0 一起亮相。
自 ASP 3.0 發行后,除了各版本對它的安全性或問題修補外,對主要功能都沒有再進一步的更新。 Windows Server 2003 發行的 ASP 也是 3.0 版本。
其後繼者 ASP+(即 ASP .NET),已內含於 .NET Framework 中持續演化。

原理


ASP是經過伺服器解析之後再向網頁瀏覽器返回數據,所以有了ASP就不必擔心客戶的瀏覽器是否能運行你所編寫的代碼。因為所有的程序都將在網頁伺服器端執行,包括所有嵌在普通HTML中的腳本程序。當程序執行完畢后,伺服器僅將執行的結果返回給客戶瀏覽器,這樣也就減輕了客戶端瀏覽器的負擔,大大提高了交互的速度。
由於代碼是需要經過伺服器執行之後才向瀏覽器發送的,所以在客戶端看到的只能是經過解析之後的數據,而無法獲得源代碼,故編寫者不用擔心自己的源代碼會被別人剽竊。但不排除黑客利用系統漏洞竊取伺服器端的ASP源代碼。
基於這樣的解析方式,也導致運行ASP頁面相對於普通的HTML頁面要慢一點。因為普通的HTML頁面只需要瀏覽器就能夠解析,而ASP則必須是伺服器將整頁的代碼都執行一遍之後再發送數據。
ASP提供與資料庫的交互,如Microsoft SQL Server、Microsoft Access、MySQL和Oracle,比較流行的是ASP和Microsoft SQL Server的組合。

範例


ASP程序(包括與資料庫連接的部分)都是嵌入在普通HTML和其他客戶端語言中的。例如
你好!
<%
' 這一行註釋,將不會顯示
Response.write "Baidu搜索引擎" ' 這行將在瀏覽器中輸出“Baidu搜索引擎”
%>
從中我們可以看出,ASP語言是嵌入在“<%...%>”之間的部分。而這個程序最終結果將是:Baidu搜索引擎