28 Mart 2016 Pazartesi

SERVER SIDE - CLIENT SIDE PROGRAMMING

      Bu yazımızda web siteleri yapılırken ki programlama çeşitlerinden bahsediyor olacağız.Kullanıcı ile etkileşime geçmek için dinamik web siteleri programlanırken yazdığımız kodların bir kısmı Server Side (Sunucu Taraflı) bir kısmı ise Client Side (İstemci Taraflı) çalışmaktadır.Daha açıklayıcı olmak gerekirse işlemler web sayfasının çağrıldığı istemci bilgisayarında yapılıp sonuçlar sunucuya gönderiliyorsa Client Side, istemciden aldığı verilerle işlemler sunucuda yapılıp sonuç istemciye gönderiliyorsa Server Side taraflı programlamadan bahsediyor olacağız.

      Yazılan kodların Server Side taraflı mı yoksa Client Side taraflı mı çalıştığını bilmemiz ve hangi tür programlama yapacağımıza artı ve eksilerini bilerek ona göre karar veriyor olmamız gerekmektedir.Peki kodların çalıştığı ortamı bilmek bize ne fayda sağlayacak, sonuç itibariyle yazdığımız kodlar çalışıyor diyebilirsiniz.İşte sorunuzun cevabi..

Server Side Programming (Sunucu Taraflı Programlama)
      Yazılan kodların Client tarafında browser'a gitmeden Server Side da çalıştığı kodlama tarzıdır. Server Side Programlamada  kodlar sunucu üzerinde çalışır ve sonuçlar HTML olarak Client tarafına  (browser) gönderilir.Sunucu üzerinde çalışan kodların sonuçları HTML çıktısı olarak browser'a gönderildiği için hangi browser olursa olsun( IE, Chrome, Mozilla, Netscape) sorunsuz çalışacaktır.Peki bahsettiğimiz Server Side çalışan kodlamalar hangi dillerde yapılır?

-  C, C# ,C++ , VB
-  Java, Perl, Python, Ruby
-  ASP , PHP
-  Node.js (Javascript'in Sunucu tarafında çalışan halidir.Client side değil, Server Side Çalışır)(express.js)

   Programlama dilleri ile yazılan kod parçaları Server Side(Sunucu Taraflı) çalışmaktadır.Örnek verecek olursak web sayfasının herhangi bir yerinde yazılan C# kodu kesinlikle Server Side olarak çalışacaktır.Örnek verecek olursak herhangi bir E-Ticaret sitesinde kredi kartı ödemelerinin yazıldığı kodlar, yada önemli hesaplamalar gerektiren ve çok ciddi büyük datalar üzerinde yapılan performans gerektiren işlemler Server Side taraflı yazılırlar.



     ASP ve PHP kodları browserda görülmez, görülecek olan sadece kodlar sunucuda çalıştıktan sonra kodların ürettiği çıktılardır, yani HTML çıktısıdır.

Avantajları Nelerdir ?

1 - Kaynak kodları sunucudan istemciye gönderilmediği için, herhangi biri tarafından görülemez. Erişimi istenmeyen kişilere karşı güvenlidir.
2 -  Kaynak kodlar sunucu tarafında çalıştırıldığı için browser'a olan bağımlılık ortan kalkar, herhangi bir browser ile istenilen sayfa görüntülenebilir. Yani yazılan kodun IE' de çalışıp Mozilla' da çalışıp çalışamayacağı gibi bir derdimiz olmaz.

Dezavantajları Nelerdir ?

1 -  Kodların tamamı sunucu tarafında çalışacağından, sunucuya çok iş düşer. Örneğin Facebook yada LinkedIn gibi web sitelerinin aynı anda milyonlarca kullanıcıya açık olduğunu düşünürsek, tüm işlerin Server Side taraflı yaptırılmasının ne kadar maliyetli ve site performansının ne kadar düşebileceğini tahmin edebilirsiniz.
2 -  Server Side ağırlıklı kodlarla yazılan sitelerde, sunucu özelliklerinin (RAM, CPU, HDD) iyi olması gerekmektedir.

Örnek 1 :
    Şimdi Server Side taraflı çalışan küçük bir uygulama yapıp inceleyelim. Sayfanın Page_Load metodu görüldüğü üzere  C# ile Server Side olarak yazılmıştır.(Bu kod Code Behind tarafında da yazılabilir, farketmez. Ben kolaylık olması açıcından aspx sayfasının içine gömdüm. )

Aspx:


















Çıktısı :







Web sayfasına sağ tıklayıp kaynağı görüntülersek, Server Side taraflı kodların Cliente gönderilmediği için, browserda bu kodları göremeyiz.
















Örnek 2 :
      Şimdiki örnekte ise bir repeater nesnesine Server Side taraflı data bind etme işlemini gerçekleştirip, bu yapılan işleme Client tarafında herhangi bir şekilde erişilemediğini görelim.

Aspx :






































Çıktısı :
















Yine sayfa kaynağı görüntülenirse, rapeater nesnesinin doldurulduğu Server Side taraflı kodun sunucuda çalıştığı, browsera sadece sonuç üretilmiş HTML kodlarının gönderildiği görülebilir.


Client Side Programming (İstemci Taraflı Programlama)
     Yazılan kodların Client tarafında browser üzerinde çalıştığı kodlama tarzıdır.Bunun en güzel örneği Javascript kodlarıdır.Bu kodlar sunucuda çalışmaz, browser tarafından yorumlanırlar. Yapılan işlem, sunucuyla irtibata geçmeden Client bilgisayarında çalışıp sonuç ekrana basılır.
        Örnek verecek olursak herhangi bir buton üzerine tıklanınca herhangi bir nesnenin renginin değişmesi, ekranın herhangi bir yerindeki saat animasyonunun olması, yada herhangi bir event ile editörlerden herhangi birinin görünümünün değişmesi işlemleri Javascript ve CSS kodları ile Client Side taraflı yapılabilir.Peki Client Side çalışan kodlamalar hangi dillerde yazılır?

-  HTML,AJAX
-  Javascript ( Hemen hemen tüm tarayıcılarda desteklenmektedir)
-  VBScript, JScript, CSS
-  Flash, Silverlight

ile yazılan koda parçaları Client Side (İstemci Taraflı) çalışırlar.

Avantajları Nelerdir ?

1 -  Sunucuya fazla yük binmez, kodlar her istemcinin kendi bilgisayarında çalışır.
2 -  Editörlerin visible, enable, font, color gibi basit özelliklerini değiştirmek yada CSS animasyonları yapmak için Server meşgul edilmez, bu basit işlemler Client tarayıcısında halledilir.

Dezavantajları Nelerdir ?

1 -  Her browser her script dilini desteklemez. Eğer Client Side işlemlerle uğraşıyorsanız "Ekranı X browserda açtığımda sorunsuz çalışıyor, fakat Y browserda açınca çalışmıyor" gibi şeylerle bolca karşılaşırsınız. Bunun sebebi yazılan kodun tamamen Client tarayıcısına bağlı çalışmasıdır. Eğer tarayıcı ilgili script dilini desteklemiyorsa çalışmayacaktır
2 -  Kodlar Client' a olduğu gibi gönderildiğinden, sayfa üzerine sağ tıklanır ve sayfa kaynağına bakılırsa, yazılan kaynak kodlar görülebilir. Bu da güvensiz ve risk taşıyan bir yapıdır, ayrıca hiç bir kurum yada kuruluş ticari olarak sattığı yazılım ürünlerine ait kaynak kodların başkaları tarafından görülmesini istemez.
3 -  Olayın başka yönü de güvenliktir.Örneğin database insert, update işlemlerinin yapıldığı kaynak kodlar Client side taraflı yazılmışsa, kaynak kodlarını inceleyen birisi database bilgilerini, tablo adını, şifresini vs görebilecektir.Bu SQLInjection gibi yöntemlerle siteyi hack saldırılarına maruz bırakabilecek ve DB' nin silinmesi ihtimalini düşünürsek geri dünüşümü olmayan sorunlara dahi sebep olabilecektir.

Örnek 3 :
      Şimdi de Client Side Taraflı çalışan bir örnek yapıp inceleyelim.Textboxdan girilen sayı için arka planda bir takım hesaplamalar yapıp ekrana uyarı veren bir yapı olduğunu düşünürsek;

Aspx:


















Çıktısı :









Sayfa kaynağını görüntülersek, yazılan kodların ( biz Javascript olarak yazdık) Client'a gönderildiği ve kaynak kodda yapılan işlemin direk görülebildiği açık bir şekilde ortaya çıkacaktır.



















Örnek 4 :
     Son örneğimizde de kullanıcıdan adını girmesini istediğimiz ve bu girdiği isimle kullanıcıyı selamladığımız ufak bir uygulama yazalım. Tabi ki bunu Server'a hiç gitmeden, tamamen Client Side taraflı yapalım.

Aspx:
















Çıktısı:











   Bu işlemler sırasında sayfa PostBack olmaz, çünkü yazılan kodlar direk client tarafındaki browser' da çalıştırılmaktadır. Sayfanın PostBack olmaması bu tip küçük ama kullanıcıya büyük kolaylık sağlayan özellikler eklemek için önemli bir avantaj sağlamaktadır.

3 yorum:

  1. Gayet güzel bi yazı olmuş. Teşekkürler. erdinc_donmez at yahoo nokta com

    YanıtlaSil
  2. Selamlar, resimlerin sağında kalan yazılar var. yazı gayet başarılı. biçimlendirme düzenlenirse iyi olur bence.

    YanıtlaSil
  3. Birçok yerden araştırdım.En güzel anlatım buradaydı.Teşekkür ederim.

    YanıtlaSil