Active Server Pages

動態伺服器網頁（英文：Active Server Pages，简称ASP），是由微软公司开发的服务器端运行的脚本平台，它被Windows下Internet Information Services (IIS)的程式所管理。透過ActiveX server的技術讓不同的使用者能有不同的畫面，或需要讓他們可以存取服务器（server）上的資料時，使用ASP3.0中提供了五個內建的物件建立模擬和安全性的動態內容，來協助程序员隱藏複雜的溝通機制，讓程序员可以專注在解決問題和應用之上，這樣可以更快速地开发动态网页的同時每一个组件都是可以由一组富有经验的程序员根据动态网页最常用的功能而獨立开发。

 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标准的实现，并且有自己的扩展。

五个內建组件
Application：在一個ASP-based application讓不同使用者共享資訊。
Request：從使用者處理取得資訊
Response：將資訊送給使用者
Server：提供一些Web Server的工具
Session：儲存在一個session內使用者的資訊

 物件的支援 
ASP對COM的支援會允許撰寫員使用server component（或OLE Automation server）。透過它撰寫員可以發展自己的物件，或將把程式轉成Web-base的介面。

透過ADO提供對於資料庫的應用。
透過ActiveX的Scripting.FileSystemObject提供對於檔案的操作。

Session的管理
ASP在Server端Respondse時會經由HTTP的Set-Cookie的header欄位傳送名為ASPSESSIONID的。而用戶端的瀏覽器在收到這個Session ID之後，會在下次的Request時，經由HTTP的Cookie的header欄位再把這個Session ID傳給Server，藉以讓Server區分是同一個瀏覽者，以獲得其專用的Session變數存取。這個機制可應用於帳號登入，在Session TimeOut被清除之前，只要瀏覽者沒關閉瀏覽器，就能持續保持帳號登入的狀態‧

此外，ASP可以經由檔案Global.asa裡的兩個事件處理（Session_OnStart與Session_OnEnd）去控制該瀏覽者Session的建立與結束的額外處理。這可以用來作為統計實際線上人數之用。

 版本 
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和其他客户端语言中的。例如
你好!
<!-- 上面是將“你好!”在瀏覽器中輸出，這是通過HTML實現的 -->
<%
'這一行註釋，將不會顯示
Response.write "Wikipedia!" '這行將在瀏覽器中輸出“Wikipedia!”
%>
ASP語言是嵌入在“<%...%>”之間的部分。而這個程序最終結果將是:

你好！Wikipedia！

 参见 

Microsoft FrontPage

ASP.NET
.NET框架
PHP
JSP

 外部链接 
ASP on MSDN
-{如何從動態伺服器網頁（Active Server Page）模擬使用者}-

應用或比較
asp实践经验记录
Active Server Pages是什么？
ASP.NET與ASP的差異

替代產物
ArrowHead ASP Server（將ASP轉移到Java的平台下去模擬ASP的運作） 
Cloudfoundry ASP
Apache::ASP（在Apache上加上Perl支援後去跑名為ASP的網頁）

Category:微軟伺服器技術
*