# เอเอสพี
เอเอสพี  เป็นเทคโนโลยีประเภท Server-Side Script (โปรแกรมที่ทำงานบนเครื่อง Server) ที่นิยมใช้อย่างแพร่หลาย สร้างโดยบริษัท ไมโครซอฟท์ สำหรับระบบปฏิบัติการ ไมโครซอฟท์ วินโดวส์ ซึ่งใช้ร่วมกับโปรแกรม Internet Infomation Service หรือ IIS. ASP นั้นใช้ภาษาสคริปต์ VBScript, JScript หรือ PerlScript ในการเขียน โดยเว็บเพจที่ใช้ ASP เขียน จะระบุเป็นตระกูลไฟล์ที่ลงท้ายด้วย .asp ซึ่ง ASP ยังสามารถใช้เขียนเพื่อควบคุมฐานข้อมูลต่างๆ ผ่าน ODBC ADO DAO JET และอื่นๆ

ปัจจุบันนี้ไมโครซอฟท์ได้ยกเลิกการพัฒนาเทคโนโลยี ASP แล้วและได้เปลี่ยนเป็น ASP.NET แทน. ซึ่งคำว่า Classic ASP นั้นอาจใช้เรียกแทนเอเอสพีเดิม

 แนะนำ ASP 
ASP (Active Server Page) เป็นเทคโนโลยีที่ทำงานทางฝั่งด้านเซิร์ฟเวอร์ ที่ถูกออกแบบมาให้ง่ายต่อการพัฒนาแอปพลิเคชันผ่านเว็บเซิร์ฟเวอร์สำหรับนักพัฒนาเว็บไซต์ 
การใช้งาน ASP สามารถกระทำได้โดยเขียนคำสั่งหรือสคริปต์ต่างๆ ในรูปของเท็กซ์ไฟล์ธรรมดาทั่วๆไป แล้วนำมาเก็บไว้ที่เซิร์ฟเวอร์ เมื่อมีการเรียกใช้งานจากเบราว์เซอร์ ไฟล์เอกสาร ASP ก็จะถูกแปลโดย Server Interpreter แล้วส่งผลที่ได้ส่งกลับไปเป็นภาษา HTML ให้เบราว์เซอร์ที่เรียกดังกล่าว 
เนื่องจาก ASP สามารถรองรับได้หลายภาษา เช่น VBScript ,Jscript ,Perl และภาษาสคริปต์อื่นๆ ดังนั้นนักพัฒนาเว็บไซต์จึงไม่มีความจำเป็นต้องมีความรู้หรือต้องศึกษาในทุกภาษาเนื่องจาก ASP ได้ถูกออกแบบมาให้ขึ้นกับความรู้ของนักพัฒนาเว็บไซต์นั่นเอง 
การทำงานของโปรแกรม ASP นั้นจะทำงานอยู่ที่ฝั่งของ Server เท่านั้น เราจึงเรียกว่าเป็นการทำงานแบบ Server Side ซึ่งจากการทำงานทางฝั่ง Server ของ ASP นั้น ทำให้ Web Browser ของฝั่ง Client จะทำหน้าที่เพียงรับผลลัพธ์ที่ได้จากการทำงานทางฝั่ง Server เท่านั้น โดยอ้าย

 รุ่นของ ASP 
ASP มีการเปิดตัวรุ่นใหม่หลักๆ อยู่ 4 ครั้ง ดังนี้:
 ASP 1.0 (ติดตั้งมาพร้อมกับ IIS 3.0) ในเดือนธันวาคม ค.ศ. 1997,
 ASP 2.0 (ติดตั้งมาพร้อมกับ IIS 4.0) ในเดือนกันยายน ค.ศ. 1998,
 ASP 3.0 (ติดตั้งมาพร้อมกับ IIS 5.0) ในเดือนพฤศจิกายน ค.ศ. 2000,
 ASP.NET (เป็นส่วนหนึ่งของ .NET Framework) ในเดือนมกราคม ค.ศ. 2002 
 ASP.NET 2.0 (เปิดตัวเมื่อ 7 พฤศจิกายน, ค.ศ. 2005).

 ตัวอย่างการใช้งาน ASP (VBScript) 
ตัวอย่างในหน้านี้ เป็นการทำงานแบบ Server-Side Script ร่วมกับการใช้ HTML ดังนี้:

<nowiki>
<%
' บรรทัดนี้ไม่มีความหมายอะไร; นอกจากเป็นแค่ หมายเหตุ (comment).:

Response.Write ("Wikipedia") ' โค้ดในบรรทัดนี้จะพิมพ์คำว่า "Wikipedia" ไปในเว็บเบราว์เซอร์.

%>
</nowiki>

<nowiki>
<% 
Dim X     ' ตรวจสอบทุกครั้งว่าคุณได้ประกาศตัวแปรที่จะเรียกใช้

X = 1     ' X คือค่าที่เราจะใช้ในตัวอย่างนี้

If X = 1 Then
%>

<b>X มีค่าเท่ากับหนึ่ง</b>

<% Else %>

<b>X มีค่าไม่เท่ากับหนึ่ง</b>

<% End If %>

</nowiki>

รหัสที่อยู่ระหว่าง <% ... %> จะผ่านการทำงานจากเซิร์ฟเวอร์ โดยจะแสดงผลเป็น HTML คือ <b>X equals one</b> เมื่อค่า X บนฝังเซิร์ฟเวอร์ มีค่าเท่ากับ 1.

ในการที่เราเปิดและปิดแท็ก <% %> บ่อยเท่าไรก็ไม่เป็นผล เพราะนั้นเป็นแค่การเปิดและปิดการทำงานของ ASP engine เท่านั้น. จากตัวอย่างด้านบน เราสามารถหาหนทางอื่นได้ เช่น:

<nowiki>
<%
Dim strWikiPedia

strWikiPedia = "free"

' นี่คือตัวอย่างของ ASP VBScript ล้วนๆ เพื่อทำงาน...

If strWikiPedia = "free" then

   Response.write "ใช้งานได้ฟรี โดยไม่ต้องใช้ บัตรเครดิต"

Else

   Response.write "หาบัตรเครดิตมาจ่ายซะ หรือคลิกที่แบนเนอร์"

End If
%>
</nowiki>

หลังจากที่เราเริ่มใช้ "ค่าคงที่" ไปแล้ว, คราวนี้เราจะใช้เรียกข้อมูลจากวัตถุ. การเรียกข้อมูลจากวัตถุเป็นสิ่งที่หน้าสนใจอย่างหนึ่ง เราสามารถเรียกมันได้จาก "ข้อความสอบถาม" (query string) หรือจาก "ฟอร์ม" (form) ที่ส่งเข้ามา ซึ่งคุณควรจะรู้ความแตกต่างระหว่าง "post" และ "get". "get" จะถูกตั้งค่าให้อยู่ในข้อความสอบถาม (Request.QueryString ). "post" จะถูกตั้งค่าในฟอร์ม (Request.Form ).  ดังตัวอย่าง ดังนี้.

<nowiki>
<form action="pagename.asp" method="get">
   <input type="text" name="Name" /><br />
   <input type="Submit" />
</form>
<%

strName = request.querystring ("Name") ' ทำการเรียกตัวแปรชื่อ Name จากฟอร์ม

If strName <> "" Then ' ถ้าค่า "strName" ไม่มีค่าเท่ากับ "" (ค่าว่าง) แล้ว

   ' ในบรรทัดถัดไป ให้เขียนคำว่า "ยินดีต้อนรับเข้าสู่วิกิพีเดีย ",
   ' แล้วตามด้วยชื่อของผู้เปิด.

   Response.write "ยินดีต้อนรับเข้าสู่วิกิพีเดีย " & strName

End If
%>
</nowiki>

โค้ดด้านบนที่กล่าวมา เป็นการขอให้ผู้ใช้ ใส่ชื่อในฟอร์ม.  เมื่อผู้ใช้กด "Submit", ฟอร์มจะทำการเปิดหน้านั้นใหม่อีกครั้ง แล้วจึงแสดงชื่อ และข้อความต้อนรับสู่วิกีพีเดีย
จากการสังเกตโค๊ดด้านบน, คุณอาจสังเกตว่า โค๊ดที่เขียนขึ้นนี้ คล้ายการพัฒนาโปรแกรมทั่วๆ ไป ใน Visual Basic 6.0
แต่ในที่นี้ โครงสร้างการเขียน (syntax) ของการแสดงข้อความออกมาดูเปลี่ยนไป. Response.write เป็นคำสั่ง ในการเขียนบ้างอย่างไปยังเบราว์เซอร์เครื่องลูกข่าย.

ในทำนองเดียวกัน, Response.clear เป็นคำสั่งในการล้างเนื้อหาที่เก็บไว้ในบัฟเฟอร์ (buffer) , ที่เก็บข้อมูลสำรอง (temporary memory storage location).

 ย้าย ASP ไปยัง ASP.NET 1.x 
ASP to ASP.NET v1.x Migration Assistant เป็นโปรแกรมที่ช่วยคุณย้ายหน้า ASP เดิมไปยังเว็บเอ็พพลิเคชันบน ASP.NET. เนื่องจากว่าโครงสร้าง และรูปแบบการพัฒนาบน ASP.NET นั้นแตกต่างกันมาก การโยกย้ายนั้นไม่ใช่ระบบอัตโนมัติทั้งหมด แต่จะช่วยการย้ายให้รวดเร็วขึ้นในบางขั้นตอนที่จำเป็น.

 Apache::ASP 
Apache::ASP เป็นโปรแกรมในการทำงานของ ASP บนเซิร์ฟเวอร์ Apache ที่ปกติจะทำงานเฉพาะกับภาษาประเภท Perl เท่านั้น ซึ่งทำให้เรา สามารถใช้งาน ASP รวมไปถึงการใช้ Session และ ยังคงสามารถใช้ภาษา Perl ได้