Bir web uygulaması en basit hali ile bir tarayıcı'da(client) ve bir sunucu'da(server) çalışan dosyalardan meydana gelmektedir. Tarayıcılarda html, css, js(javascript) dosyaları işletilebilmektedir, her tarayıcı bu türden dosyaları işleyip anlayabilmektedir. Sunucu tarafta ise web uygulamasının geliştirildiği platforma göre değişen bir programlama dili kullanılarak tarayıcılarda çalıştırılacak html dosyalarının dinamik olarak oluşturulması ve tarayıcılardan istek geldiğinde dinamik olarak oluşturulan bu dosyaların tarayıcılara gönderilmesi sağlanmaktadır.
Web Uygulamalarının Genel Yapısı
Web uygulamalarının basitçe çalışma mantığı

İnternet ilk defa Dünya'nın kullanımına sunulduğu zamanlarda sadece static(durağan) web sayfaları vardı bu sayfalar sadece html ve css'ten meydana gelmekteydi ve bir web sayfasını oluşturmak çok kolaydı sadece html etiketleri ile belirlenen basit bir tasarıma göre web sayfası oluşturuluyor ve css kullanılarak şekli şemali ayarlanıyordu. Ama zaman ilerledi ve static olan bu web sayfalarını dinamik(herkes için farklı içerik sunan web sayfaları) hale getirmek gerekti ve mühendisler madem her kullanıcının farklı göreceği web sayfaları oluşturmak gerekiyor biz de kullanıcıların tarayıcılarında görecekleri Html içeriğe sahip dosyaları sunucu bilgisayarlarda dinamik olarak oluşturup istemcilerin tarayıcılarına yollayacak teknolojiler geliştirelim ve bu şekilde ortaya çıkan bu ihtiyacı giderelim demişler. Ve bundan sonra Php, Java, Asp gibi web uygulaması geliştirmek için teknolojiler ortaya çıkmış. Tarayıcı tarafında da esneklik gerektiğinden(yani tarayıcı üzerinde sunucudan gelen verileri işleyebilecek bir teknoloji) zamanla web tarayıcılar üzerinde çalışacak yorumlanan dillere ihtiyac duyulmuş ve script dilleri(web tarayıcıları üzerinde çalışan derleyiciye ihtiyaç duymayan sadece yorumlanan diller) ortaya çıkmış ve zamanla da Javascript dili bir standart haline gelmiştir.

Google firması javascript yerine kullanılabilecek javascript'e göre daha kullanışlı olduğunu iddaa ettiği  bir client taraflı script dili olan "Dart" isimli dili geliştirmiştir. Ama bu dilin geliştirilen web projelerinde kullanılabilmesi için bütün tarayıcıların "Dart" diline destek vermesi gerekmektedir. Aksi takdirde bu script dilini kullanıp geliştirilen web uygulamaları olsa bile, dile destek vermeyen tarayıcılar'da (Dart dilini işleyip çalıştıramayan tarayıcılar) "Dart" kullanılarak yazılmış olan web uygulamalar çalışmıyacaktır. Hatta tarayıcılar Javascript'in yeni version'larına bile doğru düzgün destek vermemektedir, javascript version'larını belirleyen kurum Exmascript'tir(Exmascript 6 Bilgi).

Aslında bir web uygulamasını geliştirmek bir desctop uygulamasını geliştirmekten biraz daha karmaşıktır. Bu karmaşıklığı oluşturan en önemli neden web uygulamalarının internet üzerinde çalışması ve en temel hali ile iki dağıtık yapıdan( tarayıcıda çalışan ve sunucuda çalışan kısımlar) oluşmasıdır ve bu iki kısmın bir biri ile Http protokolü üzerinden haberleşmesidir. Zaten bundan dolayı backend(sunucuda çalışan) kod ve frontend(tarayıcıda çalışan) kod kavramları ortaya çıkmıştır.

Peki bir web uygulamasında dinamik html sayfaları nasıl oluşturulur. Web uygulamaları geliştirirken kullanılabilecek bir çok teknoloji(mesela Php, Asp.net, Asp.net MVC, Java Jsp, Java Jsf, Java Spring, Python Django vb.) olmasına rağmen hepsinin temel olarak yaptığı şey yukarıdaki paragraflarda anlatıldığı gibi aynıdır, aralarındaki tek fark nasıl yaptıklarıdır ve her bir teknolojinin bir diğerine göre üstünlükleri veya olumsuz yönleri olabilir, tabi bu teknolojilerin her biri apayrı bir dünyadır, her biri kendi içerisinde bir çok alt teknolojiyi barındırmaktadır ama sonuç olarak aynı işi yapmaktadırlar.
Mesela Kullanılan teknolojiye göre geliştirilen web uygulamalarında çalışılan dosyalar;
  •  Php kullanılıyorsa ".php" uzantılı dosyalardır.
  •  Java jsp kullanılıyorsa ".jsp" uzantılı dosyalardır
  •  Asp.Net kullanılıyorsa ".aspx" uzantılı dosyalardır
  •  Asp.Net MVC kullanılıyorsa ".cshtml" uzantılı dosyalardır
Bu teknolojiler web tarayıcılarının anlayabileceği html içerikli dosyalar içerirler.

Not: Bir web uygulaması cross platform(Android, Ios, Web tarayıcıları veya her hangi bir uç teknolojinin kullanılmasına izin verecek kadar esnek mimari tasarıma sahip yazılımlar) olarak geliştirilmişse eğer(ki bu şekildeki yazılımlar xml, json gibi teknoloji bağımsız dosyalar kullanılarak geliştirilir) bir tarayıcıdan uygulamada bulunan bir web sayfasındaki verileri görüntülemek için serverSide taraflı bir dil kullanmakta gerekmiyor, sunucudan tarayıcıya gelen xml, json vb. formattaki dosya(lar) javascript ile işlenerek de kullanıcının tarayıcısında istenen ayarlamalar yapılabilir.

Kısaca biz dinamik sayfalar gösterebilmek için uygulamaların geri tarafında veritabanlarından çekilen verileri html içerikli dosyalara aşılıyor(enjekte ediyor) ve bu dosyaları da kullanıcıların tarayıcılarına Http protokolü kullanarak yolluyoruz ve tarayıcılar da html içerikli dosyaları işleyip kullanıcıya web sayfasını göteriyor. İşte işin özü bu. Ama konuşmak burada anlatılanları yapmaktan çok daha kolay...




Web uygulamalarının hangi yaklaşım ve mantık kullanılarak yazıldığını çok genel bir bakış ile anlatmaya çalıştım.