CGI – Common Gateway Interface

Web teknolojisinin çıktığı ilk günden bu yana dinamik sayfalar kullanmak her zaman ihtiyaç olmuştur. Applet’ler bu ihtiyacı karşılamada ilk başlarda kullanılsa da, istemci tarafında çalışmaları bazı sıkıntılara yol açmıştır.

Dinamik içerik üretmek için CGI (Common Gateway Interface) denilen teknoloji yaratılmıştır. CGI’da sunucuya istek (request) gelince küçük bir program çalışır. Sunucuya gelen her istek için bir .exe çalışması gibi düşünün. Bu program kullanılıp işi bittikten sonra hafızadan silindiği için aynı istek tekrar geldiğinde program hafızaya tekrar yüklenip, tekrar çalışır.

Sunucuda birden fazla CGI programı olduğu için, web sunucusunun isteğin hangi programa geldiğine karar vermesi gerekir. Bunu da URL’ye bakarak gerçekleştirir. İlgili CGI programı isteği alır, parse eder, veriyi işler ve geriye cevap döner. Bu cevap genellikle bir HTML sayfası olur.

 

Günümüzde çok fazla olmasa da hala kullanılan bir teknoloji olan CGI’ın avantajları :

–          Başta Perl olmak üzere herhangi bir programlama dili ile yazılabilir, (dezavantaj da olabilir)

–          Çalışmayan ya da bug’ı olan bir CGI programı sunucunun çalışmasını etkilemez,

–          Herbir CGI programı kendi process’ini yarattığı için veri tabanı işlemlerinde eş zamanlı kullanımdan doğan sıkıntılar yaşanmaz,

–          Günümüzde kullanılan çoğu sunucu tarafından desteklenirler.

Bunun yanında dezavantajlarından bahsetmek gerekirse :

–          Her bir CGI programının başlı başına  sunucuda bir process oluşturması sebebiyle cevabı yavaş döndürür,

–          Sunucunun kaynaklarını fazla tüketir,

–          Ölçeklenebilirliği azdır,

–          Bir CGI programı herhangi bir dille yazılabilir. Ancak bu dil her zaman nesneye yönelik ya da güvenilir olmayabilir,

–          Geriye HTML döndürülmesinden dolayı sunucu tarafındaki kodda HTML kullanılması gerekir. Bu da MVC yapısına aykırıdır,

–          Script dilleri genellikle platform bağımlıdır.

Gördüğünüz gibi dezavantajları ağır basan bu teknolojiye alternatif çözümler üretilmiştir. CGI programlarının yaptığı işleri yapan, bunun yanında ekstra özellikleri de olan Java tarafındaki teknolojinin adı da Servlet’lerdir.