CGI ve Servlet
CGI (Ortak Ağ Geçidi Arabirimi) kullanıcılara dinamik içerik sağlamaya yönelik ilk girişimdir. Kullanıcıların verileri işlemek ve hatta ilgili içeriği üretmek için veritabanlarına erişmek için sunucuda bulunan bir program yürütmesine olanak tanır. Bunlar programlar olduğundan, yerel işletim sistemine yazılır ve daha sonra belirli bir dizinde saklanır. Bir sunucu uygulaması, CGI ile aynı hizmeti vermeyi amaçlayan bir Java uygulamasıdır, ancak yerel işletim sisteminde derlenen programlar yerine Java sanal makinesinde çalıştırılan Java bayt kodunu derler. Java programları yerel koda derlenebilse de, yine de Java bayt kodunda derlemeyi tercih ederler.
Servlet'lerin CGI'ya göre ilk avantajı platform bağımsızlığıdır. Sunucu uygulamaları, JVM yüklendiği sürece herhangi bir işletim sisteminde çalışabilir; bu, işletim sistemlerini değiştirmeyi seçseniz bile sorun yaşamayacağınız anlamına gelir. CGI ile işletim sistemini değiştirmek, yeni işletim sistemindeki programları yeniden derlemeniz gerektiğinden zor ve zahmetli bir süreçtir.
CGI'da bağımsız programlar çalıştırdığınız için, yürütüldüklerinde kendi süreçlerini oluştururlar, JVM'nin bellek alanında paylaştıkları için sunucu uygulamaları ile gerçekleşmeyen bir şey. Bu, özellikle kullanıcı sayısını katlanarak artırdığınızda genel masraflarla ilgili sorunlara yol açabilir. Sunucuda çalıştırıldıktan sonra program hiçbir şekilde denetlenmediği için güvenlik açığı sorunları da oluşturur.
Daha sonra, CGI kullanmanın daha yaygın yöntemi komut dosyalarıdır. Bu, program oluşturmak için gereken süreyi azaltır ve genellikle daha güvenlidir. CGI ile komut dosyalarını hemen çalıştırabilirsiniz, sunucu uygulamaları ise, komut dosyasını Java'ya çevirmeniz ve yükleme süresine biraz ekleyen bir sunucu uygulamasına derlemeniz gerekir..
Özet:
1.CGI genellikle sunucunun işletim sistemine özgü çalıştırılabilir dosyalardır, ancak sunucu uygulamaları yerel işletim sistemine de derlenebilir, ancak daha sonra bir JVM'de çalıştırılan Java bayt koduna derlenebilir.
2.CGI programları platforma bağımlıyken, sunucu uygulamaları platformdan bağımsızdır
3.CGI programları bilgisayarda ayrı işlemler olarak çalışırken sunucu uygulamaları JVM'de çalışır
4.CGI saldırılara karşı sunuculara göre daha savunmasız olabilir
5.CGI, bir sunucu uygulaması olarak çalıştırılmadan önce çevrilmesi ve derlenmesi gereken komut dosyalarını doğrudan işleyebilir