CGI trong lập trình web là gì?
CGI (Common Gateway Interface) là một bộ thông dịch script
cho các web server, là công cụ để chạy các ứng dụng web trên Linux/Unix, còn
trên Windows thì có ASP.net.
Đây là một phương pháp cho phép giao tiếp giữa server và
chương trình nhờ các định dạng đặc tả thông tin.
Lập trình CGI cho phép viết chương trình nhận lệnh khởi đầu
từ trang web, trang web dùng định dạng HTML để chạy chương trình.
Chương trình CGI chạy dưới biến môi trường duy nhất. Khi WWW
khởi tạo chương trình CGI nó tạo ra một số thông tin đặc biệt cho chương trình
và đáp ứng trở lại từ chương trình CGI. Sau đó server xác định loại file chương
trình cần thực thi.
CGI - PHP - ASP - JSP
1. Vài năm trước đây, con đường thực sự duy nhất để vận chuyển
các dữ liệu động tới trang Web là kỹ thuật CGI (Common Gateway Interface). Các
chương trình CGI cung cấp một sự liên hệ đơn giản để tạo các ứng dụng Web cho
phép tiếp nhận các dữ liệu nhập vào, các yêu cầu truy vấn cơ sở dữ liệu từ phía
người dùng và trả một vài kết quả về cho trình duyệt. Các chương trình CGI có
thể được viết trên một vài ngôn ngữ, trong đó phổ biến nhất là Perl. Web server
sử dụng CGI như là một cổng truy cập chặn giữa yêu cầu của người dùng và dữ liệu
được yêu cầu. Nó sẽ được nạp vào bộ nhớ như một chương trình bình thường. Thông
thường các web server sẽ chuyển các yêu cầu và triệu gọi chương trình CGI. Sau
khi chương trình kết thúc, web server sẽ đọc dữ liệu trả về từ chương trình và
gửi nó đến trình duyệt.
Nhược điểm lớn nhất của kỹ thuật CGI là nó hoạt động kém hiệu
quả. Mỗi khi web server nhận một yêu cầu, một tuyến trình mới được tạo ra. Mỗi
tuyến trình lại chứa trong nó các đoạn mã lệnh, dữ liệu… và không được chia sẻ
lẫn nhau, do đó gây ra lãng phí bộ nhớ. Để khắc phục nhược điểm này, Microsoft
và Netscape đã hợp tác và đưa ra một cải tiến đáng kể là chuyển chúng về dạng
các file thư viện liên kết động (DLL ), cho phép chia sẻ mã lệnh giữa các tuyến
trình. Đây chính là các kỹ thuật ISAPI và NSAPI.
Đen đủi thay, các kỹ thuật dựa trên DLL không phải là đã
hoàn thiện. Chúng vẫn còn một số vấn đề:
- Khi các thư viện nền tảng được gọi, nếu muốn thoát các ứng
dụng này, ta phải tắt chương trình triệu gọi (Web server) và khởi động lại máy
tính.
- Các thư viện cần được đặt trong các tuyến trình bảo vệ, tức
là chúng cần phải được cảnh giác về cách sử dụng các biến chung hoặc các biến
tĩnh.
- Nếu chương trình
triệu gọi gây ra lỗi truy cập, nó có thể dẫn đến tình trạng server bị treo tắc
tử.
- Và cuối cùng: khi đã được dịch ra các file DLL, công việc
gỡ lỗi cũng như bảo trì mã lệnh trở nên vất vả hơn bao giờ hết.
2. Kỹ thuật Web mới nhất của Microsoft, kết hợp HTML, các đoạn
Script, các thành phần xử lý phía server trong cùng một file, được gọi là ASP
(Active Server Pages), với phiên bản mới nhất hiện nay là ASP.Net. ASP được triệu
gọi bởi một thư viện liên kết động gắn với các Web server của Microsoft. Về bản
chất, ta có thể coi ASP như là một ngôn ngữ thông dịch vậy. Một trang ASP có thể
sử dụng HTML, JScript và VBScript. Qua các đoạn mã nhúng này, ASP có thể truy cập
đến các thành phần phía server. Các thành phần này có thể được viết trên bất kỳ
ngôn ngữ nào hỗ trợ các thành phần COM của Microsoft. Và đây chính là sức mạnh
của ASP: nó có thể làm được bất kỳ cái gì mà máy chủ có thể làm được với các
thành phần COM. Sau khi được thi hành, ASP sẽ sản sinh ra một trang Web có
khuôn dạng HTML và trả nó về cho Web server.
Một bất lợi lớn đối với ASP là nó chỉ có thể hoạt động trên
các họ Web server của Microsoft (bao gồm PWS trên Win9x hay IIS trên
WinNT/2000/XP). Các nhà phát triển đang hướng đến những môi trường khác như
Unix/Linux (hiện đã có bản Chili! ASP chạy trên các môi trường này), nhưng kết
quả thì còn phải đợi thêm một thời gian nữa