Forum: Diğer Konular RSS
CGI Programlama, Sunucu ve İstemci Taraflı Programlama
İbrahim #1
Üye Eki 2015 tarihinden beri · 156 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: CGI Programlama, Sunucu ve İstemci Taraflı Programlama
Selamün Aleyküm Arkadaşlar;

Benim sorum bu cgi'nin çalışma mantığı ile sunucu taraflı bir web dilinin (mesela PHP veya ASP.NET vs.) çalışma mantığı arasında nasıl bir fark var? Yani istemci taraflı dil (javascript) tarayıcı üzerinde çalışıyor ve sunucu alışverişlerininde de sayfa yenilemesi gerekmiyor. Ama sunucu taraflı dilde veri alışverişlerinde sayfa yenilemesi gerekiyor fakat cgi de tarayıcı üzerinde çalışmayan ayrıca çalışan bir yazılım üzerinden çalışıyormuş ve sunucu alışverişlerinde sayfa yenilemesi gerekmiyormuş. Peki bu cgi nasıl çalışıyor? Aklıma gelen yöntem sunucu taraflı dillerde olduğu gibi bir portu dinleyip ona veri alışverişinde bulunması (tcp/ip, udp olduğu gibi) ama bu yöntemi bildiğim kadarıyla php gibi diller kullanıyor ve tarayıcıda değişen verinin gösterilmesi için sayfanın yeniden yüklenmesi gerekiyor. CGI bir port ile nasıl iletişim kuruyor da sayfa yüklenmesi gerekmeden veriyi gösterebiliyor?

Teşekkürler!
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
İbrahim:
fakat cgi de ... sayfa yenilemesi gerekmiyormuş

Benim bildiğim öyle değil: CGI yönteminde sunucu bir program işletir ve o programın kendi standart çıkışına yazdığı metni sayfa olarak istemciye gönderir. Yani, benim bildiğim kadarıyla CGI yönteminde bütün sayfa oluşur. (Evet, o açıdan bakınca "yenileme" diyemeyiz aslında.)

Hangi kaynakta gördün? Bir yanlış anlama olabilir.

Ali
İbrahim #3
Üye Eki 2015 tarihinden beri · 156 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
http://www.bilisimterimleri.com/bilgisayar_bilgisi/bilgi/6… bu sitede yazılanlardan anladığım oydu.
Peki port dinleyerek alışveriş yaptığımız her zaman veriyi göstermek için sayfa yenilemesi yapmak zorunda mıyız?
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Evet, öyle anlaşılabiliyor ama örneğin "web üzerinde doldurup gönderilen formlar üzerindeki bilgileri server tarafında değerlendirip kullanıcıya cevabı göndermektir" dediklerinde bile cevap başlıbaşına bir sayfadır.

Ali
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #3
İbrahim:
port dinleyerek alışveriş yaptığımız her zaman veriyi göstermek için sayfa yenilemesi yapmak zorunda mıyız?

Eğer port dinliyorsak kendimiz HTTP sunucusu gibi çalışıyoruz demektir. Eğer öyleyse, HTTP protokollerine uyduğumuz sürece herşeyi yapabiliriz. Öte yandan, Apache gibi bir sunucu kullanıyorsak zaten portu biz değil, o dinliyor. O zaman o sunucunun sunduğu yöntemleri kullanmamız gerekir. O yöntemlerden birisi de CGI'dır.

Ali
İbrahim #6
Üye Eki 2015 tarihinden beri · 156 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
HTTP protokollerine uyduğumuz sürece herşeyi yapabiliriz.
Herşeyi derken neler yapılabilir mesela?
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Cevabım çelişkili olmuş: Doğrusu, HTTP sunucusu yapacaksak HTTP protokolüne uymamız gerekir. Ben bu konunun uzmanı değilim ama bildiğim kadarıyla, istemci bir URL veriyor ve karşılığında bir sayfa alıyor. Sunucunun işi o sayfa açısından bitmiştir. Sunucunun herşeyi yapabilmesinden kastım, gerçekleştirme açısındandı; protokol nasıl gerçekleştirileceğinden bahsetmez. Örneğin, "şöyle bir istek geldiğinde şu düzende bir sayfa gelmelidir" der ama o sayfanın diskteki bir dosya mı olduğu, içindeki parçaların başka hangi sunucular tarafından üretildiği, vs. gibi konulara karışmaz.

Ancak, AJAX gibi başka teknolojiler var: Sayfa istemcide dururken bir yandan sunucuyla haberleşilebiliyor. AJAX'in ne kadar geçerli olduğunu bile bilmiyorum ama şimdi bakınca XMLHttpRequest diye bir arayüz kullandığını öğreniyorum ama o da istemci üzerinde işleyen JavaScript tarafından kullanılıyor. Benim bu konuda bildiklerim bu kadar. :)

Ali
Avatar
zekeriyadurmus #8
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
PHP, ASP, Python gibi herhangi bir dildeki kodların çalışması için web sunucusu ile (apache, nginx) programlama dili arasında bir bağlantı kurulur bu bağlantı yöntemlerinden bir tanesidir CGI (Common Gateway Interface)

İstenilen URL, request headers ve web server tarafından bazı ekstra bilgiler CGI ile gönderilir.

CGI dediğimiz yöntem ise executable file ı direk olarak çalıştırmak ve program bittiğinde çıktının sunucuda ekrana yazdırılmasından ibaret. CGI yanıtı verilirken direk olarak RAW bir çıktı verilir. Örneğin

print "Content-Type: text/html"     # HTML is following
print                               # blank line, end of headers
print "<TITLE>CGI script output</TITLE>"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"

bu python kodunu incelersek BLANK LINE alanı gelene kadarki key: value formatında yazılan her satır bir header. BLANK LINE dan sonra gelenler ise HTML kodlarıdır.

CGI yöntemi PHP gibi dillerde pek tercih edilmez bunun sebebi ise performanstır.
CGI da her sayfa isteği için exe açılır ve kapanır bu da programın her seferinde gereksiz yere hafızaya yüklenmesi, silinmesi, ön işlemlerin yapılması ve önbelleklemenin yapılamaması gibi sayısız soruna sebep olur.
Siteye aynı anda 10 kişi girerse 10 tane executable file işlemler listesinde görürüz.

Bunun için FASTCGI gibi daha gelişmiş CGI yöntemleri geliştirilmiştir. FASTCGI da mantık ise istek olsun veya olmasın sürekli açık tek bir executable file açmak ve bir port üzerinden bütün veri trafiği akar. Yani burada PHP nin FastCGI sunucusu tek başına basit bir web server gibi işlem yapar diyebiliriz.

Zekeriya
Bilgi meraktan gelir...
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-18, 09:22:15 (UTC -08:00)