คำนิยามของ Web Application Framework (เวอร์ชันจาวา)

ขอกล่าวถึงการสร้าง Web Application สำหรับผู้ที่ไม่เคยเขียน JSP/Servlet มาก่อนนะครับ เพื่อที่จะได้เข้าใจคำว่า framework ให้มากขึ้น

เราต้องการสร้าง Java Web Application ด้วย Servlet/JSP ในการบันทึกข้อมูลจากผู้ใช้ จะมีกระบวนการที่เกิดขึ้นดังนี้

  • ผู้ใช้กรอกข้อมูลในส่วนของหน้า form แล้วกดปุ่ม submit
  • ในโค้ด Servlet เราจะต้องดึงข้อมูลที่ผู้ใช้ส่งมา โดยส่วนมากจะใช้คำสั่ง
    request.getParameter("ชื่อตัวแปร");
  • ทำการ validate ข้อมูลที่ส่งมา ถ้าไม่ผ่านก็ให้ไปแสดงผลที่หน้าแสดง error ถ้าผ่านก็ให้บันทึกข้อมูล แล้วแสดงหน้าจอว่าบันทึกเสร็จเรียบร้อย


ถ้า Web Application ของเรามีความซับซ้อนมากขึ้น เช่น

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

ซึ่งโดยส่วนมาก ในการพัฒนา Web Application ก็จะทำกันเป็น pattern เดียวกัน คือ

  1. User ส่ง Request เข้ามา
  2. Validate สิทธิ์
  3. Validate ข้อมูล
  4. ทำงานตามหน้าที่ของแต่ละคลาส
  5. แสดงผลลัพธ์หรือแสดงข้อผิดพลาด

คนที่เขียน Web Application ก็จะพบการทำงานส่วนอื่นๆ ก็จะคล้ายกันอย่างนี้เสมอ และเลี่ยงไม่ได้ที่จะต้องทำ เราเรียกกระบวนการทำงานนี้ว่า workflow (แปลตรงตัว กระบวนการหรือลำดับการทำงาน) ซึ่งถ้าต้องเสียเวลามานั่งทำในส่วนที่ซ้ำๆ กันอย่างนี้จะทำให้เสียเวลาในการพัฒนาส่วนของการทำงานหลักที่เราต้องทำ เช่น แค่จะบันทึกข้อมูลแต่เราต้องทำขั้นตอนอื่นๆ อีกหลายอย่าง และซ้ำๆ กัน แล้วแต่ละคนก็ design workflow อาจจะไม่เหมือนกันก็ได้ ทั้งๆ ที่ผลลัพธ์ก็ได้เหมือนกัน จึงมีคนพยายามที่จะทำให้กระบวนการทำงานนี้เป็นมาตรฐานไม่ว่าจะสร้างกี่โปรเจคก็ตาม อารมณ์ประมาณว่า ยังไงก็ต้องเขียนอย่างนี้อยู่แล้ว ถ้าอย่างนั้นก็เขียนไว้ให้ใช้งานเลย เวลาอยากเขียนให้ทำงานแบบนี้จะได้ไม่ต้องมาเขียนใหม่ จะได้มีเวลาเอาไปคิดส่วนการทำงานหลักที่เราต้องทำจริงๆ สิ่งที่คนเหล่านี้คิดเรียกว่า Web Application Framework เช่น Spring MVC, Struts, Seam, Grails เป็นต้น

แต่ทว่า แต่ละเจ้าก็ design workflow ต่างกันออกไป อาจจะเพราะแต่ละเจ้าก็ออกแบบให้แก้ปัญหาที่เจ้าอื่นพบเจอ แล้วยังแก้ไม่ได้ ทำให้มีข้อดีข้อเสียแตกต่างกันไป สุดท้ายคนลำบากก็คือพวกเราตาดำๆ ที่จะต้องมานั่งศึกษาว่า แต่ละ framework มันใช้อย่างไร

สิ่งที่คาดว่าจะได้รับจากบทความนี้ หวังว่าจะเข้าใจ framework มากขึ้นนะครับ สรุปทิ้งท้ายซักหน่อยดีกว่า
คำว่า framework ก็คือ โค้ดโปรแกรมที่มีกระบวนการทำงานอย่างใดอย่างหนึ่ง และเป็นสิ่งที่ต้องทำอยู่เสมอ แล้วเปิดโอกาสให้เราเอาโค้ดที่เราต้องการให้ทำงานบ่างอย่างได้
เช่น MVC Framework ก็เป็นการทำงานของ Web Application ที่มีการแยกส่วนการทำงานตามหน้าที่ Model-View-Controller
หรือ Javascript Framework ก็เป็นโค้ดการทำงานในส่วนของ Javascript ที่ทุกคนต้องเจอ ก็ทำเป็นไฟล์ให้เราเรียกใช้เพื่อความสะดวก

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

2 thoughts on “คำนิยามของ Web Application Framework (เวอร์ชันจาวา)

  1. ยกตัวอย่างได้เห็นภาพชัดเจนดีครับ ขอบคุณครับ
    ปล.แชร์ต่อเยอะๆนะครับ ติดตามๆ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s