แอปพลิเคชัน ASP.NET และวงจรชีวิตของเพจ
⚡ สรุปอย่างชาญฉลาด
วงจรชีวิตของแอปพลิเคชันและหน้าเว็บใน ASP.NET อธิบายถึงขั้นตอนต่างๆ ที่คำขอผ่านไปตามลำดับ ตั้งแต่การเริ่มต้นแอปพลิเคชันและการสร้างอ็อบเจ็กต์ ไปจนถึงการเริ่มต้นหน้าเว็บ การโหลด การแสดงผล และการยกเลิกการโหลดping นักพัฒนาวางโค้ดไว้ในจุดที่ถูกต้อง
วงจรการใช้งาน ASP.Net คืออะไร
เมื่อแอปพลิเคชัน ASP.Net เริ่มทำงาน จะมีขั้นตอนต่างๆ เกิดขึ้น ซึ่งขั้นตอนเหล่านี้ประกอบกันเป็นวงจรชีวิตของแอปพลิเคชัน
เรามาดูกันว่าขั้นตอนต่างๆ ในวงจรชีวิตทั่วไปของเว็บแอปพลิเคชัน ASP.Net มีอะไรบ้าง
วงจรการใช้งาน ASP.Net
1) เริ่มต้นการสมัคร – วงจรชีวิตของ ASP.NET แอปพลิเคชันจะเริ่มต้นทำงานเมื่อผู้ใช้ส่งคำขอไปยังเว็บเซิร์ฟเวอร์ของแอปพลิเคชัน ASP.Net ซึ่งโดยปกติแล้วจะเกิดขึ้นเมื่อผู้ใช้คนแรกเข้าชมหน้าแรกของแอปพลิเคชันเป็นครั้งแรก ในช่วงเวลานี้ จะมีเมธอดที่ชื่อว่า Application_Start ซึ่งจะถูกเรียกใช้งานโดยเว็บเซิร์ฟเวอร์ โดยปกติแล้ว ในเมธอดนี้ ตัวแปรส่วนกลางทั้งหมดจะถูกตั้งค่าเป็นค่าเริ่มต้น
2) การสร้างวัตถุ – ขั้นตอนต่อไปคือการสร้าง HttpContext, HttpRequest และ HttpResponse โดยเว็บเซิร์ฟเวอร์ HttpContext เป็นเพียงคอนเทนเนอร์สำหรับอ็อบเจ็กต์ HttpRequest และ HttpResponse อ็อบเจ็กต์ HttpRequest จะมีข้อมูลเกี่ยวกับคำขอปัจจุบัน รวมถึงคุกกี้และข้อมูลเบราว์เซอร์ ส่วนอ็อบเจ็กต์ HttpResponse จะมีคำตอบที่ส่งไปยังไคลเอ็นต์
3) การสร้าง HttpApplication – อ็อบเจ็กต์นี้ถูกสร้างขึ้นโดยเว็บเซิร์ฟเวอร์ อ็อบเจ็กต์นี้จะถูกใช้ประมวลผลคำขอแต่ละรายการที่ส่งไปยังแอปพลิเคชัน ตัวอย่างเช่น สมมติว่าเรามีเว็บแอปพลิเคชัน 2 แอปพลิเคชัน แอปพลิเคชันหนึ่งเป็นร้านค้าping แอปพลิเคชันหนึ่งเป็นแอปตะกร้าสินค้า และอีกแอปพลิเคชันหนึ่งเป็นเว็บไซต์ข่าว สำหรับแต่ละแอปพลิเคชัน เราจะสร้างอ็อบเจ็กต์ HttpApplication ขึ้นมา 2 ตัว การร้องขอใดๆ ที่ส่งไปยังแต่ละเว็บไซต์จะถูกประมวลผลโดย HttpApplication แต่ละตัวตามลำดับ
4) กำจัด – เหตุการณ์นี้จะถูกเรียกก่อนที่อินสแตนซ์แอปพลิเคชันจะถูกทำลาย ในช่วงเวลานี้ คุณสามารถใช้เมธอดนี้เพื่อปล่อยทรัพยากรที่ไม่ได้รับการจัดการด้วยตนเอง
5) การสิ้นสุดการสมัคร – นี่เป็นส่วนสุดท้ายของการสมัคร ในส่วนนี้ ในที่สุดแอปพลิเคชันก็จะถูกยกเลิกการโหลดจากหน่วยความจำ
ASP.Net Page Lifecycle คืออะไร
เมื่อมีการเรียกใช้งานหน้าเว็บ ASP.Net หน้าเว็บจะผ่านวงจรชีวิตเฉพาะขั้นตอนหนึ่ง ก่อนที่จะส่งการตอบกลับไปยังผู้ใช้ มีขั้นตอนต่างๆ มากมายที่ต้องปฏิบัติตามในการประมวลผลหน้าเว็บ ASP.Net
มาดูขั้นตอนต่างๆ ของวงจรชีวิตของเว็บเพจ ASP.Net กัน
วงจรการใช้งานเพจ ASP.Net
- คำขอเพจ – นี่คือช่วงเวลาที่ระบบร้องขอหน้าเว็บจากเซิร์ฟเวอร์เป็นครั้งแรก เมื่อมีการร้องขอหน้าเว็บ เซิร์ฟเวอร์จะตรวจสอบว่าเป็นการร้องขอครั้งแรกหรือไม่ ถ้าใช่ เซิร์ฟเวอร์จะต้องประมวลผลหน้าเว็บ วิเคราะห์ข้อมูลที่ได้รับ และส่งไปยังผู้ใช้ แต่ถ้าไม่ใช่การร้องขอหน้าเว็บครั้งแรก ระบบจะตรวจสอบแคชเพื่อดูว่ามีข้อมูลหน้าเว็บนั้นอยู่หรือไม่ ถ้ามี ระบบก็จะส่งข้อมูลนั้นไปยังผู้ใช้
- เริ่มหน้า – ในระหว่างนี้ จะมีการสร้างอ็อบเจ็กต์ 2 ตัว คือ อ็อบเจ็กต์ Request และอ็อบเจ็กต์ Response อ็อบเจ็กต์ Request ใช้สำหรับเก็บข้อมูลทั้งหมดที่ส่งไปเมื่อมีการร้องขอหน้าเว็บ ส่วนอ็อบเจ็กต์ Response ใช้สำหรับเก็บข้อมูลที่ส่งกลับไปยังผู้ใช้
- การเริ่มต้นเพจ – ในระหว่างนี้ ตัวควบคุมทั้งหมดบนหน้าเว็บจะถูกเริ่มต้นใช้งาน ดังนั้นหากคุณมีป้ายกำกับ กล่องข้อความ หรือตัวควบคุมอื่นๆ บนแบบฟอร์มเว็บ ตัวควบคุมเหล่านั้นจะถูกเริ่มต้นใช้งานทั้งหมด
- โหลดหน้า – นี่คือเวลาที่หน้าเพจถูกโหลดด้วยค่าเริ่มต้นทั้งหมด ดังนั้น หากกล่องข้อความควรมีค่าเริ่มต้น ค่าดังกล่าวจะถูกโหลดระหว่างเวลาที่โหลดหน้าเพจ
- การตรวจสอบ บางครั้งอาจมีการตั้งค่าการตรวจสอบบางอย่างบนแบบฟอร์ม เช่น อาจมีการตรวจสอบที่ระบุว่ากล่องรายการควรมีชุดค่าบางชุด หากเงื่อนไขเป็นเท็จ แสดงว่าควรมีข้อผิดพลาดในการโหลดหน้า
- การจัดการเหตุการณ์ Postback – เหตุการณ์นี้จะเกิดขึ้นเมื่อมีการโหลดหน้าเว็บเดิมซ้ำอีกครั้ง ซึ่งเกิดขึ้นเพื่อตอบสนองต่อเหตุการณ์ก่อนหน้านี้ บางครั้งอาจมีสถานการณ์ที่ผู้ใช้คลิกปุ่มส่งข้อมูลบนหน้าเว็บ ในกรณีนี้ หน้าเว็บเดิมจะถูกแสดงอีกครั้ง และตัวจัดการเหตุการณ์ Postback จะถูกเรียกใช้งาน
- การแสดงผลหน้า – สิ่งนี้เกิดขึ้นก่อนที่ข้อมูลตอบกลับทั้งหมดจะถูกส่งไปยังผู้ใช้ ข้อมูลทั้งหมดในแบบฟอร์มจะถูกบันทึกไว้ และผลลัพธ์จะถูกส่งไปยังผู้ใช้ในรูปแบบหน้าเว็บที่สมบูรณ์
- ปลดปล่อย – เมื่อเอาต์พุตเพจถูกส่งไปยังผู้ใช้แล้ว ก็ไม่จำเป็นต้องเก็บไฟล์ไว้ เว็บฟอร์ม ASP.net วัตถุในหน่วยความจำ ดังนั้นกระบวนการขนถ่ายจึงเกี่ยวข้องกับการลบวัตถุที่ไม่ต้องการทั้งหมดออกจากหน่วยความจำ
เหตุการณ์วงจรชีวิตของหน้าเว็บ ASP.NET
นอกเหนือจากขั้นตอนกว้างๆ ข้างต้นแล้ว ASP.NET ยังสร้างลำดับเหตุการณ์เฉพาะของหน้าเว็บที่นักพัฒนาสามารถจัดการได้ในโค้ด การรู้ลำดับนี้จะช่วยให้คุณวางตรรกะในตำแหน่งที่เหมาะสมได้:
- พรีอินิต – ตั้งค่ามาสเตอร์เพจและธีม และสร้างตัวควบคุมแบบไดนามิก
- ในนั้น – ตัวควบคุมแต่ละตัวได้รับการเริ่มต้นใช้งานแล้ว ใช้ค่าเริ่มต้นเหล่านั้นเพื่ออ่านหรือตั้งค่าคุณสมบัติของตัวควบคุม
- เริ่มต้นเสร็จสมบูรณ์ – เกิดขึ้นหลังจากกระบวนการเริ่มต้นทั้งหมดเสร็จสิ้นแล้ว
- โหลดล่วงหน้า – เกิดขึ้นก่อนที่หน้าเว็บจะโหลดสถานะการแสดงผลและข้อมูลการส่งข้อมูลกลับไปยังเซิร์ฟเวอร์
- โหลด – หน้าเว็บและส่วนควบคุมต่างๆ จะถูกโหลดขึ้นมา ตรรกะส่วนใหญ่ของหน้าเว็บจะอยู่ที่นี่
- เหตุการณ์ควบคุม – มีการจัดการเหตุการณ์เฉพาะส่วนควบคุม เช่น การคลิกปุ่ม
- พรีเรนเดอร์ – ทำการแก้ไขขั้นสุดท้ายกับหน้าเว็บหรือส่วนควบคุมก่อนส่งออก
- บันทึกสถานะเสร็จสมบูรณ์ – สถานะการแสดงผลจะถูกบันทึกไว้สำหรับตัวควบคุมทั้งหมด
- ทำให้ – หน้าเว็บจะสร้างเอาต์พุต HTML ที่ส่งไปยังเบราว์เซอร์
- ปลดปล่อย – ดำเนินการล้างข้อมูลและปล่อยวัตถุออกจากหน่วยความจำ
วงจรชีวิตของแอปพลิเคชันเทียบกับวงจรชีวิตของเพจ
วงจรชีวิตของแอปพลิเคชันและวงจรชีวิตของหน้าเว็บทำงานในขอบเขตที่แตกต่างกัน ตารางด้านล่างนี้จะอธิบายความแตกต่างดังกล่าวให้ชัดเจน:
| แง่มุม | วัฏจักรชีวิตการสมัคร | วงจรชีวิตของหน้าเว็บ |
|---|---|---|
| ขอบเขต | แอปพลิเคชันเว็บทั้งหมด | คำขอหน้าเดียว |
| เริ่มต้น | ในการร้องขอครั้งแรก (Application_Start) | ทุกครั้งที่มีการขอหน้าเว็บ |
| เหตุการณ์สำคัญ | การเริ่มต้นแอปพลิเคชัน, การร้องขอเริ่มต้น, การสิ้นสุดแอปพลิเคชัน | เริ่มต้น, โหลด, แสดงผลล่วงหน้า, ยกเลิกการโหลด |
| เวลา | เริ่มและสิ้นสุดการใช้งานแอปพลิเคชันครั้งละหนึ่งครั้ง | หนึ่งครั้งต่อการร้องขอแต่ละหน้า |
โดยสรุป วงจรชีวิตของแอปพลิเคชันครอบคลุมทั้งแอปตั้งแต่เริ่มต้นจนถึงปิดระบบ ในขณะที่วงจรชีวิตของหน้าเว็บจะทำงานทุกครั้งที่ผู้ใช้ร้องขอหน้าเว็บ
เหตุใดการเข้าใจวงจรชีวิตของ ASP.NET จึงมีความสำคัญ
การเข้าใจวงจรชีวิตของโค้ดเป็นสิ่งสำคัญ เพราะ ASP.NET จะรันโค้ดของคุณในเวลาที่กำหนด และการวางตรรกะไว้ในเหตุการณ์ที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาดที่หาได้ยาก การเข้าใจลำดับขั้นตอนอย่างชัดเจนจะช่วยคุณได้ดังนี้:
- สร้างหรือกำหนดค่าตัวควบคุมแบบไดนามิกตั้งแต่เนิ่นๆ ในฟังก์ชัน PreInit หรือ Init
- กำหนดค่าควบคุมเริ่มต้นในเหตุการณ์ Load เพื่อให้แสดงผลได้อย่างถูกต้อง
- ปรับเปลี่ยนการแสดงผลขั้นสุดท้ายใน PreRender หลังจากที่ผูกข้อมูลทั้งหมดเรียบร้อยแล้ว
- แยกความแตกต่างระหว่างคำขอโหลดครั้งแรก (first-load requests) กับคำขอส่งข้อมูลกลับ (postbacks) เพื่อหลีกเลี่ยงการประมวลผลข้อมูลซ้ำสองครั้ง
- ปล่อยทรัพยากรและล้างข้อมูลในฟังก์ชัน Unload เพื่อป้องกันการรั่วไหลของหน่วยความจำ
การเข้าใจเหตุการณ์เหล่านี้อย่างถ่องแท้จะทำให้การจัดการสถานะ การตรวจสอบความถูกต้อง และการแก้ไขข้อผิดพลาดคาดการณ์ได้ดียิ่งขึ้น



