Wednesday, June 13, 2007

Client Callbacks without Postbacks in ASP.NET

ตามปกติในการเขียนโปรแกรม ASP.NET นั้น การทำงานของโค้ด ในฝั่งเซิร์ฟเวอร์ที่อยู่ใน code-behind หรือภายใน script runat="server" จะต้องมีการส่ง request ไปยังเซิร์ฟเวอร์ และ เซิร์ฟเวอร์ก็จะส่ง response กลับมา โดยในการส่ง request ไปยังเซิร์ฟเวอร์นั้น จะเป็นการทำการ submit form ซึ่งส่งผลให้ต้องส่ง content ทั้งหมดของเพจไปยังเซิร์ฟเวอร์ แล้วเซิร์ฟเวอร์ก็นำไปประมวลผลเพื่อส่ง content ของเพจที่ประมวลผลใหม่กลับมา ด้วยวิธีการนี้ทำให้เกิดการรอคอย โดยผู้ใช้ได้รับรู้การรอคอยนั้น ด้วยการกระพริบของเพจ ซึ่งบางครั้งกระพริบช้า บางครั้งกระพริบเร็ว เนื่องจากปัจจัยต่างๆ เช่น ความเร็วของสัญญาณ การประมวลของเซิร์ฟเวอร์ เป็นต้น

ด้วยเหตุนี้ใน ASP.NET 2.0 จึงมีวิธีในการจัดการการเรียกใช้เมธอดบนเซิร์ฟเวอร์ เพื่อนำมาแสดงผลบนเพจได้โดยที่ไม่ต้องทำการ Postback ทั้งเพจ ซึ่งเรียกว่า Callbacks without Postbacks

ด้วยวิธีการ Callbacks without Postbacks จะทำให้อีเว็นต์ที่เกิดขึ้นบนบราว์เซอร์ สามารถส่งการร้องขอไปยังเมธอดที่อยู่ใน Code-behind หรือ script runat="server" ได้ และเมื่อเมธอดบนเซิร์ฟเวอร์ได้ประมวลผลเพื่อให้ได้ผลลัพท์ที่ต้องการแล้ว ก็จะส่งหน้าที่กลับไปยังเมธอด Callback บนบราว์เซอร์เพื่อนำผลลัพท์ที่ได้มาแสดงบนเพจในบราว์เซอร์ โดยที่ไม่ต้อง PostBack เพจกลับไปยังเซิร์ฟเวอร์

Callbacks without Postbacks เกี่ยวข้องกับ Interface ชื่อ ICallbackEventHandler ซึ่งประกอบด้วยเมธอด
  • RaiseCallbackEvent เป็นเมธอดที่ถูกเรียก เมื่อมีการเรียกใช้เมธอดสำหรับการ Callback
  • GetCallbackResult เป็นเมธอดที่คืนผลลัพท์ของการทำงาน ไปยังเมธอด Callback

ตอนต่อไปผมจะแสดงวิธีการเขียนโค้ดครับ

2 comments:

Anonymous said...

ขอบคุณ คะ
หามานานแล้ว

Anonymous said...

ขอบคุณครับ กำลังสนใจเรื่องนี้พอดี

by user02