CGI vs Servlet
CGI (Giao diện cổng chung) là nỗ lực đầu tiên trong việc cung cấp cho người dùng nội dung động. Nó cho phép người dùng thực thi một chương trình nằm trong máy chủ để xử lý dữ liệu và thậm chí truy cập cơ sở dữ liệu để tạo ra nội dung liên quan. Vì đây là các chương trình, chúng được viết trong hệ điều hành gốc và sau đó được lưu trữ trong một thư mục cụ thể. Một servlet là một triển khai của Java nhằm cung cấp dịch vụ giống như CGI, nhưng thay vì các chương trình được biên dịch trong hệ điều hành gốc, nó biên dịch thành mã byte Java, sau đó chạy trong máy ảo Java. Mặc dù các chương trình Java có thể được biên dịch thành mã gốc, nhưng chúng vẫn thích biên dịch theo mã byte Java.
Ưu điểm đầu tiên của servlets so với CGI là ở tính độc lập nền tảng của nó. Các máy chủ có thể chạy trên bất kỳ hệ điều hành nào miễn là JVM được cài đặt, điều đó có nghĩa là bạn sẽ không gặp vấn đề gì ngay cả khi bạn chọn chuyển đổi hệ điều hành. Với CGI, chuyển đổi hệ điều hành là một quá trình khó khăn và tốn nhiều công sức vì bạn sẽ cần phải biên dịch lại các chương trình trong hệ điều hành mới.
Vì bạn đang chạy các chương trình độc lập trong CGI, chúng tạo ra quy trình riêng của chúng khi chúng được thực thi, điều gì đó không xảy ra với các servlet khi chúng chỉ chia sẻ trong không gian bộ nhớ của JVM. Điều này có thể dẫn đến các vấn đề liên quan đến chi phí, đặc biệt là khi bạn tăng số lượng người dùng theo cấp số nhân. Nó cũng tạo ra các vấn đề về lỗ hổng vì chương trình không được kiểm soát theo bất kỳ cách nào một khi nó được chạy trên máy chủ.
Về sau, phương pháp phổ biến hơn khi sử dụng CGI là thông qua các tập lệnh. Điều này giúp giảm thời gian cần thiết trong việc tạo chương trình và thường an toàn hơn. Với CGI, bạn có thể chạy các tập lệnh ngay lập tức, trong khi các servlet, bạn sẽ cần dịch tập lệnh sang Java và biên dịch nó thành một tập lệnh bổ sung thêm một chút thời gian tải.
Tóm lược:
1.CGI thường là các tệp thực thi có nguồn gốc từ hệ điều hành của máy chủ, mặc dù các máy chủ cũng có thể được biên dịch sang HĐH gốc, nó có thể được biên dịch sang mã byte Java, sau đó chạy trên JVM
Các chương trình 2.CGI phụ thuộc vào nền tảng trong khi các máy chủ độc lập với nền tảng
Các chương trình 3.CGI chạy như các tiến trình riêng biệt trên máy tính trong khi các máy chủ chạy trên JVM
4.CGI có thể dễ bị tấn công hơn so với servlets
5.CGI có thể trực tiếp xử lý các tập lệnh trong khi nó cần được dịch và biên dịch trước khi nó có thể được chạy như một servlet