2009-01-08 28 views
5

Tôi đã may mắn không làm bất kỳ cgi-bin .cgi dựa trên phát triển web. Nhưng nhìn chung những người có vẻ không 'bỏ lỡ' những ngày đó.Nhược điểm chính của phát triển web dựa trên CGI-BIN là gì?

Dự án tôi mới tham gia có vấn đề về hiệu suất khi xử lý các trang cần giao tiếp với hệ thống cũ có API dựa trên CGI-BIN. Hệ thống đó là COGNOS 7.

Phản hồi tôi nhận được cho đến nay là 'COGNOS chậm' nhưng những người khác đã báo cáo thành công lớn với COGNOS, tôi nghĩ nó có liên quan nhiều hơn đến việc truy cập thông qua CGI-BIN chứ không phải hiệu suất của COGNOS trong và của chính nó.

Tất cả những gì nói các vấn đề chính khiến CGI-BIN dựa phát triển web không performant, khó khăn, vv ...

Trả lời

4

Vấn đề kiến ​​trúc cơ bản với hệ thống dựa trên CGI-BIN là mỗi yêu cầu HTTP yêu cầu máy chủ bắt đầu một quy trình mới. Điều này ảnh hưởng hiệu suất trong một số cách:

  • Đó là đắt tiền để bắt đầu quá trình này, như các trang hệ điều hành trong chương trình, lập trình, vv
  • Tài nguyên không thể được chia sẻ trên các yêu cầu, do đó bất kỳ kết nối DB vv phải được thiết lập với mỗi yêu cầu
  • trạng thái phiên
  • người dùng không thể được bảo quản trong bộ nhớ, vì vậy nó phải được tiếp tục tồn với mỗi yêu cầu
+1

Những hạn chế đó áp dụng cho CGI nói chung, chúng không dành riêng cho CGI-BIN. Bạn vẫn đúng tất nhiên, chỉ nghĩ rằng tôi sẽ làm cho bình luận đó. –

+0

Nó * có thể * tốn kém để bắt đầu một quá trình. Nói chung, các hệ điều hành giống Unix tạo ra các quy trình giá rẻ và khuyến khích các quá trình forking bất cứ khi nào cần thiết; Các hệ điều hành Windows làm cho các quá trình tốn kém và khuyến khích tạo các luồng thay thế. Mỗi cách tiếp cận đều có giá trị của nó; mô hình CGI ban đầu được phát triển trong môi trường Unix, do đó, chi phí của việc tạo các quy trình không được coi là có vấn đề. (Mặt khác, nếu khi bạn tạo quy trình của mình, bạn phải khởi động một thứ gì đó giống như trình thông dịch ngôn ngữ Perl/Python/v.v., thì chi phí đầu vào tăng lên theo thứ tự độ lớn ít nhất ...) –

0

Những bất lợi chính, IMHO là gì, là những bất lợi tương tự mà tất cả các cấp dưới mã hóa có - thay vì lập trình trong miền vấn đề, bạn phải lập trình trong miền triển khai. Kết quả cuối cùng, ở cốt lõi của nó, giống hệt nhau - một phản hồi HTTP đã được gửi đến một máy khách dựa trên một yêu cầu HTTP. Tuy nhiên, việc nhận được đến điểm đó phức tạp hơn rất nhiều so với phối cảnh lập trình.

+0

Không có gì về cách máy chủ web giao tiếp với ứng dụng có bất kỳ kết nối nào đến mức khó "đạt được điểm" – Quentin

+0

@David Dorward: Bạn hoàn toàn đúng. Tuy nhiên, trong việc phát triển giao diện CGI, bạn đang xử lý tất cả các chi tiết cấp thấp hơn trong mọi ứng dụng. Khung, cho dù ASP.NET, Rails, Django, hoặc bất cứ điều gì khác, cho phép các lập trình viên tập trung vào lĩnh vực vấn đề, và không lo lắng về các chi tiết của giao thức truyền thông, cho phép các lập trình viên 'nhận được điểm' của mình ứng dụng, thay vì đặc điểm kỹ thuật CGI. –

1

Đối với tôi nỗi đau lớn nhất với CGI là rằng các chương trình CGI của tôi phải "học" mọi thứ mỗi lần họ bắt đầu. Nếu họ đang chạy liên tục mà sẽ không phải là trường hợp, tất nhiên ...

0

Apache có một số giải pháp này cho các ngôn ngữ khác nhau (ví dụ: mod_perl) để kịch bản chỉ được gọi một lần, sau đó được tổ chức trong bộ nhớ cho nhanh thu hồi. Vẫn còn rất nhiều các trang web định hướng giao thức GCI, rất nhiều trong số đó chạy với độ trễ tương đối thấp, nếu được mã hóa và thiết lập tốt.

Các vấn đề liên quan