1. บทนำ
สภาพแวดล้อมการรันสคริปต์ฝั่งเซิร์ฟเวอร์นั้นเรียบง่ายและใช้งานง่าย ไม่จำเป็นต้องรวบรวมและเชื่อมต่อ สคริปต์สามารถรันได้โดยตรงบนฝั่งเซิร์ฟเวอร์ และรองรับผู้ใช้หลายรายและหลายเธรด และมีการใช้กันอย่างแพร่หลาย ในการพัฒนาเว็บ ส่วนประกอบฝั่งเซิร์ฟเวอร์แตกต่างจากส่วนประกอบฝั่งไคลเอ็นต์ ส่วนประกอบฝั่งไคลเอ็นต์จะถูกส่งผ่านเครือข่าย โดยอาศัย HTML ในการทำงาน และพร้อมใช้งานบน IE เท่านั้น แต่ส่วนประกอบฝั่งเซิร์ฟเวอร์ทำงานบนฝั่งเซิร์ฟเวอร์และดำเนินการต่างๆ บนเซิร์ฟเวอร์ ดังนั้นเบราว์เซอร์ทั้งหมดจึงสามารถเพลิดเพลินได้ และขึ้นอยู่กับเซิร์ฟเวอร์มากกว่าเบราว์เซอร์ อย่างไรก็ตาม เนื่องจากสคริปต์ ASP อยู่ในรูปแบบข้อความธรรมดา ผู้ที่เป็นอันตรายจึงสามารถดูเนื้อหาของเพจที่พวกเขาไม่ควรเห็นผ่านซอร์สโค้ดได้อย่างง่ายดาย ดังนั้นการปกป้องซอร์สโค้ด ASP จึงมีความสำคัญมาก การห่อหุ้มโค้ด ASP ลงใน DLL ไม่เพียงแต่ช่วยเพิ่มความเร็วในการประมวลผลโค้ด ASP เท่านั้น แต่ยังช่วยปกป้องโค้ดต้นฉบับอีกด้วย เมื่อมีการร้องขอให้ IIS รันโปรแกรม ASP ก่อนอื่นมันจะค้นหาโค้ดระหว่างแท็กในไฟล์ ASP และรันมัน (อาจเป็นโค้ดที่อยู่ระหว่างนั้นก็ได้) หากเคยเรียกโปรแกรม ASP นี้มาก่อนก็จะใช้โปรแกรมที่คอมไพล์แล้วในหน่วยความจำเพื่อส่งคืนโค้ด HTML ให้กับผู้ใช้ ถ้าไม่เช่นนั้นก็จะคอมไพล์ใหม่ สิ่งนี้ช่วยประหยัดทรัพยากรเซิร์ฟเวอร์ได้อย่างมาก
2. วิธีการนำไปใช้
เริ่มต้น VB ของคุณและเลือกไอคอน ActiveX ไอคอนนี้สามารถพบได้ในโครงการใหม่! VB จะให้ชื่อโครงการเริ่มต้น (project1) และชื่อคลาส (class1) ก่อนที่จะเริ่มต้น โปรดยืนยันก่อนว่าเรามีไลบรารี Microsoft ActiveX Data Object 2.0 ซึ่งมีประโยชน์มากในโปรแกรมของเรา เลือก "โครงการ" จากเมนู จากนั้นเลือก "อ้างอิง" หน้าต่าง "อ้างอิง" จะปรากฏขึ้น เลือกไลบรารี Microsoft ActiveX Data Object 2.0
ตอนนี้เรามีโปรเจ็กต์ของเราเอง (โปรเจ็กต์ 1) และชื่อคลาส (คลาส 1) เราจะใช้ชื่อของพวกเขาเพื่ออ้างถึงส่วนประกอบนี้ในโค้ด ASP ในอนาคต ใน ASP เราพูดแบบนี้ดังนี้:
ตั้งค่า ObjReference = Server.CreateObject("ProjectName.ClassName")
เพื่อใช้วิธีการ ASP ในคลาส คุณต้องเขียนฟังก์ชันการเริ่มต้นและการสิ้นสุดในคลาสนี้ ป้อนรหัสต่อไปนี้: ในรายการโปรแกรม
Private Sub Class_Initialize() และ Private Sub Class_Terminate() ใน Class1.cls
ทำให้ฟังก์ชันหลักในโค้ด ASP กลายเป็นไดนามิกลิงก์ไลบรารี (.dll) โดยซ่อนซอร์สโค้ด ASP ไว้บางส่วน ตัวอย่างเช่น: รหัสที่ป้อนใน Global.bas และ Class1.cls ในรายการโปรแกรม (หน้าที่หลักของรหัสคือการดึงข้อมูลบันทึกในฐานข้อมูลและแสดงผล)
เลือกไฟล์ → สร้าง article.dll → เลือกไดเร็กทอรีที่จะบันทึกในเมนูแบบเลื่อนลงของ VB ค้นหา article.dll และคัดลอกไปยังโฟลเดอร์ system32 ของดิสก์ระบบ ขั้นตอนสุดท้ายคือการลงทะเบียนไฟล์ DLL เลือกเรียกใช้ในเมนูเริ่มแล้วป้อน regsvr32 c:winntsystem32article.dll
3.
รหัสในรายการโปรแกรม Global.bas:
objContext สาธารณะเป็น ObjectContext
แอปพลิเคชันสาธารณะเป็น ASPTypeLibrary.Application
เซิร์ฟเวอร์สาธารณะเป็น ASPTypeLibrary.Server
เซสชันสาธารณะเป็น ASPTypeLibrary.Session
การตอบสนองสาธารณะเป็น ASPTypeLibrary.Response
คำขอสาธารณะเป็น ASPTypeLibrary.Request
รหัสใน Class1.cls:
Class_Initialize ส่วนตัว ()
บนข้อผิดพลาดดำเนินการต่อ
ชุดถัดไป objContext = GetObjectContext
ตั้งค่าแอปพลิเคชัน = objContext.Item ("Application")
ตั้งค่าเซิร์ฟเวอร์ = objContext.Item ("เซิร์ฟเวอร์")
ตั้งค่าเซสชัน = objContext.Item ("เซสชัน")
ตั้งค่าคำขอ = objContext .Item("Request")
Set Response = objContext.Item("Response")
สิ้นสุดย่อย
Private Sub Class_Terminate()
เมื่อเกิดข้อผิดพลาดดำเนินการต่อ ตั้ง
ค่าแอปพลิเคชันถัดไป = ไม่มี
การตั้งค่าเซิร์ฟเวอร์ = ไม่มี
การตั้งค่าเซสชัน = ไม่มี
การตั้งค่าคำขอ = ไม่มี
การตั้งค่าการตอบสนอง = ไม่มี
การตั้งค่า objContext = ไม่มีสิ่งใด
สิ้นสุดย่อย
AspClassInit ย่อยสาธารณะ ()
บนข้อผิดพลาด GoTo
ตั้งค่าข้อผิดพลาด conn = Server.CreateObject ("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"แหล่งข้อมูล = " & Server.MapPath ("Article .mdb")
conn.Open strcon
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from Article order by ArticleID desc"
rs.Open sql, conn, 1, 1
Response.Write "<html> " & vbCrLf
การตอบสนองเขียน "<head>" & vbCrLf
การตอบสนองเขียน "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">" & vbCrLf
Response.Write "<title>ระบบการจัดการบทความ-CSSTUDIO</title>" & vbCrLf
การตอบกลับเขียน "</head>" & vbCrLf
การตอบสนองเขียน "<body bgcolor=""#FFFFFF"" topmargin=""0"">" & vbCrLf
การตอบสนองเขียน "<table width=""100%"" border=""0"" cellpadding=""2"" cellspacing=""0"">" & vbCrLf
การตอบกลับเขียน " <tr>" & vbCrLf
Response.Write " <td width=""742"" height=""20"">ชื่อบทความ</td>" & vbCrLf
Response.Write " <td width=""90"">คลิก</td>" & vbCrLf
Response.Write " <td width=""145"">เพิ่มวันที่</td>" & vbCrLf
การตอบกลับเขียน " </tr>" & vbCrLf
การตอบกลับเขียน "</table>" & vbCrLf
ในขณะที่ไม่ใช่ rs.EOF และแถว < rs.PageSize
การตอบสนองเขียน "<table width=""100%"" border=""0"" cellspacing=""0"" cellpadding=""0"">" & vbCrLf
การตอบกลับเขียน " <tr>" & vbCrLf
Response.Write " <td width=""747"" height=""20"">☆<a href=""view.asp?id="
Response.เขียน rs("ArticleID")
การตอบกลับเขียน """>" & vbCrLf
ตอบกลับเขียน " "
Response.Write rs("หัวข้อ")
การตอบกลับเขียน "</a></td>" & vbCrLf
การตอบกลับเขียน " <td width=""94"">"
Response.เขียน rs("คลิก")
การตอบกลับเขียน "</td>" & vbCrLf
การตอบกลับเขียน " <td width=""148"">"
Response.Write rs("เพิ่มวันที่")
การตอบกลับเขียน "</td>" & vbCrLf
การตอบกลับเขียน " </tr>" & vbCrLf
การตอบกลับเขียน "</table>" & vbCrLf
rs.MoveNext
เวนด์
การตอบกลับเขียน "</body>" & vbCrLf
Response.Write "</html>" & vbCrLf
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
Exit Sub
ข้อผิดพลาด:
ถ้า Err.Number = -13572468 จากนั้นออกจาก Sub
Resume Next
End Sub
รหัสใน index.asp หลังจากใช้ article.dll:
<% Dim AspTransBuilderObject
Set AspTransBuilderObject = Server.CreateObject("article.Class1")
AspTransBuilderObject.AspClassInit
ตั้งค่า AspTransBuilderObject = Nothing%>
รหัสใน index.asp ก่อนใช้ article.dll:
<% ตั้งค่า conn=Server.CreateObject("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"แหล่งข้อมูล = " & Server.MapPath("Article.mdb")
conn.Open strcon %>
<% Set rs = Server.CreateObject ("ADODB.Recordset")
sql="select * from Article order by ArticleID desc"
rs.Open sql, Conn,1,1 %>
<html>
<หัว>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ระบบการจัดการบทความ-CSSTUDIO</title>
</หัว>
<body bgcolor="#FFFFFF" topmargin="0">
<ความกว้างของตาราง = "100%" border = "0" เซลล์แพดดิ้ง = "2"
ระยะห่างของเซลล์ = "0">
<tr>
<td width="742" height="20">ชื่อบทความ</td>
<td width="90">คลิก</td>
<td width="145">เพิ่มวันที่</td>
</tr>
</ตาราง>
<% ในขณะที่ไม่ใช่ Rs.Eof และแถว<Rs.PageSize %>
<ความกว้างของตาราง = "100%" border = "0" ระยะห่างระหว่างเซลล์ = "0"
เซลล์แพ็ดดิ้ง="0">
<tr>
<td width="747" height="20">☆<a href="view.asp?id=<%
= rs("รหัสบทความ") %>">
<% =rs("หัวข้อ") %></a></td>
<td width="94"><% = rs("คลิก") %></td>
<td width="148"><% = rs("เพิ่มวันที่") %></td>
</tr>
</ตาราง>
<% Rs.MoveNext
เวน %>
</ร่างกาย>
</html>
<% rs.ปิด
ตั้งค่า rs=nothing
เชื่อมต่อปิด
ตั้งค่า conn=ไม่มีอะไร %>
4. บทสรุป
เนื่องจากโค้ดเหล่านี้ทำงานบนฝั่งเซิร์ฟเวอร์ ไคลเอ็นต์จึงไม่จำเป็นต้องติดตั้งอะไรเลย นี่เป็นเพียงตัวอย่างเล็ก ๆ ของสิ่งที่สามารถทำได้ด้วย ActiveX DLLs คุณสามารถเขียนส่วนประกอบที่ใหญ่ขึ้นของคุณเองได้ และคุณยังสามารถใช้ตัวควบคุมต่างๆ ใน VB ได้อีกด้วย มาใช้ส่วนประกอบเพื่อขยายการทำงานของโปรแกรมของเรากันดีกว่า ฉันหวังว่าจะเห็นส่วนประกอบเพิ่มเติมจากคนจีนของเรา ฉันหวังว่าบทความนี้สามารถใช้เป็นจุดเริ่มต้นได้