
Biểu đồ so sánh
Cơ sở để so sánh | CGI | Phục vụ |
---|---|---|
Căn bản | Các chương trình được viết trong hệ điều hành gốc. | Các chương trình được sử dụng bằng Java. |
Nền tảng phụ thuộc | Nền tảng phụ thuộc | Không dựa vào nền tảng |
Tạo quy trình | Mỗi yêu cầu khách hàng tạo ra quy trình riêng của mình. | Các quy trình được tạo ra tùy thuộc vào loại yêu cầu của khách hàng. |
Chuyển đổi tập lệnh | Trình bày dưới dạng thực thi (có nguồn gốc từ hệ điều hành máy chủ). | Được biên dịch thành Mã byte Java. |
Chạy vào | Quy trình riêng | JVM |
Bảo vệ | Dễ bị tấn công hơn. | Có thể chống lại các cuộc tấn công. |
Tốc độ | Chậm hơn | Nhanh hơn |
Xử lý kịch bản | Thẳng thắn | Trước khi chạy các kịch bản, nó được dịch và biên dịch. |
Tính di động | Không thể chuyển | Di động |
Định nghĩa của CGI
CGI (Giao diện cổng chung) là giao diện xử lý các chương trình bên ngoài (tập lệnh CGI) trên máy chủ web để cho phép thực thi các trang web tương tác. CGI được phát triển bởi NCSA (Trung tâm ứng dụng siêu máy tính quốc gia) vào năm 1993. Nó nằm ở phía máy chủ và cho phép các trình duyệt web tương tác với các chương trình trên máy chủ web. Ví dụ: nếu một trang web truy vấn cơ sở dữ liệu hoặc người dùng đang gửi thông tin biểu mẫu đến máy chủ tại thời điểm đó, các tập lệnh CGI được gọi. Máy chủ chuyển thông tin đó đến một ứng dụng theo hai cách GET hoặc POST, sau đó ứng dụng sẽ phản hồi lại máy chủ đó trở lại trình duyệt. Bằng cách này, trình duyệt nhận được một số kết quả cho người dùng.
CGI là một quy định, để mô tả một phương pháp để chạy các tập lệnh CGI và cung cấp kết quả trở lại máy chủ cho các chương trình cụ thể đó. Chức năng của CGI là quét thông tin nhận được từ trình duyệt và tạo phản hồi thích hợp, sau khi hoàn thành nhiệm vụ, tập lệnh CGI bị chấm dứt. Trong Giao diện cổng chung, điểm chung cho thấy nó có thể hoạt động tốt trong mọi hệ điều hành hoặc ngôn ngữ lập trình.
Trước đây, các kịch bản shell UNIX và PERL đã được sử dụng để viết các chương trình CGI, đó là lý do nó được đặt tên là các tập lệnh CGI lối đi. Nhưng, bây giờ bất kỳ ngôn ngữ nào như C, C ++, Perl, Visual Basic hoặc Python đều có thể được sử dụng. Mặc dù, CGI có thể dẫn đến các vấn đề bảo mật tiềm ẩn, vì máy chủ web cũng có thể coi các tệp thực thi là chương trình CGI trong một số thư mục cụ thể. CGI xử lý từng yêu cầu của khách hàng bằng một quy trình riêng biệt làm tăng tải máy chủ khiến nó chậm hơn.
Định nghĩa của Servlet
Servlet là một thành phần web dựa trên Java hoạt động như một chương trình trung gian, tạo điều kiện cho sự tương tác giữa trình duyệt web hoặc máy khách HTTP và máy chủ HTTP. Tương tự như CGI, các servlet cũng có thể được sử dụng để thu thập thông tin bằng các biểu mẫu trang web, hiển thị các bản ghi từ cơ sở dữ liệu và tạo các trang web động với sự trợ giúp của một container. Servlet là một lớp Java không dựa trên nền tảng và được biên dịch thêm vào mã byte độc lập với nền tảng. Mã byte trung lập nền tảng có thể được lưu trữ và thực thi động bởi máy chủ Web Java. Servlet sử dụng cơ chế socket và RMI để thiết lập kết nối giữa các applet, cơ sở dữ liệu hoặc các chương trình cơ sở dữ liệu khác.
Bộ chứa Servlet là một phần của máy chủ web hỗ trợ các giao thức HTTP và HTTPS . Nó sử dụng phương thức yêu cầu / phản hồi bằng cách sử dụng giao thức HTTP và HTTPS để cho phép tương tác với các máy khách web. Không giống như CGI, servlet chạy bên trong không gian địa chỉ của máy chủ web, nơi mỗi máy khách không nhất thiết phải được xử lý riêng. Trong servlet, một tập hợp các ràng buộc được thi hành trên máy chủ để bảo vệ tài nguyên trên máy chủ.
Sự khác biệt chính giữa CGI và Servlet
- Các kịch bản CGI được viết trong hệ điều hành gốc và được lưu trữ trên thư mục nhất định. Mặt khác, các chương trình servlet thường được viết bằng Java, được biên dịch thành mã byte Java và được thực thi trong JVM.
- CGI là nền tảng cụ thể khiến cho việc chuyển đổi giữa các hệ điều hành trở nên khó khăn. Đối với, Servlets có thể được thực thi trong bất kỳ hệ điều hành nào đã cài đặt JVM, do đó nó độc lập với nền tảng.
- Trong CGI, mỗi yêu cầu máy khách đến có thể tạo ra một quy trình riêng trong khi servlet, các quy trình không được tạo không cần thiết và chia sẻ không gian bộ nhớ của JVM.
- Các kịch bản CGI là các chương trình thực thi được viết trong hệ điều hành gốc của máy chủ. Ngược lại, các servlet được biên dịch thành mã byte Java chạy trên JVM.
- Servlet an toàn hơn CGI vì nó sử dụng Java.
- Tốc độ, hiệu suất và hiệu quả của servlet tốt hơn CGI.
- Kịch bản CGI có thể được xử lý trực tiếp. Ngược lại, đầu tiên servlet dịch và biên dịch chương trình sau đó xử lý nó.
- Khi nói đến tính di động, servlet là di động trong khi CGI thì không.
Phần kết luận
CGI và Servlet hoạt động theo cùng một cách nhưng việc sử dụng servlet có lợi hơn CGI vì servlet nhanh, an toàn, độc lập với nền tảng, dễ dàng phát triển, có thể truy cập thông qua một số API và được hỗ trợ bởi các máy chủ web khác nhau.