กลับไปหน้าบทความ

อ่าน 3 นาที

การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์

ใน การเขียนโปรแกรมคอมพิวเตอร์ การเขียนโปรแกรมแบบขับเคลื่อน ด้วย เหตุการณ์ ( Event-driven programming) เป็น รูปแบบการเขียนโปรแกรม ที่ การทำงานของโปรแกรม ถูกกำหนดโดย เหตุการณ์...

การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์

ในการเขียนโปรแกรมคอมพิวเตอร์ การเขียนโปรแกรมแบบขับเคลื่อน ด้วย เหตุการณ์ ( Event-driven programming)เป็นรูปแบบการเขียนโปรแกรมที่การทำงานของโปรแกรมถูกกำหนดโดยเหตุการณ์ ภายนอก เหตุการณ์จาก ส่วนติดต่อผู้ใช้ (UI) เช่น จาก แป้นพิมพ์และเมาส์ทัชแพดและหน้าจอสัมผัสและ อินพุตจาก เซ็นเซอร์ ภายนอก เป็นตัวอย่างที่พบได้ทั่วไป นอกจากนี้ เหตุการณ์อาจถูกสร้างขึ้นโดยโปรแกรม เช่น จากข้อความจากโปรแกรมอื่นการแจ้งเตือนจากเธรด อื่น หรือเหตุการณ์ เครือข่าย อื่นๆ

การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์ (Event-driven programming) เป็นรูปแบบการเขียนโปรแกรมหลักที่ใช้ใน แอป พลิเคชันส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) และเซิร์ฟเวอร์เครือข่าย

ในแอปพลิเคชันที่ขับเคลื่อนด้วยเหตุการณ์ โดยทั่วไปจะมีลูปเหตุการณ์ที่คอยรับฟังเหตุการณ์ต่างๆ จากนั้นจะเรียกใช้ฟังก์ชันเรียกกลับเมื่อตรวจพบเหตุการณ์เหล่านั้น

โปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์สามารถเขียนได้ด้วยภาษาโปรแกรม ใดก็ได้ แม้ว่างานนี้จะง่ายกว่าในภาษาที่ให้นามธรรมระดับสูงก็ตาม

แม้ว่า การจัดการการขัดจังหวะและการจัดการข้อยกเว้นจะไม่ตรงกับรูปแบบการทำงานแบบขับเคลื่อนด้วยเหตุการณ์โดยตรง แต่ก็มีความคล้ายคลึงกันหลายประการ

สิ่งสำคัญคือต้องแยกแยะความแตกต่างระหว่างกระบวนทัศน์ที่ขับเคลื่อนด้วยเหตุการณ์และ กระบวน ทัศน์ที่ขับเคลื่อนด้วยข้อความ (หรือที่เรียกว่าขับเคลื่อนด้วยคิว) บริการที่ขับเคลื่อนด้วยเหตุการณ์ (เช่น AWS SNS ) จะแยกออกจากผู้บริโภค ในขณะที่บริการที่ขับเคลื่อนด้วยข้อความ/คิว (เช่นAWS SQS ) จะเชื่อมโยงกับผู้บริโภค[ 1 ]

ลูปเหตุการณ์

เนื่องจากลูปเหตุการณ์ที่รับและส่งต่อเหตุการณ์นั้นพบได้ทั่วไปในแอปพลิเคชันต่างๆ เฟรมเวิร์กการเขียนโปรแกรมจำนวนมากจึงมีการใช้งานลูปเหตุการณ์ให้ และนักพัฒนาแอปพลิเคชันเพียงแค่ต้องเขียนตัวจัดการเหตุการณ์เท่านั้น

RPGซึ่งเป็นภาษาโปรแกรมยุคแรกจากIBM ที่มีแนวคิดการออกแบบในช่วงทศวรรษ 1960 คล้ายกับการเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์ที่กล่าวถึงข้างต้น มีลูป I/Oหลักในตัว(เรียกว่า "รอบโปรแกรม") ซึ่งการคำนวณจะตอบสนองตาม "ตัวบ่งชี้" ( แฟล็ก ) ที่ตั้งค่าไว้ก่อนหน้านี้ในรอบการทำงาน

ตัวจัดการเหตุการณ์

ตรรกะการทำงานที่แท้จริงนั้นบรรจุอยู่ในรูทีนจัดการเหตุการณ์ รูทีนเหล่านี้จะจัดการเหตุการณ์ที่โปรแกรมหลักจะตอบสนอง ตัวอย่างเช่น การคลิกเมาส์เพียงครั้งเดียวบนปุ่มคำสั่ง "บันทึก" ใน โปรแกรม GUIอาจเรียกใช้รูทีนเพื่อบันทึกข้อมูลลงในฐานข้อมูลปุ่ม "ออก" อาจเรียกใช้รูทีนเพื่อออกจากโปรแกรม ลูปเหตุการณ์จะรับเหตุการณ์จากปุ่มคำสั่งดังกล่าวและองค์ประกอบ GUI อื่นๆ ทั้งหมด แล้วส่งรูทีนจัดการเหตุการณ์ที่เหมาะสมสำหรับแต่ละปุ่ม

รูทีนจัดการเหตุการณ์จำเป็นต้องผูกกับเหตุการณ์เฉพาะ เพื่อให้ลูปเหตุการณ์สามารถเรียกใช้รูทีนที่ถูกต้องเพื่อตอบสนองต่อเหตุการณ์นั้นได้IDE หลายตัว ทำให้กระบวนการนี้ง่ายขึ้นโดยการจัดเตรียมเทมเพลตการจัดการเหตุการณ์สำหรับแต่ละเหตุการณ์เฉพาะ (เช่น การคลิกปุ่ม) ให้กับโปรแกรมเมอร์ ทำให้โปรแกรมเมอร์สามารถมุ่งเน้นไปที่การเขียนโค้ดการจัดการเหตุการณ์ได้

ในโปรแกรมแบบลำดับ การติดตามลำดับการทำงานและประวัติการทำงานมักเป็นเรื่องง่าย แต่ในโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์ ตัวจัดการเหตุการณ์จะทำงานแบบไม่เรียงลำดับเพื่อตอบสนองต่อเหตุการณ์ภายนอก จำเป็นต้องให้ความสนใจและวางแผนเป็นพิเศษเพื่อจัดโครงสร้างตัวจัดการเหตุการณ์ให้ถูกต้องเพื่อให้ทำงานได้เมื่อถูกเรียกใช้ในลำดับใดก็ตาม

การใช้งานทั่วไป

สถาปัตยกรรม GUI ที่มีอยู่ส่วนใหญ่ใช้การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์[ 2 ] Windows มีลูปข้อความเฟรมเวิร์ก Java AWT ประมวลผลการเปลี่ยนแปลง UI ทั้งหมดบนเธรดเดียวที่เรียกว่าเธรดการส่งเหตุการณ์ในทำนองเดียวกัน การอัปเดต UI ทั้งหมดในเฟรมเวิร์กJavaFX ของ Java เกิดขึ้นบนเธรดแอปพลิเคชัน JavaFX [ 3 ]

เซิร์ฟเวอร์เครือข่ายและเฟรมเวิร์กส่วนใหญ่ เช่น Node.js ก็เป็นแบบขับเคลื่อนด้วยเหตุการณ์เช่นกัน[ 4 ]

การจัดการการขัดจังหวะและข้อยกเว้น

ดูเพิ่มเติม

  • การนำเสนอรูปแบบการทำงานพร้อมกัน (Concurrency patterns)ในงาน ScaleConf
  • การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์: บทนำ บทช่วยสอน ประวัติความเป็นมาบทช่วยสอนโดย สตีเฟน เฟิร์ก
  • การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์ (Event-Driven Programming ) บทเรียนโดย อลัน กอลด์
  • การทำงานร่วมกันในการจัดกิจกรรมบทความโดย มาร์ติน ฟาวเลอร์
  • การคิดใหม่เกี่ยวกับการร้อยด้ายสวิงบทความโดย โจนาธาน ไซมอน
  • รูปแบบการเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์ (Event-driven programming style) เก็บถาวรเมื่อวันที่ 20 กุมภาพันธ์ 2005 ที่Wayback Machineบทความโดย Chris McDonald
  • การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์โดยใช้การกำหนดเทมเพลตเฉพาะเจาะจงบทความโดย คริสโตเฟอร์ ดิกกินส์
  • Schiffer, S.; Frohlich, JH (1994). "แนวคิดและสถาปัตยกรรมของ Vista - สภาพแวดล้อมการเขียนโปรแกรมแบบหลายกระบวนทัศน์". รายงานการประชุมสัมมนา IEEE ว่าด้วยภาษาภาพ ปี 1994หน้า  40–47 . doi : 10.1109/VL.1994.363642 . ISBN 0-8186-6660-9S2CID 15927869 ​
  • การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์และเอเจนต์บทที่
  • แหล่งข้อมูล LabWindows/CVI
  • ระบบเผยแพร่/สมัครรับข้อมูลแบบกระจาย (Distributed Publish/Subscribe Event System ) เป็นตัวอย่างโอเพนซอร์สที่ใช้งานอยู่จริงบน MSN.com และ Microsoft.com
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Event-driven_programming&oldid=1357313088 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์

ใน การเขียนโปรแกรมคอมพิวเตอร์ การเขียนโปรแกรมแบบขับเคลื่อน ด้วย เหตุการณ์ ( Event-driven programming) เป็น รูปแบบการเขียนโปรแกรม ที่ การทำงานของโปรแกรม ถูกกำหนดโดย เหตุการณ์...

ลูปเหตุการณ์

เนื่องจาก ลูปเหตุการณ์ ที่รับและส่งต่อเหตุการณ์นั้นพบได้ทั่วไปในแอปพลิเคชันต่างๆ เฟรมเวิร์กการเขียนโปรแกรมจำนวนมากจึงมีการใช้งานลูปเหตุการณ์ให้ และนักพัฒนาแอปพลิเคชันเพียงแค่ต้องเขียนตัวจัดการเหตุการณ์เท่านั้น

ตัวจัดการเหตุการณ์

ตรรกะการทำงานที่แท้จริงนั้นบรรจุอยู่ในรูทีนจัดการเหตุการณ์ รูทีนเหล่านี้จะจัดการเหตุการณ์ที่โปรแกรมหลักจะตอบสนอง ตัวอย่างเช่น การคลิกเมาส์เพียงครั้งเดียวบนปุ่มคำสั่ง "บันทึก" ใน โปรแกรม GUI อาจเรียกใช้รูทีนเพื่อบันทึกข้อมูลลงใน ฐานข้อมูล ปุ่ม "ออก"...

การใช้งานทั่วไป

สถาปัตยกรรม GUI ที่มีอยู่ส่วนใหญ่ใช้การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์ [ 2 ] Windows มี ลูปข้อความ เฟรมเวิร์ก Java AWT ประมวลผลการเปลี่ยนแปลง UI ทั้งหมดบนเธรดเดียวที่เรียกว่า เธรดการส่งเหตุการณ์ ในทำนองเดียวกัน การอัปเดต UI ทั้งหมดในเฟรมเวิร์ก JavaFX...