วันพฤหัสบดีที่ 2 มีนาคม พ.ศ. 2560

AJAX คืออะไร

AJAX คืออะไร
     AJAX (Asynchronous JavaScript And XML) คือเทคนิคการพัฒนาเว็บ ที่จะสร้างโปรแกรมบนเว็บ (webapplication) ที่ตอบสนองกับผู้ใช้ได้อย่างเต็มที่ ความตั้งใจก็คือ ทำให้หน้าเว็บนั้นตอบสนองได้เฉพาะจุด และแลกเปลี่ยนข้อมูลกับฐานข้อมูล (Server) ในเบื้องหลัง เท่านั้น ดังนั้น ทุกๆครั้งที่มีการกระทำ (Action) ใดๆของผู้ใช้หน้าเว็บนั้นๆ ไม่จำเป็นจะต้องโหลดหน้าใหม่ทั้งหน้าทุกๆครั้ง ซึ่งหมาย ความว่าเว็บจะตอบสนองมากขึ้น ทำงานได้เร็วขึ้น กว้างขวางมากขึ้น และเข้าใกล้โปรแกรมปกติ (ที่เราต้อง install ก่อนใช้) มากขึ้นด้วย
เทคนิค AJAX เป็นการผสมผสานกันของ
- XHTML (หรือ HTML), CSS สำหรับตกแต่ง และจัดระเบียบข้อมูลในส่วนแสดงผล
- DOM และ JavaScript หรือ JScript ซึ่งเป็น client-side scripting language, เอาไว้แสดงผลแบบไดนามิก และจัดการตอบสนองกับการแสดงผล
- XMLHttpRequest เป็น object ที่ใช้สำหรับแลกเปลี่ยนข้อมูลกับ webserver แบบไม่ต่อเนื่องกัน (Asynchronous) ในบางสถานการณ์ object ประเภท IFrame จะถูกใช้แทนการใช้ XMLHttpRequest
- XML ที่จะใช้เป็นสื่อกลางในการรับข้อมูลมาจาก Server (จริงๆแล้วจะใช้แบบไหนก้อได้ เช่น HTML, Text, JSON หรือแม้กระทั่ง EBML) 
ว่าไปแล้ว มันก็คล้ายๆ DHTML, LAMP, หรือ SPA ที่ว่า AJAX ไม่ใช่เทคโนโลยีใหม่โดยตัวมันเอง แต่มันเป็นการเรียกการผสมผสานเทคโนโลยีในปัจจุบันหลายๆตัวเข้ามารวมกัน
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

     ในวงการเขียนเว็บ (แต่ก่อนนั้นจะแลกเปลี่ยนข่าวสารกันที่ newsgroupmicrosoft.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
ความเข้าใจของผู้ใช้
จุดใหญ่อยู่ที่ความเข้าใจผิดของปุ่มย้อนกลับ (BackButton) ของบราวเซอร์ว่ามันควรจะย้อนกลับไปคลิ๊กสุดท้ายที่คุณทำไป หรือหน้าที่แล้วที่มันโหลด (เพราะว่า AJAX ทำให้เราทำงานได้หลายอย่าง หรือหลายคลิ๊กบนเว็บหน้าหนึ่ง) โดยปกติแล้วผู้ใช้มักจะใช้ปุ่มย้อนกลับเพื่อกลับไปหน้าที่แล้วที่มันโหลด แต่ใน AJAX จะไม่เป็นอย่างงั้น นักพัฒนาเว็บได้ช่วยกันคิดหาทางออก โดยส่วนใหญ่จะใช้ IFRAMEs เพื่อทำให้เกิดการการจดจำหน้าที่แล้วโดยบราวเซอร์ ตัวอย่างเช่น GoogleMaps ที่ทำการค้นหาแผนที่ภายใน iframe แล้วแสดงผลในหน้าเว็บหลัก ทำให้มันสามารถทราบถึงพฤติกรรมของผู้ใช้ผ่านทางการกดปุ่มย้อนกลับได้
อีกอย่างคือการทำ bookmark ของผู้ใช้ เนื่องจากบราวเซอร์จะจดจำหน้าเว็บที่ bookmark ผ่านทาง URL เท่านั้น ทางออกส่วนใหญ่อยู่ที่การผสม URL จาก URL (URL Fragment Identifier: การเติมบางส่วนของ URL ตามหลังเครื่องหมาย # ตามมาตรฐาน rfc2396 และ rfc3896) เพื่อให้ URL ไม่เหมือนเดิมทุกครั้งที่มีการคลิ๊ก และผู้ใช้สามารถกลับมาที่หน้านั้นได้อีกครั้งตามต้องการ ซึ่งสามารถทำได้ เนื่องจากบราวเซอร์ส่วนใหญ่นั้น อนุญาติให้ JavaScript นั้นอัพเดตค่าในช่อง URL ทางออกนี้ยังช่วยแก้ปัญหาเรื่องปุ่มย้อนกลับได้อีกด้วย

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

JavaScript
ถึงแม้ว่า AJAX ไม่ต้องการการติดตั้งอะไรเพิ่มจากบราวเซอร์ แต่ผู้ใช้จำเป็นต้องเปิดให้บราวเซอร์นั้นยอมรับ JavaScript เท่านั้นยังไม่ พอ ผู้ใช้ IE6 หรือเก่ากว่านั้นยังต้องเปิด ActiveX ในบราวเซอร์อีกด้วย เพราะว่า XMLHttpRequest นั้นถูกกำหนดให้ทำการด้วย ActiveX บน IE แต่บน IE7 นั้นได้แก้ปัญหานี้แล้ว
เนื่องจากเป็นเว็บประเภท DHTML ทำให้ AJAX ต้องมีการทดสอบอย่างดีเพื่อไม่ให้เจอการแสดงผลที่ไม่เหมือนกัน เมื่อทำงานบนบราวเซอร์และ OS ที่แตกต่างกัน Library หลายตัวช่วยให้ AJAX นั้นแข็งแกร่งขึ้น แล้วทำให้ปัญหานี้ลดความยุ่งยากลงเรื่อยๆ รวมทั้งการพัฒนาเทคนิคต่างๆที่ช่วยในการออกแบบโปรแกรมให้ลดความยุ่งยาก และเพิ่มทางเลือกอื่นๆ นอกจากการใช้ JavaScript เพียงอย่างเดียว

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

การใช้งานAJAX
การใช้เทคนิค AJAX ใน Web Application นั้นได้เพิ่มความท้าทายเป็นอย่างมากแก่นักพํฒนา เว็บที่สนใจเรื่องการเพิ่มความสามารถของเว็บ โดยมีกลุ่มนักพัฒนาจำนวนหนึ่งที่ทำงานกับทางการ ซึ่งจำเป็นต้องติดอยู่กับกฎ Section 508 Compliance standards เทคนิค AJAX นั้นไม่ได้ปฏิบัติตามกฎนี้อย่างสมบูรณ์ ทำให้มันส่งผลไปถึงขั้นการยกเลิกสัญญาไปเลยในบางครั้ง
ด้วยเหตุผลนี้ นักพัฒนาจึงจำเป็นต้องหาทางออกอื่นๆสำหรับ OS และบราวเซอร์ของผู้ใช้ที่ต่างๆกัน โดยจะใช้เทคนิค AJAX ส่วนใหญ่ในการเพิ่มความสวยงามของการแสดงผลเท่านั้น

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

อ้างอิงโดย

https://www.gotoknow.org/posts/94180

ไม่มีความคิดเห็น:

แสดงความคิดเห็น