ASP Lecture Series (7) การใช้ส่วนประกอบและวัตถุ
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-05-30 19:59:15
ส่วนประกอบ ActiveX เป็นกุญแจสำคัญในการสร้างเว็บแอปพลิเคชันที่มีประสิทธิภาพ ส่วนประกอบจัดเตรียมวัตถุที่ใช้ในสคริปต์เพื่อดำเนินงาน ASP ยังมีวัตถุในตัวที่สามารถใช้ในสคริปต์ได้ หัวข้อนี้อธิบายวิธีการใช้ออบเจ็กต์ที่มาจากส่วนประกอบต่างๆ เช่นเดียวกับออบเจ็กต์ในตัวที่ Active Server Pages ให้มาโดยตรง
เกี่ยวกับส่วนประกอบ
ส่วนประกอบ ActiveX คือไฟล์ที่มีโค้ดที่ทำงานหรือชุดของงาน ส่วนประกอบสามารถทำงานทั่วไปได้ ดังนั้นคุณไม่จำเป็นต้องสร้างโค้ดเพื่อทำงานเหล่านั้นด้วยตัวเอง ตัวอย่างเช่น ส่วนประกอบทิกเกอร์สามารถแสดงราคาหุ้นล่าสุดบนเว็บเพจได้ ASP มาพร้อมกับส่วนประกอบที่พร้อมใช้งาน เช่น ส่วนประกอบการเข้าถึงฐานข้อมูล รับส่วนประกอบเสริมจากนักพัฒนาบุคคลที่สาม หรือคุณสามารถเขียนส่วนประกอบของคุณเองได้
คุณสามารถใช้ประโยชน์จากส่วนประกอบต่างๆ เป็นส่วนประกอบพื้นฐานสำหรับสคริปต์และแอปพลิเคชันบนเว็บ เพิ่งรู้วิธีการเข้าถึงวัตถุที่ส่วนประกอบจัดเตรียมไว้ แม้แต่ผู้เขียนสคริปต์มือใหม่ก็สามารถเขียนสคริปต์ได้โดยไม่ต้องเข้าใจว่าส่วนประกอบทำงานอย่างไร โดยสรุป ส่วนประกอบต่างๆ ช่วยให้คุณสามารถเขียนสคริปต์ที่มีประสิทธิภาพได้โดยไม่ต้องเรียนรู้การเขียนโปรแกรม
หากคุณเป็นนักพัฒนาเว็บแอปพลิเคชัน คุณสามารถสรุปตรรกะทางธุรกิจได้โดยการเขียนส่วนประกอบ ตัวอย่างเช่น คุณสามารถเขียนส่วนประกอบเพื่อคำนวณภาษีการขายสำหรับผลิตภัณฑ์ได้ จากนั้นสามารถเรียกส่วนประกอบนี้ในสคริปต์ที่ประมวลผลใบสั่งขายได้ การคำนวณอัตราภาษีอย่างอิสระระหว่างการประมวลผลคำสั่งซื้อทำให้คุณสามารถอัปเดตเฉพาะส่วนประกอบเมื่อภาษีขายเปลี่ยนแปลงที่ไหนสักแห่ง โดยไม่ต้องเปลี่ยนกระบวนการประมวลผลทั้งหมด คอมโพเนนต์สามารถเขียนในภาษาใดก็ได้ที่รองรับ Component Object Model (COM) เช่น C, C++, Java หรือ Visual Basic ถ้าคุณคุ้นเคยกับการเขียนโปรแกรม COM คอมโพเนนต์ ActiveX คือเซิร์ฟเวอร์ Automation เมื่อต้องการทำงานบนเว็บเซิร์ฟเวอร์ คอมโพเนนต์ ActiveX ไม่สามารถมีองค์ประกอบส่วนติดต่อผู้ใช้แบบกราฟิก เช่นฟังก์ชัน MsgBox ของ Visual Basic
ส่วนประกอบต่างๆ สามารถนำมาใช้ซ้ำได้ เมื่อติดตั้งส่วนประกอบบนเว็บเซิร์ฟเวอร์แล้ว จะสามารถเรียกได้จากสคริปต์ ASP, แอปพลิเคชัน ISAPI, ส่วนประกอบอื่นบนเซิร์ฟเวอร์ หรือโปรแกรมที่เขียนด้วยภาษาอื่นที่เข้ากันได้กับ COM
ส่วนประกอบอินสแตนซ์ที่สร้างวัตถุส่วนประกอบคือโค้ดที่ปฏิบัติการได้ซึ่งอยู่ในไลบรารีลิงก์แบบไดนามิก (.dll) หรือไฟล์ที่ปฏิบัติการได้ (.exe) ส่วนประกอบสามารถจัดเตรียมออบเจ็กต์ตั้งแต่หนึ่งออบเจ็กต์ขึ้นไป รวมถึงวิธีการและคุณสมบัติของออบเจ็กต์เหล่านั้น หากต้องการใช้ออบเจ็กต์ที่ส่วนประกอบจัดเตรียมไว้ให้ ให้สร้างอินสแตนซ์ของออบเจ็กต์และกำหนดชื่อตัวแปรให้อินสแตนซ์ใหม่นี้ อินสแตนซ์ของออบเจ็กต์สามารถสร้างขึ้นได้โดยใช้เมธอด Server.CreateObject ของ ASP จากนั้น ให้ใช้คำแนะนำในการกำหนดตัวแปรของภาษาสคริปต์เพื่อตั้งชื่ออินสแตนซ์ออบเจ็กต์ เมื่อสร้างอินสแตนซ์ออบเจ็กต์ คุณต้องระบุชื่อที่ลงทะเบียน (PROGID) ของอินสแตนซ์ สำหรับส่วนประกอบพื้นฐานที่ ASP จัดเตรียมไว้ให้ PROGID ของอ็อบเจ็กต์สามารถรับได้จากหน้าอ้างอิง
ตัวอย่างเช่น คอมโพเนนต์ Ad Rotator ของ ASP จะวนซ้ำผ่านโฆษณาแบบกราฟิก คอมโพเนนต์ Ad Rotator จัดเตรียมออบเจ็กต์ชื่อ Ad Rotator ซึ่งมี PROGID คือ "MSWC.AdRotator" หากต้องการสร้างอินสแตนซ์ของออบเจ็กต์ Ad Rotator ให้ใช้คำสั่งต่อไปนี้:
วีบีสคริปต์:
<% ตั้งโฆษณาของฉัน = Server.CreateObject("MSWC.AdRotator") %>
เจสคริปต์:
<% var MyAds = Server.CreateObject("MSWC.AdRotator") %>
หากคุณคุ้นเคยกับ VBScript หรือ JScript เป็นอย่างดี คุณจะสังเกตเห็นว่าไม่มีฟังก์ชันภาษาสคริปต์สำหรับการสร้างอินสแตนซ์อ็อบเจ็กต์ใหม่ เช่น CreateObject ใน VBScript หรือ New ใน JScript คุณต้องใช้เมธอด Server.CreateObject ของ ASP มิฉะนั้น ASP จะไม่สามารถติดตามการใช้วัตถุในภาษาสคริปต์ได้
อินสแตนซ์ของวัตถุยังสามารถสร้างได้โดยใช้แท็ก HTML <OBJECT> คุณต้องระบุค่าเซิร์ฟเวอร์สำหรับแอ็ตทริบิวต์ RUNAT และระบุกลุ่มแอ็ตทริบิวต์ ID สำหรับชื่อตัวแปรที่จะใช้ในภาษาสคริปต์ วัตถุสามารถระบุได้โดยใช้ชื่อการลงทะเบียน (PROGID) หรือหมายเลขทะเบียน (CLSID) ตัวอย่างต่อไปนี้สร้างอินสแตนซ์ของวัตถุ Ad Rotator โดยใช้ชื่อที่ลงทะเบียน (PROGID):
<OBJECT RUNAT=รหัสเซิร์ฟเวอร์=MyAd PROGID="MSWC.AdRotator"></OBJECT>
ตัวอย่างต่อไปนี้สร้างอินสแตนซ์ของออบเจ็กต์ Ad Rotator โดยใช้หมายเลขการลงทะเบียน (CLSID):
<OBJECT RUNAT=รหัสเซิร์ฟเวอร์=MyAd
คลาสสิก="Clsid:1621F7C0-60AC-11CF-9427-444553540000"></OBJECT>
การสร้างอ็อบเจ็กต์จากส่วนประกอบ Java Class ActiveX ที่เขียนด้วยภาษา Java สามารถส่งเป็นคลาส Java แทน DLL ได้ หากต้องการใช้ Server.CreateObject เพื่อสร้างอินสแตนซ์ของอ็อบเจ็กต์คลาส Java คลาสจะต้องได้รับการลงทะเบียนเป็นส่วนประกอบ COM โดยใช้โปรแกรม Javareg จากนั้นคุณสามารถใช้ Server.CreateObject กับ PROGID หรือ CLSID
หากอินสแตนซ์อ็อบเจ็กต์ไม่จำเป็นต้องเข้าถึงอ็อบเจ็กต์ในตัว ASP และมีส่วนร่วมในธุรกรรม อินสแตนซ์สามารถเรียกคลาส Java ได้โดยตรงโดยใช้กลไกที่ง่ายกว่าที่จัดเตรียมโดยมอนิเตอร์ Java คุณต้องใช้เครื่องเสมือน Microsoft สำหรับ Java 2.0 (ได้มาจากการกระจายของ Internet Information Server และ Personal Web Server) เพื่อใช้จอภาพ Java
หากคุณต้องการใช้จอภาพเพื่อสร้างอินสแตนซ์ของวัตถุ คุณต้องใช้คำสั่ง VBScript หรือ JScript GetObject และระบุชื่อเต็มของคลาส Java ในรูปแบบ java:classname ตัวอย่าง VBScript ต่อไปนี้สร้างอินสแตนซ์ของวัตถุ Java Date
-
วันที่สลัว
ตั้งวันที่ = GetObject("java:java.util.Date")
-
<p> วันที่คือ <%= date.toString() %>
วัตถุที่สร้างขึ้น โดยการเรียก GetObject แทน Server.CreateObject ไม่สามารถเข้าถึงวัตถุที่มีอยู่แล้วภายใน ASP และไม่สามารถมีส่วนร่วมในธุรกรรมได้
การใช้วัตถุในตัว ASP
ASP มีวัตถุในตัวที่ทำงาน ตัวอย่างเช่น อ็อบเจ็กต์ Request จะเก็บข้อมูลอ้างอิงจากตาราง HTML
การเรียกวิธีการของวัตถุ วิธีการเป็นกิจกรรมที่สามารถทำได้บนหรือใช้วัตถุ ไวยากรณ์ทั่วไปสำหรับการเรียกเมธอดคือ:
พารามิเตอร์ Object.Method
พารามิเตอร์แตกต่างกันไปในแต่ละวิธี
ตัวอย่างเช่น คุณสามารถใช้เมธอด Write ของออบเจ็กต์ในตัว Response เพื่อส่งข้อมูลไปยังเบราว์เซอร์โดยทำตามคำแนะนำต่อไปนี้:
<% การตอบสนองเขียน "สวัสดีชาวโลก" %>
โปรดทราบว่าภาษาสคริปต์บางภาษาไม่รองรับไวยากรณ์ Object.Method หากภาษาที่คุณใช้ไม่สนับสนุนไวยากรณ์นี้ คุณต้องป้อนข้อมูลในรีจิสทรีเพื่อใช้ภาษานั้นเป็นภาษาสคริปต์หลัก
การตั้งค่าคุณสมบัติวัตถุ คุณสมบัติเป็นค่าคุณลักษณะที่อธิบายวัตถุ คุณสมบัติกำหนดลักษณะของวัตถุ (เช่น ประเภทวัตถุ) หรือสถานะของวัตถุ (เช่น เปิดใช้งานหรือปิดใช้งาน) ไวยากรณ์ทั่วไปคือ:
วัตถุคุณสมบัติ
ค่าคุณสมบัติสามารถอ่านและตั้งค่าได้ สำหรับออบเจ็กต์บางอย่าง คุณสามารถเพิ่มคุณสมบัติใหม่ได้
ตัวอย่างเช่น คอมโพเนนต์ Ad Rotator มีคุณสมบัติ Border ซึ่งระบุว่าโฆษณามีเส้นขอบและความหนาของเส้นขอบหรือไม่ นิพจน์ต่อไปนี้ระบุไม่มีเส้นขอบ:
<% MyAds.Border = 0 %>
คุณสามารถใช้คำสั่งเอาต์พุต ASP เพื่อแสดงค่าปัจจุบันของคุณสมบัติบางอย่างได้ ตัวอย่างเช่น คำสั่งต่อไปนี้จะส่งคืน TRUE หากเบราว์เซอร์ยังคงเชื่อมต่อกับเซิร์ฟเวอร์:
<%= การตอบสนอง IsClientConnected %>