ความแตกต่างระหว่าง CGI และ Servlet ความแตกต่างระหว่าง
เป็นความพยายามครั้งแรกในการให้ผู้ใช้เนื้อหาแบบไดนามิก ช่วยให้ผู้ใช้สามารถรันโปรแกรมที่อยู่ในเซิร์ฟเวอร์เพื่อประมวลผลข้อมูลและเข้าถึงฐานข้อมูลเพื่อผลิตเนื้อหาที่เกี่ยวข้องได้ เนื่องจากเป็นโปรแกรมพวกเขาจะถูกเขียนลงในระบบปฏิบัติการดั้งเดิมและเก็บไว้ในไดเร็กทอรีที่ระบุ servlet คือการดำเนินการของ Java ที่มีจุดมุ่งหมายเพื่อให้บริการเช่นเดียวกับ CGI แต่แทนที่จะเป็นโปรแกรมที่คอมไพล์ในระบบปฏิบัติการเนทิฟจะรวบรวมลงใน Java bytecode ซึ่งจะเรียกใช้ในเครื่องเสมือน Java แม้ว่าโปรแกรม Java สามารถรวบรวมไว้ในโค้ดเนมได้ แต่ก็ยังต้องการรวบรวมข้อมูลในไบต์ Java
ในภายหลังวิธีทั่วไปที่ใช้ CGI คือผ่านทางสคริปต์ ซึ่งจะช่วยลดเวลาในการสร้างโปรแกรมและโดยทั่วไปมีความปลอดภัยมากขึ้น ด้วย CGI คุณสามารถเรียกใช้สคริปต์ได้ทันทีขณะที่เซิร์ฟเล็ตคุณต้องแปลสคริปต์ใน Java และรวบรวมข้อมูลลงในเซิร์ฟเล็ตซึ่งเพิ่มเวลาในการโหลดเล็กน้อย
ข้อได้เปรียบแรกของ servlet ผ่าน CGI อยู่ในความเป็นอิสระของแพลตฟอร์ม Servlets สามารถทำงานได้บนระบบปฏิบัติการใด ๆ ตราบใดที่มีการติดตั้ง JVM ไว้ซึ่งหมายความว่าคุณจะไม่ประสบปัญหาใด ๆ แม้ว่าคุณจะเลือกที่จะเปลี่ยนระบบปฏิบัติการก็ตาม ด้วย CGI การเปลี่ยนระบบปฏิบัติการเป็นขั้นตอนที่ยากลำบากและลำบากเนื่องจากคุณต้องคอมไพล์โปรแกรมใหม่ในระบบปฏิบัติการใหม่
เนื่องจากคุณใช้งานโปรแกรมที่เป็นอิสระใน CGI พวกเขาสร้างกระบวนการของตัวเองขึ้นเมื่อมีการดำเนินการสิ่งที่ไม่ได้เกิดขึ้นกับเซิร์ฟเล็ตเนื่องจากพวกเขามีส่วนร่วมในพื้นที่หน่วยความจำของ JVM ซึ่งอาจทำให้เกิดปัญหาเกี่ยวกับค่าใช้จ่ายโดยเฉพาะอย่างยิ่งเมื่อคุณเพิ่มจำนวนผู้ใช้ตามจำนวนครั้ง นอกจากนี้ยังสร้างปัญหาเกี่ยวกับช่องโหว่เนื่องจากโปรแกรมไม่ได้รับการควบคุมในลักษณะใดเมื่อรันบนเซิร์ฟเวอร์สรุป:
1. CGI มักเป็น executables ที่มีอยู่ในระบบปฏิบัติการของเซิร์ฟเวอร์แม้ว่าเซิร์ฟเล็ตสามารถถูกคอมไพล์ไปยังระบบปฏิบัติการพื้นเมืองได้ แต่ก็สามารถคอมไพล์ไปเป็น Java bytecode ที่รันบน JVM2 โปรแกรม CGI จะขึ้นอยู่กับแพลตฟอร์มในขณะที่เซิร์ฟเล็ตมีแพลตฟอร์มที่เป็นอิสระ
3. โปรแกรม CGI ทำงานเป็นกระบวนการแยกต่างหากในคอมพิวเตอร์ในขณะที่เซิร์ฟเล็ตทำงานบน JVM
4 CGI อาจเสี่ยงต่อการโจมตีมากกว่า servlets
5. CGI สามารถประมวลผลสคริปต์ได้โดยตรงในขณะที่ต้องแปลและเรียบเรียงก่อนจึงจะสามารถเรียกใช้เป็น