แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | CGI | servlet |
---|---|---|
ขั้นพื้นฐาน | โปรแกรมถูกเขียนใน OS ดั้งเดิม | โปรแกรมที่ใช้งานโดยใช้ Java |
การพึ่งพาแพลตฟอร์ม | ขึ้นอยู่กับแพลตฟอร์ม | ไม่ต้องพึ่งพาแพลตฟอร์ม |
การสร้างกระบวนการ | คำขอของลูกค้าแต่ละคนสร้างกระบวนการของตัวเอง | กระบวนการถูกสร้างขึ้นโดยขึ้นอยู่กับประเภทของคำขอของลูกค้า |
การแปลงของสคริปต์ | นำเสนอในรูปแบบของไฟล์เรียกทำงาน (เนทิฟกับเซิร์ฟเวอร์ OS) | เรียบเรียงเป็น Java Bytecode |
วิ่งบน | กระบวนการแยก | JVM |
ความปลอดภัย | เสี่ยงต่อการถูกโจมตี | สามารถต้านทานการโจมตี |
ความเร็ว | ช้าลง | ได้เร็วขึ้น |
การประมวลผลของสคริปต์ | โดยตรง | ก่อนที่จะรันสคริปต์มันจะถูกแปลและเรียบเรียง |
ความเบา | ไม่สามารถทำการพอร์ตได้ | แบบพกพา |
ความหมายของ CGI
CGI (Common Gateway Interface) เป็นอินเทอร์เฟซที่จัดการโปรแกรมภายนอก (สคริปต์ CGI) บนเว็บเซิร์ฟเวอร์เพื่อเปิดใช้งานการทำงานของหน้าเว็บแบบโต้ตอบ CGI ได้รับการพัฒนาโดย NCSA (National Center for Supercomputing Applications) ในปี 1993 โดยอยู่ในฝั่งเซิร์ฟเวอร์และเปิดใช้งานเว็บเบราว์เซอร์เพื่อโต้ตอบกับโปรแกรมบนเว็บเซิร์ฟเวอร์ ตัวอย่างเช่นถ้าเว็บเพจสอบถามฐานข้อมูลหรือผู้ใช้กำลังส่งข้อมูลแบบฟอร์มไปยังเซิร์ฟเวอร์ในเวลานั้นสคริปต์ CGI จะถูกเรียกใช้ เซิร์ฟเวอร์ส่งผ่านข้อมูลนั้นไปยังแอปพลิเคชันในสองวิธี GET หรือ POST จากนั้นแอปพลิเคชันจะตอบกลับไปยังเซิร์ฟเวอร์ที่เบราว์เซอร์ ด้วยวิธีนี้เบราว์เซอร์จะได้รับผลลัพธ์บางอย่างสำหรับผู้ใช้
CGI เป็นข้อกำหนดสำหรับการอธิบายวิธีการเรียกใช้สคริปต์ CGI และให้ผลลัพธ์กลับไปที่เซิร์ฟเวอร์สำหรับโปรแกรมเฉพาะเหล่านั้น ฟังก์ชั่นของ CGI คือการสแกนข้อมูลที่ได้รับจากเบราว์เซอร์และสร้างการตอบสนองที่เหมาะสมหลังจากเสร็จสิ้นภารกิจสคริปต์ CGI จะถูกยกเลิก ใน Common Gateway Interface นั้นหมายถึงว่ามันสามารถทำงานได้ดีในระบบปฏิบัติการหรือภาษาการเขียนโปรแกรม
ก่อนหน้านี้เชลล์สคริปต์ UNIX และ PERL ถูกใช้เพื่อเขียนโปรแกรม CGI นั่นคือเหตุผลที่เรียกว่า CGI "สคริปต์" แต่ตอนนี้สามารถใช้ภาษาใดก็ได้เช่น C, C ++, Perl, Visual Basic หรือ Python แม้ว่า CGI สามารถนำไปสู่ปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นเนื่องจากเว็บเซิร์ฟเวอร์ยังสามารถจัดการไฟล์ที่ปฏิบัติการได้เป็นโปรแกรม CGI ในบางไดเรกทอรี CGI จัดการแต่ละคำขอของลูกค้าโดยกระบวนการแยกซึ่งเพิ่มภาระเซิร์ฟเวอร์ทำให้ช้าลง
ความหมายของ Servlet
Servlet เป็นองค์ประกอบของเว็บที่ใช้ Java เป็นโปรแกรมกลางซึ่งอำนวยความสะดวกในการโต้ตอบระหว่างเว็บเบราว์เซอร์หรือไคลเอนต์ HTTP และเซิร์ฟเวอร์ HTTP คล้ายกับ CGI, servlets ยังสามารถใช้ในการรวบรวมข้อมูลโดยแบบฟอร์มหน้าเว็บ, แสดงระเบียนจากฐานข้อมูลและสร้างหน้าเว็บแบบไดนามิกด้วยความช่วยเหลือของภาชนะ Servlet เป็นคลาส Java ที่ไม่พึ่งพาแพลตฟอร์มและคอมไพล์แล้วด้วย bytecode ซึ่งไม่ขึ้นกับแพลตฟอร์ม ไบต์รหัสเป็นกลางแพลตฟอร์มสามารถจัดเก็บและดำเนินการแบบไดนามิกโดยเว็บเซิร์ฟเวอร์ Java Servlet ใช้ socket และกลไก RMI เพื่อสร้างการเชื่อมต่อระหว่างแอพเพล็ตฐานข้อมูลหรือโปรแกรมฐานข้อมูลอื่น ๆ
Servlet container เป็นส่วนหนึ่งของเว็บเซิร์ฟเวอร์ที่รองรับ โปรโตคอล HTTP และ HTTPS มันใช้วิธีการร้องขอ / ตอบสนองโดยใช้โปรโตคอล HTTP และ HTTPS เพื่อเปิดใช้งานการโต้ตอบกับเว็บไคลเอ็นต์ ซึ่งแตกต่างจาก CGI, servlet ทำงานในพื้นที่ที่อยู่ของเว็บเซิร์ฟเวอร์ซึ่งลูกค้าแต่ละรายไม่จำเป็นต้องแยกจากกัน ในเซิร์ฟเล็ตมีการบังคับใช้การรวบรวมข้อ จำกัด บนเซิร์ฟเวอร์เพื่อปกป้องทรัพยากรบนเซิร์ฟเวอร์
ความแตกต่างที่สำคัญระหว่าง CGI และ Servlet
- สคริปต์ CGI ถูกเขียนในระบบปฏิบัติการดั้งเดิมและเก็บไว้ในไดเรกทอรีที่แน่นอน ในทางกลับกันโปรแกรม servlet มักจะเขียนใน Java ซึ่งรวบรวมเป็น Java bytecode และดำเนินการใน JVM
- CGI เป็นแพลตฟอร์มเฉพาะซึ่งทำให้ยากต่อการสลับระหว่างระบบปฏิบัติการ เมื่อเทียบกับ Servlets สามารถดำเนินการในระบบปฏิบัติการใด ๆ ที่ติดตั้ง JVM ดังนั้นจึงเป็นอิสระจากแพลตฟอร์ม
- ใน CGI คำขอของลูกค้าที่มาถึงแต่ละคนสามารถสร้างกระบวนการแยกในขณะที่ servlet กระบวนการไม่ได้สร้างขึ้นโดยไม่จำเป็นและแบ่งปันพื้นที่หน่วยความจำของ JVM
- สคริปต์ CGI เป็นโปรแกรมปฏิบัติการที่เขียนในระบบปฏิบัติการดั้งเดิมของเซิร์ฟเวอร์ ในทางตรงกันข้าม servlets ถูกคอมไพล์ไปยัง Java bytecode ที่รันบน JVM
- Servlet มีความปลอดภัยมากกว่า CGI เนื่องจากใช้ Java
- ความเร็วประสิทธิภาพและประสิทธิภาพของ servlet ดีกว่า CGI
- สคริปต์ CGI สามารถประมวลผลได้โดยตรง ในทางตรงกันข้าม servlet จะแปลและคอมไพล์โปรแกรมก่อนจากนั้นประมวลผล
- เมื่อพูดถึงเรื่องการพกพา servlet นั้นพกพาได้ในขณะที่ CGI ไม่ใช่
ข้อสรุป
CGI และ Servlet ทำงานในลักษณะเดียวกัน แต่การใช้ servlet นั้นมีความได้เปรียบมากกว่า CGI เนื่องจาก servlet นั้นรวดเร็วปลอดภัยแพลตฟอร์มอิสระพัฒนาได้ง่ายเข้าถึงได้ผ่าน API หลายตัวและรองรับเว็บเซิร์ฟเวอร์ต่างๆ