AJAX คืออะไร
AJAX (Asynchronous JavaScript And XML) คือเทคนิคการพัฒนาเว็บ ที่จะสร้างโปรแกรมบนเว็บ (webapplication) ที่ตอบสนองกับผู้ใช้ได้อย่างเต็มที่ ความตั้งใจก็คือ
ทำให้หน้าเว็บนั้นตอบสนองได้เฉพาะจุด และแลกเปลี่ยนข้อมูลกับฐานข้อมูล (Server)
ในเบื้องหลังเท่านั้น ดังนั้น ทุกๆครั้งที่มีการกระทำ (Action)
ใดๆของผู้ใช้หน้าเว็บนั้นๆ
ไม่จำเป็นจะต้องโหลดหน้าใหม่ทั้งหน้าทุกๆครั้ง
ซึ่งหมายความว่าเว็บจะตอบสนองมากขึ้น ทำงานได้เร็วขึ้น กว้างขวางมากขึ้น
และเข้าใกล้โปรแกรมปกติ (ที่เราต้อง install ก่อนใช้)
มากขึ้นด้วย
AJAX มาได้อย่างไร
ชื่อ AJAX นั้นถูกตั้งขึ้นในปี 2005 แต่เทคโนโลยีส่วนใหญ่ที่ AJAX ใช้นั้นเกิดมาได้ทศวรรษนึงแล้ว
จาก Microsoft ผู้เริ่มพัฒนา Remote Scripting แต่ถ้าพูดถึงเทคนิคที่จะทำให้แต่หน้าเว็บอัพเดตเพียงบางส่วน
(แทนที่จะโหลดใหม่ทั้งหน้า) นั้น ต้องย้อนพูดกลับไปถึงตั้งแต่สมัยแทค IFRAME
(เริ่มตั้นที่ IE3 ในปี 1996) และแทค LAYER (เริ่มต้นที่ Netscape4 ในปี 1997 ถูกยกเลิกไป ในช่วงการพัฒนาขั้นต้นของ Mozilla)
แทคทั้งคู่จะมีส่วน src ไว้เพื่อกำหนด URL
ข้างนอก และการโหลดหน้าเว็บที่มี JavaScript ซึ่งจะเข้ามาจัดการหน้าหลัก
ในเวลาต่อมา Remote Scripting ของ Microsoft (หรือ MSRS) ซึ่งถือกำเนิดในปี 1998 นั้นดูเหมือนจะเป็นตัวทดแทนของเทคโนโลยีทั้งคู่นี้ โดยข้อมูลจะถูกดึงจาก Javaapplet ซึ่งทางฝั่งผู้ใช้จะติดต่อผ่านทาง JavaScript เทคนิคนี้ใช้ได้ตั้งแต่ IE4 และ Netscape4 ขึ้นไป และต่อมา Microsoft ก็แซงหน้าด้วย Outlook Web Access ซึ่งติดมากับการเปิดตัวของ MicrosoftExchangeServer 2000
ในวงการเขียนเว็บ (แต่ก่อนนั้นจะแลกเปลี่ยนข่าวสารกัน ewsgroupmicrosoft.public.scripting.remote ซึ่งต่อมาก็ใช้ blog แทน) นั้น ได้พัฒนาการเขียนเทคนิค remote scripting อย่างต่อเนื่อง เพื่อการแสดงผลที่เหมือนกันในทุกๆบราวเซอร์ ตัวอย่างเช่น JSRS กับการถือกำเนิดของ Image/Cookie ในปี 2000 เทคนิค JavaScript on Demand และการใช้ XMLHttpRequestเพื่อแทนที่ Remote Scripting ของ Microsoft ในปี 2002
ต่อมาก็เป็น ASP.NET ของ Microsoft ในปี 2003 ตั้งแต่เริ่มมีการรองรับ XMLHttpRequest ในหลายบราวเซอร์หลักๆ การใช้เทคนิคอื่นก้อลดน้อยลง แต่อย่างไรก็ดี อะไรก็ได้ที่เข้ากันได้ง่าย เขียนโค้ดน้อย และสนับสนุนการทำงานข้ามเว็บ ก็ถือว่าเป็นที่ต้องการกันหมด เช่น SVGT protocol ซึ่งเป็นอีกทางเลือกที่จะสร้าง connection ถาวรสำหรับการแลกเปลียนข้อมูลแบบตลอดเวลา ระหว่างบราวเซอร์และเซอร์วิส
ในเวลาต่อมา Remote Scripting ของ Microsoft (หรือ MSRS) ซึ่งถือกำเนิดในปี 1998 นั้นดูเหมือนจะเป็นตัวทดแทนของเทคโนโลยีทั้งคู่นี้ โดยข้อมูลจะถูกดึงจาก Javaapplet ซึ่งทางฝั่งผู้ใช้จะติดต่อผ่านทาง JavaScript เทคนิคนี้ใช้ได้ตั้งแต่ IE4 และ Netscape4 ขึ้นไป และต่อมา Microsoft ก็แซงหน้าด้วย Outlook Web Access ซึ่งติดมากับการเปิดตัวของ MicrosoftExchangeServer 2000
ในวงการเขียนเว็บ (แต่ก่อนนั้นจะแลกเปลี่ยนข่าวสารกัน ewsgroupmicrosoft.public.scripting.remote ซึ่งต่อมาก็ใช้ blog แทน) นั้น ได้พัฒนาการเขียนเทคนิค remote scripting อย่างต่อเนื่อง เพื่อการแสดงผลที่เหมือนกันในทุกๆบราวเซอร์ ตัวอย่างเช่น JSRS กับการถือกำเนิดของ Image/Cookie ในปี 2000 เทคนิค JavaScript on Demand และการใช้ XMLHttpRequestเพื่อแทนที่ Remote Scripting ของ Microsoft ในปี 2002
ต่อมาก็เป็น ASP.NET ของ Microsoft ในปี 2003 ตั้งแต่เริ่มมีการรองรับ XMLHttpRequest ในหลายบราวเซอร์หลักๆ การใช้เทคนิคอื่นก้อลดน้อยลง แต่อย่างไรก็ดี อะไรก็ได้ที่เข้ากันได้ง่าย เขียนโค้ดน้อย และสนับสนุนการทำงานข้ามเว็บ ก็ถือว่าเป็นที่ต้องการกันหมด เช่น SVGT protocol ซึ่งเป็นอีกทางเลือกที่จะสร้าง connection ถาวรสำหรับการแลกเปลียนข้อมูลแบบตลอดเวลา ระหว่างบราวเซอร์และเซอร์วิส
ข้อดีของ AJAX
การตอบโต้กับผู้ใช้
งานส่วนใหญ่ของโปรแกรม (เว็บ) ที่เขียนด้วยเทคนิค AJAX จะทำงานในเครื่องลูกข่าย (client) การตีความในแต่ละหน้านั้น จะทำโดยใช้ DOM (document object model) ของบราวเซอร์ AJAX นั้นยังทำงานหลายๆงานได้ อย่างเช่น ปรับปรุงหรือลบแถวในฐานข้อมูล, หดหรือขยายหน้าฟอร์ม, แสดงผลการค้นหาอย่างง่ายๆ หรือแม้กระทั่งแก้ไขระบบหมวดหมู่โดยไม่ต้องโหลดหน้าทั้งหน้าทุกๆครั้ง จริงแล้วก็เพียงการส่งคำร้อง (Request) เล็กๆไปที่แม่ข่าย (Server) แล้วผลลัพท์ก็จะได้กลับมาอย่างรวดเร็วด้วยเทคนิค จะช่วยให้การใช้ DHTML ได้ผสมผสานไปในการพัฒนาส่วนที่ตอบโต้กับผู้ใช้ และการพัฒนหน้าเว็บให้มีลูกเล่นมากขึ้นด้วย
การทำงานนอกสถานที่
โปรแกรม AJAX นั้นใช้รูปแบบเอกสารที่ดีและรับรองการแสดงผลในบราวเซอร์ทุกชนิดและในหลาย OS ด้วย ถึงแม้ว่าสถานการณ์อาจเปลี่ยนแปลงได้ตลอดเวลา แต่ AJAX ก็ยังทำงานเชื่อมกันได้ดีระหว่างOS
ในขณะที่โครงสร้างของ AJAX นั้นจะเข้มงวดมากกว่า JAVA โปรแกรม AJAX ในปัจจุบันก็ใช้ Java applets มาเติมเต็มให้กับบราวเซอร์ในส่วนของการสร้างโปรแกรมเล็กๆบนเว็บ
งานส่วนใหญ่ของโปรแกรม (เว็บ) ที่เขียนด้วยเทคนิค AJAX จะทำงานในเครื่องลูกข่าย (client) การตีความในแต่ละหน้านั้น จะทำโดยใช้ DOM (document object model) ของบราวเซอร์ AJAX นั้นยังทำงานหลายๆงานได้ อย่างเช่น ปรับปรุงหรือลบแถวในฐานข้อมูล, หดหรือขยายหน้าฟอร์ม, แสดงผลการค้นหาอย่างง่ายๆ หรือแม้กระทั่งแก้ไขระบบหมวดหมู่โดยไม่ต้องโหลดหน้าทั้งหน้าทุกๆครั้ง จริงแล้วก็เพียงการส่งคำร้อง (Request) เล็กๆไปที่แม่ข่าย (Server) แล้วผลลัพท์ก็จะได้กลับมาอย่างรวดเร็วด้วยเทคนิค จะช่วยให้การใช้ DHTML ได้ผสมผสานไปในการพัฒนาส่วนที่ตอบโต้กับผู้ใช้ และการพัฒนหน้าเว็บให้มีลูกเล่นมากขึ้นด้วย
การทำงานนอกสถานที่
โปรแกรม AJAX นั้นใช้รูปแบบเอกสารที่ดีและรับรองการแสดงผลในบราวเซอร์ทุกชนิดและในหลาย OS ด้วย ถึงแม้ว่าสถานการณ์อาจเปลี่ยนแปลงได้ตลอดเวลา แต่ AJAX ก็ยังทำงานเชื่อมกันได้ดีระหว่างOS
ในขณะที่โครงสร้างของ AJAX นั้นจะเข้มงวดมากกว่า JAVA โปรแกรม AJAX ในปัจจุบันก็ใช้ Java applets มาเติมเต็มให้กับบราวเซอร์ในส่วนของการสร้างโปรแกรมเล็กๆบนเว็บ
ข้อเสียของ AJAX
ความเข้าใจของผู้ใช้
จุดใหญ่อยู่ที่ความเข้าใจผิดของปุ่มย้อนกลับ (BackButton) ของบราวเซอร์ว่ามันควรจะย้อนกลับไปคลิ๊กสุดท้ายที่คุณทำไป หรือหน้าที่แล้วที่มันโหลด (เพราะว่า AJAX ทำให้เราทำงานได้หลายอย่าง หรือหลายคลิ๊กบนเว็บหน้าหนึ่ง) โดยปกติแล้วผู้ใช้มักจะใช้ปุ่มย้อนกลับเพื่อกลับไปหน้าที่แล้วที่มันโหลด แต่ใน AJAX จะไม่เป็นอย่างงั้น นักพัฒนาเว็บได้ช่วยกันคิดหาทางออก โดยส่วนใหญ่จะใช้ IFRAMEs เพื่อทำให้เกิดการการจดจำหน้าที่แล้วโดยบราวเซอร์ ตัวอย่างเช่น GoogleMaps ที่ทำการค้นหาแผนที่ภายใน iframe แล้วแสดงผลในหน้าเว็บหลัก ทำให้มันสามารถทราบถึงพฤติกรรมของผู้ใช้ผ่านทางการกดปุ่มย้อนกลับได้
อีกอย่างคือการทำ bookmark ของผู้ใช้ เนื่องจากบราวเซอร์จะจดจำหน้าเว็บที่ bookmark ผ่านทาง URL เท่านั้น ทางออกส่วนใหญ่อยู่ที่การผสม URL จาก URL (URL Fragment Identifier: การเติมบางส่วนของ URL ตามหลังเครื่องหมาย # ตามมาตรฐาน rfc2396 และ rfc3896) เพื่อให้ URL ไม่เหมือนเดิมทุกครั้งที่มีการคลิ๊ก และผู้ใช้สามารถกลับมาที่หน้านั้นได้อีกครั้งตามต้องการ ซึ่งสามารถทำได้ เนื่องจากบราวเซอร์ส่วนใหญ่นั้น อนุญาติให้ JavaScript นั้นอัพเดตค่าในช่อง URL ทางออกนี้ยังช่วยแก้ปัญหาเรื่องปุ่มย้อนกลับได้อีกด้วย
จุดใหญ่อยู่ที่ความเข้าใจผิดของปุ่มย้อนกลับ (BackButton) ของบราวเซอร์ว่ามันควรจะย้อนกลับไปคลิ๊กสุดท้ายที่คุณทำไป หรือหน้าที่แล้วที่มันโหลด (เพราะว่า AJAX ทำให้เราทำงานได้หลายอย่าง หรือหลายคลิ๊กบนเว็บหน้าหนึ่ง) โดยปกติแล้วผู้ใช้มักจะใช้ปุ่มย้อนกลับเพื่อกลับไปหน้าที่แล้วที่มันโหลด แต่ใน AJAX จะไม่เป็นอย่างงั้น นักพัฒนาเว็บได้ช่วยกันคิดหาทางออก โดยส่วนใหญ่จะใช้ IFRAMEs เพื่อทำให้เกิดการการจดจำหน้าที่แล้วโดยบราวเซอร์ ตัวอย่างเช่น GoogleMaps ที่ทำการค้นหาแผนที่ภายใน iframe แล้วแสดงผลในหน้าเว็บหลัก ทำให้มันสามารถทราบถึงพฤติกรรมของผู้ใช้ผ่านทางการกดปุ่มย้อนกลับได้
อีกอย่างคือการทำ bookmark ของผู้ใช้ เนื่องจากบราวเซอร์จะจดจำหน้าเว็บที่ bookmark ผ่านทาง URL เท่านั้น ทางออกส่วนใหญ่อยู่ที่การผสม URL จาก URL (URL Fragment Identifier: การเติมบางส่วนของ URL ตามหลังเครื่องหมาย # ตามมาตรฐาน rfc2396 และ rfc3896) เพื่อให้ URL ไม่เหมือนเดิมทุกครั้งที่มีการคลิ๊ก และผู้ใช้สามารถกลับมาที่หน้านั้นได้อีกครั้งตามต้องการ ซึ่งสามารถทำได้ เนื่องจากบราวเซอร์ส่วนใหญ่นั้น อนุญาติให้ JavaScript นั้นอัพเดตค่าในช่อง URL ทางออกนี้ยังช่วยแก้ปัญหาเรื่องปุ่มย้อนกลับได้อีกด้วย
การตอบสนอง
หรืออาการหน่วงของเครือข่าย (คือระยะเวลาตั้งแต่ผู้ใช้ส่งคำสั่ง จนถึงแม่ข่ายตอบรับ) นั้น ต้องพิจารณาอย่างดีเมื่อมีการพัฒนาโปรแกรม AJAX ถ้า ไม่มีคำเสนอแนะจากผู้ใช้ ความสามารถในการพรีโหลดและการเขียนรับ XMLHttpRequest object อย่างดีแล้ว ผู้ใช้อาจจะเจอการตอบสนองที่เชื่องช้าของหน้าเว็บในแบบที่ผู้ใช้มักจะไม่คาดหวัง หรืออยากจะเข้าใจทางออกอยู่ ที่การแสดงผลให้ผู้ใช้เห็นว่าตอนนี้ระบบกำลังทำอะไรอยู่ และ / หรือการพรีโหลดข้อมูลบางส่วนออกมาก่อน
หรืออาการหน่วงของเครือข่าย (คือระยะเวลาตั้งแต่ผู้ใช้ส่งคำสั่ง จนถึงแม่ข่ายตอบรับ) นั้น ต้องพิจารณาอย่างดีเมื่อมีการพัฒนาโปรแกรม AJAX ถ้า ไม่มีคำเสนอแนะจากผู้ใช้ ความสามารถในการพรีโหลดและการเขียนรับ XMLHttpRequest object อย่างดีแล้ว ผู้ใช้อาจจะเจอการตอบสนองที่เชื่องช้าของหน้าเว็บในแบบที่ผู้ใช้มักจะไม่คาดหวัง หรืออยากจะเข้าใจทางออกอยู่ ที่การแสดงผลให้ผู้ใช้เห็นว่าตอนนี้ระบบกำลังทำอะไรอยู่ และ / หรือการพรีโหลดข้อมูลบางส่วนออกมาก่อน
JavaScript
ถึงแม้ว่า AJAX ไม่ต้องการการติดตั้งอะไรเพิ่มจากบราวเซอร์ แต่ผู้ใช้จำเป็นต้องเปิดให้บราวเซอร์นั้นยอมรับ JavaScript เท่านั้นยังไม่พอ ผู้ใช้ IE6 หรือเก่ากว่านั้นยังต้องเปิด ActiveX ในบราวเซอร์อีกด้วย เพราะว่า XMLHttpRequest นั้นถูกกำหนดให้ทำการด้วย ActiveX บน IE แต่บน IE7 นั้นได้แก้ปัญหานี้แล้ว
เนื่องจากเป็นเว็บประเภท DHTML ทำให้ AJAX ต้องมีการทดสอบอย่างดีเพื่อไม่ให้เจอการแสดงผลที่ไม่เหมือนกัน เมื่อทำงานบนบราวเซอร์และ OS ที่แตกต่างกัน Library หลายตัวช่วยให้ AJAX นั้นแข็งแกร่งขึ้น แล้วทำให้ปัญหานี้ลดความยุ่งยากลงเรื่อยๆ รวมทั้งการพัฒนาเทคนิคต่างๆที่ช่วยในการออกแบบโปรแกรมให้ลดความยุ่งยาก และเพิ่มทางเลือกอื่นๆ นอกจากการใช้ JavaScript เพียงอย่างเดียว
ถึงแม้ว่า AJAX ไม่ต้องการการติดตั้งอะไรเพิ่มจากบราวเซอร์ แต่ผู้ใช้จำเป็นต้องเปิดให้บราวเซอร์นั้นยอมรับ JavaScript เท่านั้นยังไม่พอ ผู้ใช้ IE6 หรือเก่ากว่านั้นยังต้องเปิด ActiveX ในบราวเซอร์อีกด้วย เพราะว่า XMLHttpRequest นั้นถูกกำหนดให้ทำการด้วย ActiveX บน IE แต่บน IE7 นั้นได้แก้ปัญหานี้แล้ว
เนื่องจากเป็นเว็บประเภท DHTML ทำให้ AJAX ต้องมีการทดสอบอย่างดีเพื่อไม่ให้เจอการแสดงผลที่ไม่เหมือนกัน เมื่อทำงานบนบราวเซอร์และ OS ที่แตกต่างกัน Library หลายตัวช่วยให้ AJAX นั้นแข็งแกร่งขึ้น แล้วทำให้ปัญหานี้ลดความยุ่งยากลงเรื่อยๆ รวมทั้งการพัฒนาเทคนิคต่างๆที่ช่วยในการออกแบบโปรแกรมให้ลดความยุ่งยาก และเพิ่มทางเลือกอื่นๆ นอกจากการใช้ JavaScript เพียงอย่างเดียว
การใช้งานAJAX
การใช้เทคนิค AJAX ใน
Web Application นั้นได้เพิ่มความท้าทายเป็นอย่างมากแก่นักพํฒนา
เว็บที่สนใจเรื่องการเพิ่มความสามารถของเว็บ
โดยมีกลุ่มนักพัฒนาจำนวนหนึ่งที่ทำงานกับทางการ ซึ่งจำเป็นต้องติดอยู่กับกฎ Section
508 Compliance standards เทคนิค AJAX นั้นไม่ได้ปฏิบัติตามกฎนี้อย่างสมบูรณ์
ทำให้มันส่งผลไปถึงขั้นการยกเลิกสัญญาไปเลยในบางครั้ง
ด้วยเหตุผลนี้ นักพัฒนาจึงจำเป็นต้องหาทางออกอื่นๆสำหรับ OS และบราวเซอร์ของผู้ใช้ที่ต่างๆกัน โดยจะใช้เทคนิค AJAX ส่วนใหญ่ในการเพิ่มความสวยงามของการแสดงผลเท่านั้น
ด้วยเหตุผลนี้ นักพัฒนาจึงจำเป็นต้องหาทางออกอื่นๆสำหรับ OS และบราวเซอร์ของผู้ใช้ที่ต่างๆกัน โดยจะใช้เทคนิค AJAX ส่วนใหญ่ในการเพิ่มความสวยงามของการแสดงผลเท่านั้น
แหล่งที่มา : https://www.gotoknow.org/posts/94180
ไม่มีความคิดเห็น:
แสดงความคิดเห็น