Web Container คืออะไร
มีคำถามเข้ามาเกี่ยวกับเรื่องของ Container ที่เป็นใจกลางสำคัญในการขับเคลื่อน web application
Container คิดง่ายๆ มันก็เหมือนตู้คอนเทนเนอร์เนี่ยแหละ เป็นกล่องเก็บอะไรซักอย่างภายใน เพียงแต่ไม่ได้เป็นของที่จับต้องได้เหมือนที่รถบรรทุกขนไปขนมากัน
ในเรื่องของ web application ที่ผมรู้จักก็มี web container กับ ejb container มันก็คือกล่องที่เราไว้เก็บเว็บ หรือเก็บ ejb นั่นเอง โดยของในกล่องที่ว่านี้ อาจเป็น library ที่จำเป็นต่อการใช้งานนั้นๆ
หลังจากตรงนี้ ความสงสัยก็จะเริ่มเกิดแล้ว ผมจะแตกประเด็นออกเป็นทีละคำถามแล้วกันนะครับ(มีคำถามอีกส่งมาใน comment ครับ ถ้าตอบได้จะตอบ ถ้าตอบไม่ได้จะลองหาข้อมูลดูครับ)
Q: "Container คืออะไร"
A: ตัวของ Container จะมี library เฉพาะของตัวเอง ก็ยังจะมีการควบคุมต่างๆ ด้วย เช่น transaction, security, life cycle เป็นต้นครับ
Q: "ต่างกับ framework ตรงไหน"
A: คำว่า framework มันทำให้ผมรู้สึกว่ามันมีอะไรมาครอบ java ตัวหลักก็จริงอยู่ แต่ framework ไม่ได้มาจัดการอะไรนะครับ framework สร้างขึ้นมาก็เพื่อให้เราได้ใช้งานด้านเฉพาะนั้นๆให้ตรงจุด เป็นตัวช่วยให้เราทำงานได้ง่ายขึ้นครับ
Q: "JDK ก็มี library พื้นฐานของ Java มีการจัดการคล้ายกัน แล้วทำไมถึงไม่นับ JDK เป็น Container"
A: ไม่มี Java(JDK/JRE) ทำให้ container ทำงานไม่ได้, ไม่มี web container ทำให้ web app. ทำงานไม่ได้ ซึ่งก็แปลว่า JDK ไม่ได้ควบคุมทุกสิ่งอย่างได้หมด Container เข้ามาจัดการงานด้าน web อีกทีหนึ่ง เพราะฉะนั้นมันไม่ได้เหมือนกันเลยครับ ^^
Q: "Web Server กับ Web Container เหมือนกันหรือเปล่า"
A: อันนี้บอกได้เลยว่าไม่ ครับ server ก็คือ server ทำหน้าที่ในการให้บริการทางด้าน network กับ client ที่มาเรียก แต่หากเจอ jsp/servlet ก็จะมีการเรียกผ่าน web container อีกที เพื่อให้มีการ compile แล้วถึงให้ server ส่ง output ไปที่ client
เพราะฉะนั้นแล้ว Container เป็นสิ่งจำเป็นครับ บางครั้งเราเลือกใช้เซิฟเวอร์ที่ไม่มี container รองรับ เช่น ไม่มี EJB Container แน่นอน เราก็ไม่สามารถเล่น EJB ได้ การเลือก platform ก็เป็นสิ่งสำคัญเหมือนกันนะครับ.. ทีนี้ เรามาดูภาพประกอบว่าภายใน Web Server ที่มี Container เนี่ย ทำงานอะไรยังไงแบบคร่าวๆ ดูครับ
เอาล่ะ บล็อกสั้นๆ อ่านแล้วงงๆ ไม่ต้องอ่านตามผมเยอะนักนะครับ ลองคิดดูให้ดี ลองมองว่าแต่ละอย่างมันคืออะไร ทำความเข้าใจกับมัน แล้วก็จะพบว่า มันไม่ได้มีอะไรครับ ^_^
สุดท้ายนี้ หากผมเข้าใจอะไรผิดไป รบกวนชี้แนะและให้คำแนะนำด้วยนะครับ จะได้เข้าใจในสิ่งที่ถูกต้อง
ขอบคุณครับ
ข้อมูลเพิ่มเติม
http://it-madmonster.blogspot.com/2009/07/web-container.html
http://www.th.getwebzite.com/db_jsp/jsp_four.php
Container คิดง่ายๆ มันก็เหมือนตู้คอนเทนเนอร์เนี่ยแหละ เป็นกล่องเก็บอะไรซักอย่างภายใน เพียงแต่ไม่ได้เป็นของที่จับต้องได้เหมือนที่รถบรรทุกขนไปขนมากัน
ในเรื่องของ web application ที่ผมรู้จักก็มี web container กับ ejb container มันก็คือกล่องที่เราไว้เก็บเว็บ หรือเก็บ ejb นั่นเอง โดยของในกล่องที่ว่านี้ อาจเป็น library ที่จำเป็นต่อการใช้งานนั้นๆ
หลังจากตรงนี้ ความสงสัยก็จะเริ่มเกิดแล้ว ผมจะแตกประเด็นออกเป็นทีละคำถามแล้วกันนะครับ(มีคำถามอีกส่งมาใน comment ครับ ถ้าตอบได้จะตอบ ถ้าตอบไม่ได้จะลองหาข้อมูลดูครับ)
Q: "Container คืออะไร"
A: ตัวของ Container จะมี library เฉพาะของตัวเอง ก็ยังจะมีการควบคุมต่างๆ ด้วย เช่น transaction, security, life cycle เป็นต้นครับ
Q: "ต่างกับ framework ตรงไหน"
A: คำว่า framework มันทำให้ผมรู้สึกว่ามันมีอะไรมาครอบ java ตัวหลักก็จริงอยู่ แต่ framework ไม่ได้มาจัดการอะไรนะครับ framework สร้างขึ้นมาก็เพื่อให้เราได้ใช้งานด้านเฉพาะนั้นๆให้ตรงจุด เป็นตัวช่วยให้เราทำงานได้ง่ายขึ้นครับ
Q: "JDK ก็มี library พื้นฐานของ Java มีการจัดการคล้ายกัน แล้วทำไมถึงไม่นับ JDK เป็น Container"
A: ไม่มี Java(JDK/JRE) ทำให้ container ทำงานไม่ได้, ไม่มี web container ทำให้ web app. ทำงานไม่ได้ ซึ่งก็แปลว่า JDK ไม่ได้ควบคุมทุกสิ่งอย่างได้หมด Container เข้ามาจัดการงานด้าน web อีกทีหนึ่ง เพราะฉะนั้นมันไม่ได้เหมือนกันเลยครับ ^^
Q: "Web Server กับ Web Container เหมือนกันหรือเปล่า"
A: อันนี้บอกได้เลยว่าไม่ ครับ server ก็คือ server ทำหน้าที่ในการให้บริการทางด้าน network กับ client ที่มาเรียก แต่หากเจอ jsp/servlet ก็จะมีการเรียกผ่าน web container อีกที เพื่อให้มีการ compile แล้วถึงให้ server ส่ง output ไปที่ client
เพราะฉะนั้นแล้ว Container เป็นสิ่งจำเป็นครับ บางครั้งเราเลือกใช้เซิฟเวอร์ที่ไม่มี container รองรับ เช่น ไม่มี EJB Container แน่นอน เราก็ไม่สามารถเล่น EJB ได้ การเลือก platform ก็เป็นสิ่งสำคัญเหมือนกันนะครับ.. ทีนี้ เรามาดูภาพประกอบว่าภายใน Web Server ที่มี Container เนี่ย ทำงานอะไรยังไงแบบคร่าวๆ ดูครับ
เอาล่ะ บล็อกสั้นๆ อ่านแล้วงงๆ ไม่ต้องอ่านตามผมเยอะนักนะครับ ลองคิดดูให้ดี ลองมองว่าแต่ละอย่างมันคืออะไร ทำความเข้าใจกับมัน แล้วก็จะพบว่า มันไม่ได้มีอะไรครับ ^_^
สุดท้ายนี้ หากผมเข้าใจอะไรผิดไป รบกวนชี้แนะและให้คำแนะนำด้วยนะครับ จะได้เข้าใจในสิ่งที่ถูกต้อง
ขอบคุณครับ
ข้อมูลเพิ่มเติม
http://it-madmonster.blogspot.com/2009/07/web-container.html
http://www.th.getwebzite.com/db_jsp/jsp_four.php