Framework, yazılım oluşturmayı basitleştiren ve hızlandıran bir yazılım ortamıdır. Framework kullanırken sadece ürününüze özel mantığı uygulayan kodu yazarsınız. Veritabanı çalışması, kimlik doğrulama, oturum desteği vb sağlamanız gerekmemektedir. Bütün bunlar Framework ile uygulanmaktadır. Ayrıca Framework ve web uygulamaları oluşturmak için de kullanılmaktadır.
Framework neden bir ihtiyaçtır?
Web siteleri, web uygulamaları ve diğer ürünler arasında ortak olan görevler vardır. Bunlar yönlendirme, veritabanı etkileşimi, kullanıcı doğrulama, oturum desteği, web saldırısı koruması, önbelleğe alma, mantığın sunumdan ayrılması ve çok daha fazlasıdır. Bu görevleri her seferinde yapmak için kod oluşturmak zaman ve emek kaybıdır. Bu tür görevleri gerçekleştirmek için kod ve framework uygulanmaktadır.
Geliştiricilere aşağıdakiler dahil birçok seçenek sunmaktadır. Bunlar;
- Her seferinde yeniden kod yazma ihtiyacını ortadan kaldırmak;
- Geliştirme sürecini hızlandırmak;
- Uygulamadaki çalışmayı basitleştirmek;
- Uygulamaya özel mantığa konsantre olmanızı sağlamak;
- Sunumdan ayrı mantıkta çalışmak;
- Bir web ürününün temel işlevlerini uygulamak.
Bir Framework bir kitaplıktan farklımıdır?
Kitaplık, belirli bir alandan sorunları çözmek için bir dizi işlev içermektedir. Çeşitli formatlarda tarih ve saat, rastgele sayılar, dosya sistemi, HTTP istekleri, serileştirme ile çalışmak için kütüphaneler içermektedir. Kütüphane, uygulamanın yapısını tanımlamamaktadır. Bununla çalışırken, kullanıcı neyi ve ne zaman arayacağına karar vermektedir.
Framework, uygulamanın mimarisini tanımlamakta ve bileşenleri arasında etkileşim sağlamaktadır. Bununla birlikte çeşitli kütüphaneler içermektedir. Ayrıca bunları uygulamanın iskeletini oluşturmak için kullanılmaktadır. Onunla çalışırken, kontrolün tersine çevrilmesi de meydana gelmektedir. Kullanıcı değil, özel işlevlerin ne zaman çağrılacağını Framework belirlemektedir.
Ortaya çıkış tarihi
Web üç temel üzerine kurulmuştur. HTML, CSS ve JavaScript. HTML, bir web sayfasının yapısını tanımlamaktadır. CSS onu şekillendirmekten sorumludur. JavaScript ise, kullanıcı deneyimini sağlamaktadır.
Web tarayıcıları yalnızca bu üç teknolojiyi “anlar”. Sorun, hem bu teknolojilerin hem de tarayıcıların birbirinden ayrı gelişmesidir. Bir web sayfasının tüm tarayıcılarda aynı görünmesi ve kullanıcılarla aynı şekilde etkileşime girmesi için kod yazarken farklı tarayıcıların özelliklerini göz önünde bulundurmanız gerekir.
Oluşturduğunuz her site için bu tür işleri yapmak pahalıdır. Bu yüzden kütüphaneler ortaya çıkmıştır. Bir sayfanın HTML koduyla çalışmakla ilgili tipik görevleri çözmek için işlevler kümesiydiler. Böyle bir kitaplığa bir örnek, jQuery JavaScript kitaplığıdır. HTML belge ayrıştırma ve içerik yönetimini, olay işlemeyi, animasyonu ve Ajax kullanımını basitleştirmektedir.
Daha sonra zamanla HTML ve CSS kütüphaneleri ortaya çıkmaya başlamıştır. Onların yardımıyla, örneğin sayfayı birkaç sütuna bölebilir veya başlığı düzeltebilirsiniz. Bunlar tipik görevlerdir. Ayrıca bunları bir kez çözmek ve ardından bitmiş kodu yeniden kullanmak en iyisidir. Böyle bir Framework örneği, Twitter tarafından oluşturulan Bootstrap’dir. Bu bir önyüz Framework tipidir. İstemci tarafında ve tarayıcıda çalışmaktadır.
Python programlama dili için Django gibi arka uç Framework de vardır. Ayrıca tam yığın framework de vardır. Farklı web Framework türlerine daha yakından bakalım.
Framework sınıflandırması
Arka uç
Sunucu tarafında çalışırlar ve bir web uygulaması veya web sitesi sağlarlar. Onların yardımıyla temel sayfalar ve formlar oluşturabilir, girdi verilerini doğrulayabilir ve çıktı oluşturabilirsiniz. Özellikle, veritabanı ile çalışmak ve saldırılara karşı korunmak için işlevler uygularlar.
Arka uç Framework örnekleri, PHP için Laravel ve CakePHP, Python için Django ve Flask, Node.js için Express.js ve Ruby için Ruby on Rails’dir.
Ön uç
Web sayfasının sunumundan ve görünümünden sorumludur. Tüm tarayıcılarda bir web sayfasının aynı görüntüsünü sağlamaktadır. Stiller, animasyon ile çalışmayı basitleştirmekte ve çekici etkileşimli ara yüzler oluşturmanıza izin vermektedir.
En yaygın ön uç Framework türleri arasında Vue.js, Bootstrap, Foundation, Angular, React bulunmaktadır.
Tam yığın
Bu web Framework hem istemci tarafında, hem de sunucu tarafında çalışmaktadır. Tam yığıntıdır. Örnekleri Meteor, Next.js ve Nuxt’tur.
Framework çalışma prensibinin avantajları
Framework, uygulamaya özel kod yazmanıza izin vermekte ve tüm “kaba” işleri halletmektedir. Temelinde oluşturulan projelerin bakımı, ölçeklenmesi ve iyileştirilmesi kolaydır. Ayrıca Framework tabanlı ürünler çok daha hızlıdırmakta ve ağır iş yüklerinin üstesinden gelebilmektedir. Bununla birlikte saldırılara karşı korunmakta ve hataların önlenmesine yardımcı olmaktadır. Framework web için dayalı ürünler oluşturmak ve sıfırdan başlamaktan daha ucuzdur.
Dezavantajları
CMS‘den farklı olarak, Framework yalnızca temel mantık bileşenlerini içermektedir. Ayrıca bitmiş bir web sitesi oluşturmak için birçok ek kod yazmanız gerekmektedir. Öte yandan, framework çok fazla kod içermektedir. Mevcut tüm fırsatları kesinlikle kullanmanız pek olası değildir.
Framework özgürlüğünüzü sınırlamaktadır. Kendi kurallarını belirlemekte ve adlandırma kuralları, dizin yapısı, sayfa şablonlarında bulunan özelliklere kısıtlamalar getirmektedir. Ayrıca birçok özellik ve gereksinim sağladığından, öğrenmeleri genellikle önemli miktarda zaman almaktadır.
PHP Framework: ana özellikler
Laravel
Dünyanın en popüler PHP framework yazılımıdır. Oldukça karmaşık web siteleri ve web uygulamaları oluşturmak için kullanılmaktadır. Aynı zamanda Laravel, en kullanıcı dostu PHP yazılımlarından bir tanesidir.
Yüksek güvenlik düzeyine sahiptir. Ayrıca SQL enjeksiyonundan ve siteler arası komut dosyası çalıştırmadan korumaktadır. Bu Framework şablonlama motoru, yalnızca şablonları standartlaştırmanıza ve yeniden kullanmanıza izin vermekle kalmamaktadır. Aynı zamanda geliştiriciye PHP’nin yerleşik araçlarını kullanma özgürlüğü vermektedir.
Model, görünüm ve denetleyiciler birbirinden net bir şekilde ayrılarak projeler üzerinde işbirliği yapmayı kolaylaştırmaktadır. Laravel’in popülaritesi nedeniyle, bu web yazılım hakkında bilgi bulabileceğiniz birçok kaynak vardır. Bunlara kılavuzlar, nasıl yapılırlar, tartışmalar, topluluklar ve forumlar dahildir.
Symfony
Laravel’in temelini oluşturan bu çerçeve, en karmaşık projelerde bile çalışmayı basitleştirmeyi mümkün kılmaktadır. Ürün üzerinde çalışmanın ilk aşamalarında ölçeklendirme sağlamaktadır. Symfony son derece özelleştirilebilmektedir. Ayrıca ortak CMS ve hizmetlerin yanı sıra ortak JavaScript çerçeveleriyle bütünleştirmektedir.
CodeIgniter
Basitlik ve performansı bir araya getirerek yüksek hızlı kodlama sağlamaktadır. Sadece profesyoneller için değil, aynı zamanda yeni başlayanlar için de uygun basit bir arayüze sahiptir.
Bu Framework versiyonu açık kaynak kodu içermektedir. Ayrıca temiz ve anlaşılırdır. Bu da geliştirme sırasında hatalardan kaçınmanıza olanak tanımaktadır. CodeIgniter, projeleri geliştirmenin herhangi bir aşamasında test etmenize olanak tanımaktadır.
CakePHP
Bu Framework, güvenilirlik ve istikrar için bir ölçüttür. Projeleri ölçeklendirme yeteneğine sahip esnek bir mimariye sahiptir. Ayrıca, veri işleme hızını önemli ölçüde artıran oturum yönetimini de uygun şekilde uygulamaktadır.
CakePHP’nin yüksek performansı da dikkate alınmalıdır. Çünkü şablonlar oluşturulmakta ve yönlendirme daha hızlı yapılmaktadır. Çözüm ve eklentiler aynı şekilde oluşturulmuştur. Bu da çözümün öğelerinin birbirleriyle etkileşimini geliştirmektedir. Ek olarak temalar, çözümlerin geliştirilmesini büyük ölçüde basitleştiren eklentiler olarak uygulanmaktadır.
Yii
Framework özellikleri, AJAX ile çalışmanın verimliliği, geliştirilmiş önbelleğe alma ve kullanıcı arayüzleri oluşturmak için uygun bir araç setidir. Ek olarak, diğer çerçevelerden daha üstün olan anlık yükleme ile karakterizedir.
Yii, proje çalışmasını ve geliştiriciler arasındaki etkileşimi basitleştiren jQuery ile entegre olmaktadır. Aynı zamanda, Framework için yüksek bir giriş eşiği oluşturmakta ve onunla çalışmak için uygun deneyim gerektirmektedir.
Python Framework: ana özellikler
Django
Python için en ünlü ve çok popüler framework çeşididir. Web uygulamaları ve web siteleri oluşturmak için tam işlevselliğe sahiptir. Hazır bir yönetici arayüzü, yorumlar, kullanıcı yönetimi yetenekleri sağlamaktadır.
Django, kalıtım, yerleşik kimlik doğrulama yetenekleri, basit yönlendirme ve daha fazlasıyla kullanışlı bir şablonlama sistemi sunmaktadır. Framework, PostgreSQL, MySQL, SQLite ve Oracle gibi veritabanlarıyla çalışmaktadır.
Geliştirme aşaması için bir web sunucusu sağlanmalıdır. Genel olarak, Framework öğrenilmesi ve kullanılması kolaydır. Ayrıca kapsam ve amaca yönelik çözüm projeleri oluşturmak için uygundur.
Flask
Bu mikro Framework, minimum bir dizi temel işlevi uygulamaktadır. Ancak gerekirse genişletilebilmektedir. Basitliği nedeniyle, aşina olmayan ve yeni başlayan programcılar için uygundur. Flask, diğer çerçevelerden daha hızlı kurulur ve yapılandırılır. Yerleşik bir hata ayıklayıcı ve sunucu içermektedir. Jinja2 motoruyla çalışmaktadır. Ancak başkalarıyla birlikte de çalışabilmektedir.
Flask, belirli sorunları çözmek için kullanılır ve geniş bir işlevselliğe sahip değildir.
Pyramid
Modüler mimariye sahip tam yığın minimalist web Framework tipidir. Geliştiriciye birçok özellik sunmaktadır. Ayrıca hem küçük, hem de büyük uygulamalar yazmanıza olanak tanımaktadır. Çerçevenin modülerliği sayesinde bileşenleri kolayca değiştirebilirsiniz.
Piramit, tek dosya uygulamaları oluşturmanıza olanak tanımaktadır. Uluslararasılaştırma sağlar ve oturumlar için yerleşik desteğe sahiptir. Aynı anda birkaç veritabanı ile çalışmak mümkündür.
Framework, test ile %100 kod kapsamı sağlamaktadır. Bununla birlikte esnek hata ayıklama seçenekleri sunmaktadır. Hata ayıklama araç çubuğu tarayıcısına yerleşiktir. Geliştiriciler, topluluk desteğinden ve kapsamlı belgelerden yararlanabilmektedir.
Web2py
Python için diğerlerinin aksine, bu Framework için kurulum ve yapılandırma gerekmez.
Web2py, kendi hızlı çok kanallı web sunucusunu, SQL veritabanını ve web arayüzünü içermektedir. Üçüncü taraf yazılımına bağlı değildir. Ancak üçüncü taraf araçları kullanmaktadır. Bir örneğine dayanarak, farklı veritabanlarını kullanan birkaç site çalışabilmektedir.
Web2py, kapsamlı belgeler, örnekler, eklentiler, örnek uygulamalar ve diğer faydalı kaynaklarla birlikte gelmektedir. Farklı protokollerle çalışabilmektedir. Ayrıca Python’un üzerinde çalıştığı tüm platformları desteklemektedir.
Web2py, hızlı, ölçeklenebilir, güvenli ve taşınabilir uygulamaların hızla geliştirilmesini sağlayan tam yığın bir Framework tipidir.
Bottle
Bottle – hızlı, basit ve hafif bir mikro Framework tipidir. Tek bir dosya olarak dağıtılmaktadır. Ayrıca yalnızca Python standart kitaplığına bağlıdır. Yönlendirme, temiz ve dinamik URL’leri desteklemektedir. Ayrıca Bottle hızlı yerleşik şablon motoru mako, jinja2 ve çita şablonlarını desteklemektedir.
Yardımcı programlar, form verilerine, yüklenen dosyalara, tanımlama bilgilerine, başlıklara ve diğer meta verilere kolay erişim sağlamaktadır. Geliştirme için yerleşik HTTP sunucusu, paste, bjoern, gae, Cherrypy gibi sunucuları ve WSGI kullanan diğer sunucuları desteklemektedir.
JavaScript: Framework ve kitaplıklar
jQuery
jQuery, birçok özelliğe sahip hızlı ve hafif bir JavaScript kitaplığıdır. Olay işleme, animasyon ve AJAX çalışmasının yanı sıra bir HTML belgesinde gezinmeyi ve öğelerini yönetmeyi çok daha kolaylaştırmaktadır. Bu Framework, birden çok tarayıcıda çalışan kullanımı kolay bir API tarafından sağlanmaktadır.
Bir satır jQuery kodu, birkaç JavaScript kodu satırının yerini alabilmektedir. jQuery bir çapraz tarayıcı kitaplığıdır. Chrome, Edge, Firefox, Internet Explorer, Safari, Android ve iOS ile uyumludur. CSS3’ü destekler. İyi belgelenmiştir.
Çok yönlülüğü ve genişletilebilirliği birleştiren bu kitaplık, milyonlarca insan için JavaScript’in yazılma şeklini değiştirmiştir.
jQuery kitaplığının kullanımı kolaydır. Ancak, deneyimli JavaScript programcıları için tasarlanmıştır. Sağlam bir JavaScript bilgisi olmadan, belirli işlevleri yürütürken “perde arkasında” neler olduğunu anlamak zor olabilmektedir. Bu Framework, sorunlar oluştuğunda hata ayıklama zorluklarına neden olmaktadır. Bu nedenle yeni başlayan biri, yalnızca bir satır jQuery ile siteyi ciddi şekilde yavaşlatabilmektedir. Ayrıca kodu saf JavaScript ve CSS’de yeniden oluşturmak için yeterli bilgiye sahip olamamaktadır.
React
React hem bir kütüphane, hem de bir anlamda bir web Framework tipidir. Web arayüzleri oluşturmak için kullanılmaktadır. Etkileşimli bir arayüz oluşturmak için bileşenin farklı durumlardaki görünümünü tanımlamanız yeterlidir. Ayrıca veriler değiştiğinde React otomatik olarak sadece gerekli bileşenleri gösterecektir.
React, bileşenlere dayanmaktadır. Oluşturduğunuz bağımsız bileşenlerden karmaşık bir arabirim oluşturabilirsiniz. React, reaktivite sağlamayı kolaylaştırmaktadır. Bir bileşeni değiştirdiğinizde, bu değişiklikle ilişkili her şey değişmektedir.
Tek sayfalık web ve mobil uygulamaların yanı sıra çok sayfalı uygulamalar geliştirmenize olanak tanımaktadır.
Vue.js
Web arayüzleri oluşturmak için uygun fiyatlı, güçlü ve çok yönlü bir web Framework tipidir. Sezgisel bir API ve birinci sınıf kalite belgeleriyle standart HTML, CSS ve JavaScript üzerine kurulmuştur. Vue.js, derleyici için optimize edilmiştir. Ayrıca gerçekten reaktif olan bir işleme sistemine sahiptir. Nadiren ek manuel optimizasyon gerektirmektedir.
Vue.js, bir kitaplıktan tam özellikli bir Framework ölçeklendirmektedir. Bileşen tabanlı, bildirime dayalı programlama modeli, hem basit hem de karmaşık kullanıcı arabirimlerini verimli bir şekilde tasarlamanıza yardımcı olmaktadır.
Çerçeve kapsamlı belgelerle birlikte gelmektedir. Bu nedenle kurs kitaplığı ile becerilerinizi geliştirebilirsiniz.
Angular
Angular ile uygulamaların nasıl oluşturulacağını öğrenerek, web uygulamaları, mobil web uygulamaları ve masaüstü uygulamaları gibi herhangi bir hedef dağıtım için uygulamalar oluşturmak üzere kodunuzu ve bileşenlerinizi yeniden kullanabilirsiniz. Web Workers ve sunucu tarafı oluşturma kullanılırken daha da artan yüksek hız sağlanmaktadır.
Basit bildirim şablonlarıyla bileşenleri hızla oluşturabilirsiniz. Şablon dili, kendi bileşenlerinizle veya çok çeşitli hazır bileşenlerle genişletilebilmektedir. Angular, birçok IDE ve editör tarafından desteklenir.
Çerçevenin bu özellikleri, kodun çalışması için zaman kaybetmek yerine çekici arayüzler oluşturmaya odaklanmanızı sağlamaktadır.
Backbone.js
Backbone.js, tümü RESTful JSON arayüzü aracılığıyla API’nize bağlıdır. Ayrıca anahtar-değer modelleri sağlayarak ve özel olayları, zengin bir API’ye sahip koleksiyonları, bildirime dayalı olay işlemeye sahip görünümleri destekleyerek web uygulamalarının yapısını tanımlamaktadır.
Backbone.js, JavaScript işlevlerini kullanarak tek sayfa web uygulamalarını ve bunların ön uçlarını oluşturmanıza olanak tanımaktadır. Avantajlarından bazılarını sıralayalım.
- Uygulamanın HTML kodunu otomatik olarak günceller.
- Ücretsiz bir açık kaynak kitaplığı sağlar.
- İyi yapılandırılmış bir süreç kullanarak istemci tarafı mobil ve web uygulamaları geliştirmenize olanak tanır.
- Açık, okunabilir ve iyi belgelenmiş.
- Backbone.js modellerinin arka uca bağlanması kolaydır.
- jQuery kullanarak küçük web uygulamaları geliştirmenize olanak tanır.
Framework öğrenmek kolaydır. Açıklamalı kaynak kodu ve çevrimiçi test paketi, örnek uygulama, öğreticiler ve kapsamlı topluluk desteği GitHub’da mevcuttur.
Sonuç olarak;
Framework, web uygulamalarının ve web sitelerinin geliştirilmesini büyük ölçüde hızlandırmakta ve basitleştirmektedir. Projenin ya sunucu ya da istemci tarafını uygularlar, ya da her iki parçasını da kapsarlar. Bazı Framework özellikleri evrenseldir. Ayrıca bazıları belirli sorunları çözmenize izin vermektedir. Aynı zamanda hangi framework’ü kullanırsanız kullanın, size kodun çalışmasını sağlamaya çalışmak yerine uygulamanın iş mantığını kodlama ile uğraşma fırsatı verecektir.