Sự khác biệt giữa CGI và Servlet Sự khác biệt giữa
là lần đầu tiên cố gắng cung cấp cho người dùng nội dung động. Nó cho phép người dùng thực hiện một chương trình nằm trên máy chủ để xử lý dữ liệu và thậm chí truy cập cơ sở dữ liệu để sản xuất nội dung có liên quan. Vì đây là những 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 sự 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ó sẽ biên dịch thành bytecode 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ã nguồn gốc, chúng vẫn thích biên dịch trong bytecode Java.
Lợi thế đầu tiên của servlet trên CGI là trong nền tảng độc lập của nó. Servlet có thể chạy trên bất kỳ hệ điều hành nào miễn là JVM được cài đặt, có nghĩa là bạn sẽ không gặp bất kỳ vấn đề nào 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à mất thời gian 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 nên chúng tạo ra quy trình của riêng mình khi chúng được thực hiện, điều gì đó không xảy ra với các servlet khi chúng chỉ chia sẻ 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 sử dụng theo cấp số nhân. Nó cũng tạo ra các vấn đề dễ bị tổn thương vì chương trình không được kiểm soát dưới bất kỳ hình thức nào khi nó được chạy trên máy chủ.
Sau này, phương pháp phổ biến nhất khi sử dụng CGI là thông qua các kịch bản. Điều này làm giảm thời gian cần thiết trong việc tạo ra các chương trình và nói chung là 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 cần phải dịch mã sang Java và biên dịch nó vào một servlet làm tăng thời gian tải.
Tóm tắt:
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 servlet cũng có thể được biên dịch vào hệ điều hành gốc mà nó có thể được biên dịch sang bytecode Java, sau đó chạy trên JVM 2. Các chương trình CGI phụ thuộc vào nền tảng trong khi các servlet là nền tảng độc lập
3. Các chương trình CGI chạy như các tiến trình riêng biệt trên máy tính trong khi các servlet chạy trên JVM
4. CGI có thể dễ bị tấn công hơn servlet
5. CGI có thể trực tiếp xử lý các tập lệnh trong khi cần phải dịch và biên dịch trước khi nó có thể được chạy như là một servlet