1. บทนำ
ขณะนี้ Flash ของ Macromedia ถูกนำมาใช้อย่างแพร่หลายบนอินเทอร์เน็ตเพื่อปรับปรุงคำอธิบายเนื้อหาของเว็บไซต์ Flash รุ่นล่าสุดของ Macromedia (Flash 6 และ Flash MX) ทำให้เห็นชัดเจนว่า Macromedia กำลังพิจารณาอย่างจริงจังว่า Flash เป็นตัวเลือกสำหรับการพัฒนาเว็บแอปพลิเคชัน สำหรับอินเทอร์เฟซ Flash อาจเป็นตัวเลือกที่ดี อย่างไรก็ตาม ตัวเลือกนี้ไม่ได้ใช้เพื่อแทนที่ตรรกะทางธุรกิจ การจัดการคิวรี และความปลอดภัย สำหรับนักพัฒนาเว็บ เพื่อให้ได้ประสิทธิภาพที่ทรงพลังอย่างแท้จริงและความสามารถระดับองค์กร คุณต้องมีการสนับสนุน .NET, Flash และ Rich Description Layer รวมกับเทคโนโลยี .NET ของ Microsoft
Flash มี ActionScript ซึ่งเป็นภาษาสคริปต์ที่ใช้เพื่อเพิ่มการโต้ตอบให้กับภาพเคลื่อนไหว นับตั้งแต่เปิดตัว ActionScript ใน Flash 5 ทาง Macromedia ก็ได้ปรับปรุงอย่างต่อเนื่องจากภาษาสคริปต์ธรรมดาไปเป็นฟีเจอร์การเขียนโปรแกรมที่แข็งแกร่งซึ่งยังคงมีข้อจำกัดมากมาย ใน Flash MX 2004 Macromedia ได้เปิดตัว ActionScript 2.0 ซึ่งสนับสนุนคุณสมบัติใหม่ๆ และวิธีการใหม่ๆ ในการสร้างโค้ด เพื่อให้บทความนี้เข้าใจง่ายขึ้น คุณควรอ่านความรู้พื้นฐานเกี่ยวกับการสร้างไซต์ Flash ด้วย ActionScript ก่อน
Macromedia ได้แนะนำวิธีการในการรวมข้อมูลภายนอกเข้ากับแอพพลิเคชั่น Flash ได้อย่างง่ายดาย เพื่อรองรับแอพพลิเคชั่นที่ขับเคลื่อนด้วยข้อมูลที่ซับซ้อนและมีประสิทธิภาพมากขึ้น Flash และ .NET ต่างก็โปรโมตตัวเองว่าเป็นโซลูชันข้ามแพลตฟอร์มและกลายเป็นพันธมิตรโดยธรรมชาติ อย่างไรก็ตาม การเชื่อมโยงทั้งสองเทคโนโลยีเข้าด้วยกันก็ไม่ใช่เรื่องง่าย บทความนี้จะหารือกับคุณหลายวิธีในการรวมแอปพลิเคชัน Flash และ .NET
2. รวม Flash และ ASP.NET
และฝังภาพเคลื่อนไหว Flash ลงในเพจ ASP.NET
ภาพเคลื่อนไหว Macromedia Flash จะถูกวางไว้ในหน้า .aspx โดยใช้แท็ก OBJECT และ EMBED ร่วมกัน แท็ก EMBED ได้รับการพัฒนาโดย Netscape เพื่อทำงานร่วมกับ Netscape 2.0 หรือสูงกว่า ต่อมาแท็กนี้ถูกนำมาใช้โดย Microsoft Internet Explorer (MSIE) เพื่อความเข้ากันได้ของเบราว์เซอร์ คุณสามารถใช้แท็ก OBJECT เฉพาะของ MSIE และแท็ก EMBED ร่วมกันได้ รหัส HTML ต่อไปนี้แสดงการใช้แท็ก OBJECT และแท็ก EMBED เพื่อฝังภาพเคลื่อนไหว Flash (ไฟล์ *.swf):
3. เชื่อมต่อ Flash กับข้อมูลภายนอก
มีสามวิธีในการรวมภาพเคลื่อนไหว Flash เข้ากับข้อมูลภายนอก: FlashVars, LoadVars และเทคโนโลยี FlashRemoting ใหม่ วิธีที่ง่ายที่สุดวิธีหนึ่งคือการส่งข้อมูลภายนอกจากเพจ .aspx ไปยังภาพเคลื่อนไหว Flash ที่ฝังอยู่ในเว็บเพจโดยใช้ FlashVars เพื่อส่งผ่านตัวแปรในส่วน HTML ของโค้ด ค่าของตัวแปรเหล่านี้ที่ตั้งค่าโดยใช้ FlashVars สามารถเข้าถึงได้ที่ระดับรากของภาพเคลื่อนไหว Flash หากต้องการทำงานในทุกสภาพแวดล้อมของเบราว์เซอร์ คุณต้องกำหนดค่าแอตทริบิวต์ FlashVars ในแท็ก OBJECT และ EMBED
นี่คือ FlashVars ที่ใช้กับแท็กอ็อบเจ็กต์:
<PARAM Name="FlashVars" Value="init=yes&check=true">
ต่อไปนี้คือ FlashVars ที่ใช้กับแท็ก EMBED:
<EMBED src="test.swf" FlashVars=" init =yes&check=true"></EMBED>
4. เหตุใดจึงต้องใช้ FlashVars
แทนที่จะยืม FlashVars คุณยังสามารถใส่ตัวแปรในแท็ก HTML - เพิ่มตัวแปรเหล่านั้นที่ส่วนท้ายของ URL ของไฟล์ .SWF ผ่านสตริงการสืบค้น จากนั้นส่งต่อไปยังภาพเคลื่อนไหว Flash อาจมีปัญหากับแนวทางนี้ - หากจำเป็นต้องใช้ตัวแปรนี้เมื่อโหลดไฟล์ .SWF เนื่องจากควรดาวน์โหลดไฟล์และรันไฟล์ .SWF ก่อนที่จะร้องขอข้อมูลจากเซิร์ฟเวอร์ ค่าตัวแปรอาจตั้งค่าเป็น Flash ได้ด้วยวิธีการ "โหลดตัวแปร" และ JavaScript แต่ละวิธีมีข้อเสียเรื่องความล่าช้าและการตอบสนองที่ช้า นี่คือเหตุผลที่นักพัฒนาควรใช้ FlashVars เพื่อส่งข้อมูลจาก ASP.NET ไปยังภาพเคลื่อนไหว Flash รูปต่อไปนี้แสดงโค้ดสำหรับส่งตัวแปรเป็นสตริงการสืบค้น:
ตัวแปรใดๆ ที่ส่งผ่านโดยใช้ FlashVars สามารถเข้าถึงได้ที่ระดับรากของภาพเคลื่อนไหว Flash (_level0) หากต้องการดึงค่าเหล่านี้ภายในภาพเคลื่อนไหว Flash คุณสามารถสร้างตัวแปรไดนามิกได้ รหัส ActionScript ต่อไปนี้ใช้การกำหนด "initvalue" ใน Flash:
_level0.initvalue = init;
5. การสื่อสารระหว่าง Flash และฐานข้อมูล
Flash Animation ไม่สามารถเข้าถึงฐานข้อมูลได้โดยตรง อย่างไรก็ตาม Flash สามารถสื่อสารกับฐานข้อมูลผ่านเทคโนโลยีฝั่งเซิร์ฟเวอร์ เช่น ASP หรือ ASP.NET มีหลายวิธีในการบรรลุภารกิจนี้ ในบทความนี้ เราจะอธิบายวิธี LoadVariables และวิธี sendAndLoad
(1) ใช้วิธี loadVariables ในคลิปแอนิเมชั่น
วิธี loadVariables ของคลิปแอนิเมชั่นจะอ่านข้อมูลจากไฟล์หรือ URL ภายนอกและตั้งค่าสำหรับตัวแปรของคลิปแอนิเมชั่น เมื่อคลิปแอนิเมชั่นได้รับการสร้างอินสแตนซ์แล้ว การโหลดคลิปแอนิเมชั่นจะเริ่มต้นในตัวจัดการเหตุการณ์คลิป เมื่อคลิปแอนิเมชั่นถูกเตรียมใช้งานแล้ว คุณสามารถเรียกใช้เมธอด loadVariables เพื่อโหลดตัวแปรได้ เมธอด loadVariables เป็นการเรียกแบบอะซิงโครนัสและ Flash จะไม่รอผลลัพธ์ของการเรียก เมื่อได้รับข้อมูลในลักษณะการทำงาน loadVariables() ลักษณะการทำงานของข้อมูลของคลิปแอนิเมชันจะถูกเตรียมใช้งานในตัวจัดการเหตุการณ์คลิป
เพื่อสาธิตการใช้เมธอดนี้ ตัวอย่างนี้จะดึงข้อมูลชื่อและอายุของผู้ใช้จากฐานข้อมูลตามรหัสที่เลือกจากภาพเคลื่อนไหว Flash ในรูปด้านล่าง เมธอด loadVariables ของแอนิเมชั่นใช้ในการโหลดข้อมูลลงในส่วนของแอนิเมชั่นจากเพจ .aspx getUserData.aspx ที่นี่ ActionScript จะส่ง ID ของผู้ใช้ - ชื่อและอายุของเขาจะถูกแสดงในภาพเคลื่อนไหว Flash เป็นสตริงการสืบค้นไปยังหน้า .aspx
หน้า getUserData.aspx ดึงค่า id จากสตริงการสืบค้นที่แสดงด้านล่าง:
ขณะนี้ ASP.NET สามารถส่งรหัสค่านี้ไปยังส่วนประกอบทางธุรกิจของ .NET ได้ ตัวอย่างนี้ดึงข้อมูลชื่อและอายุของผู้ใช้:
ตามที่กล่าวไว้ก่อนหน้าในส่วนนี้ ลักษณะการทำงานของข้อมูลของตัวจัดการเหตุการณ์ onClipEvent ของคลิปแอนิเมชั่นจะเริ่มต้นได้เมื่อได้รับข้อมูลในลักษณะการทำงาน loadVariables() ประกาศตัวแปรไดนามิกต่อไปนี้ในภาพเคลื่อนไหว Flash: flashName และ flashAge รูปต่อไปนี้แสดงโค้ด ActionScript ที่ใช้ในตัวจัดการ onClipEvent ของภาพเคลื่อนไหว Flash เพื่อดึงค่าที่ส่งคืนจากเพจ .aspx
หมายเหตุ: สิ่งสำคัญคือเป็นตัวแปรเดียวกับที่ตั้งค่าจากเพจ .aspx ในตัวอย่างที่แสดงไว้ที่นี่ ตัวแปรที่เข้าถึงในภาพเคลื่อนไหว Flash คือ "name" ซึ่งเป็นตัวแปรเดียวกับที่ตั้งค่าจากหน้า .aspx (Response.Write("name="&User.name))
ตอนนี้ค่าเหล่านี้สามารถใช้ภายในภาพเคลื่อนไหว Flash ได้แล้ว
(2) ใช้เมธอด sendAndLoad จากคลิปแอนิเมชั่น
บนอินเทอร์เน็ตในปัจจุบัน XML ครอบครองสถานที่สำคัญในรูปแบบของระบบเอกสารซึ่งเป็นรูปแบบการขนส่งสากลที่มีศักยภาพในการแลกเปลี่ยนข้อมูลได้อย่างราบรื่นแม้ระหว่างแอปพลิเคชันประเภทต่างๆ XML จัดเตรียมกลไกเกตเวย์สำหรับการสื่อสารระหว่างแอปพลิเคชัน - แม้แต่แอปพลิเคชันบนระบบที่แตกต่างกันมากมาย ตราบใดที่แอปพลิเคชันสามารถแชร์ข้อมูล (ผ่าน HTTP, การแชร์ไฟล์ หรือกลไกอื่น) และมีตัวแยกวิเคราะห์ XML ก็สามารถแชร์ข้อมูลที่มีโครงสร้างซึ่งประมวลผลได้ง่ายมาก
Flash MX รองรับการถ่ายโอนข้อมูล XML และมีวิธีเทคโนโลยีเซิร์ฟเวอร์หลายวิธี เช่น ASP และ ASP.NET สำหรับการแลกเปลี่ยน XML Flash MX สามารถส่งและรับแพ็กเก็ต XML ได้โดยใช้คลาส XML - โหลด ส่งและ sendAndLoad หรือ XMLConnector ใหม่ของ Flash MX อันสุดท้ายสามารถใช้เพื่อส่งและรับแพ็กเก็ตผ่าน HTTP และผูกเข้ากับวิดเจ็ต UI ในเลเยอร์ Flash
เรามาหารือเกี่ยวกับเมธอด sendAndLoad ของออบเจ็กต์ FlashXML ซึ่งเป็นวิธีการยอดนิยมสำหรับการนำการสื่อสารข้อมูล XML ที่เน้นสถาปัตยกรรม การจัดการข้อยกเว้น และประสิทธิภาพไปใช้ เราใช้ตัวอย่างง่ายๆ นี้ในการแทรกรายละเอียดคะแนนของผู้ใช้ลงในฐานข้อมูลจากไคลเอนต์ Flash และส่งข้อความแจ้งความสำเร็จหรือความล้มเหลวกลับไปยังไคลเอนต์ Flash
(3) สร้างแพ็คเก็ต XML ใน Flash
คุณสามารถสร้างแพ็คเก็ต XML ได้อย่างง่ายดายใน Flash ดังนี้:
var sendXML:XML = new XML("<userid><123456</userid">");
ส่งแพ็คเก็ต XML ไปยังฝั่งเซิร์ฟเวอร์ หน้า - ใช้ ASP/ASP.NET และจัดการแพ็กเก็ต XML ที่ส่งคืน
การใช้งานมีดังนี้:
xmlObject.sendAndLoad (URL: String, targetXMLObject: XML): โมฆะ
'xmlObject' นี้เป็นอินสแตนซ์ออบเจ็กต์ XML - มันห่อหุ้ม XML ที่ต้องส่งไปยังเพจ .aspx นี้ 'URL' คือ URL ปลายทางที่ระบุวัตถุ XML 'targetXMLObject' คือวัตถุ XML - จะได้รับข้อมูลที่ส่งคืนจากฝั่งเซิร์ฟเวอร์
เมธอด sendAndLoad จะส่งแพ็กเก็ต XML ไปยังเทมเพลตฝั่งเซิร์ฟเวอร์ และรับแพ็กเก็ต XML ในการตอบสนอง ซึ่งแตกต่างจากวิธีการส่งของคลาส XML ซึ่งส่งเฉพาะแพ็กเก็ต XML และไม่คาดหวังการตอบสนองใดๆ แต่ละวิธีการเหล่านี้ทำงานในลักษณะของตัวเอง แต่มีความแตกต่างที่สำคัญอย่างหนึ่ง: วิธีการส่งของคลาส XML จะใช้เป้าหมายเป็นพารามิเตอร์ - ช่วยให้คุณสามารถเปิดหน้าต่างเบราว์เซอร์ใหม่หรือแทนที่เนื้อหาของหน้าต่างเบราว์เซอร์ปัจจุบัน ในขณะที่เมธอด sendAndLoad ใช้แพ็กเก็ต XML เป็นพารามิเตอร์ - จะไม่เริ่มหน้าต่างเบราว์เซอร์ใหม่ เนื่องจากวิธีการส่งจะเปิดหน้าต่างเบราว์เซอร์ใหม่ เราจึงสามารถเห็นผลลัพธ์ของหน้าต่างเบราว์เซอร์ได้เอง ซึ่งมีประโยชน์อย่างยิ่งสำหรับการแก้ไขจุดบกพร่อง
หมายเหตุ: หากไฟล์ Flash ที่เรียกใช้ sendAndLoad ทำงานในเว็บเบราว์เซอร์ URL เป้าหมายจะอยู่ในโดเมนเดียวกับภาพเคลื่อนไหว Flash หากคุณต้องการสื่อสารกับแอปพลิเคชันในโดเมนที่แตกต่างกัน โปรดดูข้อมูลเพิ่มเติมที่ "การโหลดข้อมูลข้ามโดเมน" ที่
www.macromedia.com รหัสในรูปต่อไปนี้แสดงวิธีใช้เมธอด sendAndLoad ของออบเจ็กต์ XML เพื่อสื่อสารกับเพจ .aspx และประมวลผล XML ที่ส่งคืนจากเซิร์ฟเวอร์:
รหัสข้างต้นทำดังต่อไปนี้:
·โหลดสตริง XML ลงในวัตถุ XML "userscore_xml" อินสแตนซ์เก็บ XML ซึ่งถูกส่งไปยังเพจ ASP.NET ฝั่งเซิร์ฟเวอร์ระยะไกล
·ตั้งค่าแอตทริบิวต์ละเลยสีขาวของออบเจ็กต์ XML "ResponseXMLObj_xml" อินสแตนซ์วัตถุ XML นี้เก็บแพ็คเก็ต XML จากเซิร์ฟเวอร์
·เรียกเมธอด sendAndLoad ("userscore_xml") ของอ็อบเจ็กต์ XML เพื่อส่ง XML ไปยังเพจ .aspx ฝั่งเซิร์ฟเวอร์
http://localhost/MyTestApp/scoring.aspx และจัดเก็บแพ็คเกจ XML ที่ส่งคืนลงในอินสแตนซ์อ็อบเจ็กต์ XML "ResponseXMLObj_xml ".
·ตั้งค่าวิธีการ onLoad ของออบเจ็กต์ XML "ResponseXMLObj_xml" Flash ได้รับการตอบสนอง XML กลับจากหน้า .aspx ฝั่งเซิร์ฟเวอร์ ซึ่งได้รับการจัดการในเมธอด onLoad ของออบเจ็กต์ XML
·จากนั้นจะแยกวิเคราะห์แพ็กเก็ต XML ที่ได้รับเพื่อแสดงข้อความที่จำเป็นบนไคลเอ็นต์ Flash
(4) รับแพ็คเกจ XML ที่ส่งจาก Flash ของหน้า ASPX
รูปต่อไปนี้แสดงโค้ดเพื่อดำเนินการนี้:
โค้ดด้านบนทำหน้าที่ดังต่อไปนี้:
· รับ XML ที่ส่งจากไคลเอ็นต์ Flash (xmlDoc.Load(Request.InputStream))
· แยกวิเคราะห์ XML ที่ได้รับและส่งผ่านไปยังองค์ประกอบทางธุรกิจเพื่อแทรกลงในฐานข้อมูล
· ข้อความ XML ที่เกิดขึ้นจะถูกส่งกลับไปยังไคลเอนต์ Flash เงื่อนไขความสำเร็จหรือข้อยกเว้นที่เกิดขึ้นในชั้นธุรกิจจะได้รับการจัดการตามนั้นและแปลงเป็นข้อความ XML ต่างๆ - ข้อความนี้จะถูกส่งกลับไปยังไคลเอนต์ Flash ไคลเอนต์ Flash ได้รับข้อความ XML เหล่านี้และแสดงผลตามนั้น
6. สรุป
เทคโนโลยี Flash และ .NET กำลังได้รับความนิยมในตลาดปัจจุบัน และมีแนวโน้มที่จะกลายเป็นพันธมิตรที่ประสบความสำเร็จร่วมกันในสถาปัตยกรรมแอปพลิเคชันจำนวนมากขึ้น เทคนิคทั้งสองนี้จัดการกับปัญหาบางอย่างที่เหมือนกัน แต่มีความแตกต่างโดยพื้นฐาน Flash MX ช่วยให้เว็บไซต์สัมผัสประสบการณ์การโต้ตอบ ในขณะที่ .NET ช่วยสร้างแอปพลิเคชันระดับองค์กร ตามที่สำรวจในบทความนี้ การบูรณาการแอปพลิเคชัน Flash และ .NET เป็นไปได้ทั้งหมด ทุกขั้นตอนคือการตัดสินใจ - วิธีเชื่อมโยงสองส่วนนี้และวางแผนสถาปัตยกรรมที่ถูกต้องอย่างมีกลยุทธ์
แม้ว่าสถาปัตยกรรมรุ่นใหม่เกี่ยวกับ Flash Remoting กำลังได้รับแรงผลักดันในด้านนี้ แต่จะต้องใช้เวลาหลายปีก่อนที่วิธีการที่กล่าวถึงในบทความนี้จะสามารถนำไปใช้กับแอปพลิเคชันขนาดใหญ่ได้