Framework nedir? Ne işe yarar? Neden kullanmalıyım?

By -

Framework mü? Duydum öyle bir şey ama…

Framework, uygulama geliştiricisine, kullanabileceği bazı özellikleri önceden hazırlanmış (ve gerekirse geliştiricinin bunları kalıtabileceği) biçimde sunan güzide kütüphanelere sahip yapılara verdiğimiz bir isim. Özelliklere örnek olarak veritabanı bağlantısı, form kontrolü, hesap kontrolü vb. verebiliriz.

Neden Framework kullanayım?

Örneğin bir websitesi geliştirmek istiyoruz. Proje geliştirirken projede çözülmesi gereken soruna odaklanmak yerine formlardaki verilerin formatlanmasına, güvenli hale getirilmesine veya yazdığımız kodun kullanacağımız temayla iç içe girmemesine odaklanmak bizi hem yoruyor hem de zaman kaybetmemize sebep oluyor. “Tekerleği yeniden keşfetmek” yerine oluşturacağımız ürünün fikrine yoğunlaşmak için Framework kullanmak en mantıklı yol olarak görünüyor.

“Dünyadaki Framework’ler benim aradığım özelliğe sahip değiller”, “sahip olan da kendinin geliştirilmesine izin vermiyor”, “hız olarak projenin tipine göre düzenlenmiş en iyi optimizasyonu istiyorum” diyorsanız Framework kullanmama konusunda serbestsiniz.

Framework örneği olarak neler var?

Website geliştirirken PHP dilini tercih ettiğimizi varsayalım. Piyasada PHP için birçok Framework mevcut. Bunlardan en çok duyduklarım veya kullandıklarım: CodeIgniter, Zend, CakePHP ve Yii

Hangi Framework’ü kullanmalıyım?

Bu sorunun cevabı için öncelikle ne aradığımızı bilmek gerekiyor. (Özellik, hız, içerik, kullanım kolaylığı, kişiselleştirmeye olanak sağlaması, vb.) PHP için kullandığım Framework’lerden biraz bahsedeyim. (Şu an için sadece 2 tane)

CodeIgniter: Eğer Framework kavramıyla yeni tanışıyorsak ve MVC (Model View Controller) nedir bilmiyorsak (Framework nedir bilmiyorsak zaten “büyük ihtimalle” MVC bilmiyoruzdur) başlangıç için CodeIgniter gayet iyi. Küçük ve orta ölçekli projeler için hem hız hem de kullanım kolaylığı bakımından CodeIgniter gerçekten güzel bir seçim. Her ne kadar object oriented tasarıma ters düşen şeyler barındırsa da…

Zend: PHP’nin temsilini göğüsleyen bir şirkete ait olan, üzerinde at koşturabileceğiniz, detayın tillahına ulaşabileceğiniz bir Framework. Öylesine güzel, öylesine detaylı düzenlenebilir, öylesine esneklik sağlayan bir Framework ki öve öve bitiremez insan. Yalnız başlangıç için gerek konfigürasyonu gerekse detayını kavramak biraz zaman alabiliyor. Ayrıca, CodeIgniter’a göre daha hantal. Yine de “istersem MVC bile kullanmayacağım, detayına ineceğim, büyük çaptaki projelerde kullanabileceğim bir Framework arıyorum” diyorsanız ve PHP için hazırlanmış bir Framework üzerinde önceden deneyiminiz varsa doğru adrestesiniz.

Ben emin olamadım şimdi, biraz daha karşılaştırayım şu Framework’leri diyorsanız Google yardımcınız olsun. Yine de ufak tüyolar verelim:
http://blog.codehangover.com/php-framework-comparison/
http://www.yiiframework.com/performance/
http://www.phpframeworks.com/

Siz de geliştirdiğiniz projelerde işin teknik detayına gereksiz miktarda zaman harcadığınızı düşünüyorsanız, konuya odaklanmak yerine sayfalar arası gönderilen değişkenlere odaklanmak zorunda kalmanıza sinir oluyorsanız en kısa zamanda kendinize uygun bir Framework üzerinde çalışmaya başlayın derim. Geriye dönüp baktığınızda “ben bunu neden daha önce öğrenmedim” diyeceksiniz, emin olun.

Çalışmaktan zevk aldığı insanlarla beraber, ürettiği projelerde edindiği deneyimleri elinden geldiğince objektif olarak aktarmaya çalışıyor. ("O iş hep nazardan yattı.")

  • suhab

    Benim de çorbada tuzum olsun. Hızlıca bir proje yapmak istiyorum ancak Bu Framework’lerin modelleriyle controllerlarıyla yok bilmem neyiyle uğraşmak istemiyorum, host a atayım çalışsın istiyorum zaten iki sayfalık bir şey diyorsanız Slim Framework öneririm. Veritabanı işlemleriniz var ise eğer bilgili iseniz Slim + rbPHP öneririm eğer daha az bilgi sahibi iseniz FatFreeFramework öneririm. Eğer projeniz yüksek hız gerektiriyorsa ve server sizin elinizde ise Phalcon öneririm. Zaten bir iki framework kullanımından sonra istediğinizi kendiniz deneyebilcek duruma geliyorsunuz.

  • http://www.androiddunya.com/ Androiddunya

    Yii iyidir ama Laravel son zamanlarda ipi göğüsleyen oldu

  • Ozan Azize Uykun

    İlk profesyonel yerli framework olan ZN kod çatısının açılışını bu ayın sonunda zntr.net üzerinden yapacağız sizlerinde destek vermesini bekliyoruz hani diyoruzya üretmiyoruz diye işte ürettik. ZN Framework. Bu ayın sonunda dağıtıma başlıyoruz. Denemenizi yorumlar yapmanızı tavsiyelerde ve eleştirilerde bulunmanızı bekliyoruz.

    • Rıdvan Caner Öncü

      Ozan selamlar,
      Elinize sağlık, yakın bir zamanda deneyip kurcalamak boynumuzun borcu :) Haberdar ettiğin için teşekkürler

  • Fatih Mert Doğancan

    Hocam e-ticaret sistemleri için hangisini kullanmamız gerekiyor, siz iki tanesini yazmışsınız ama internette püüü sürüsüne bereket önüne gelen framework yazmış, şuan flightphp kullanıyorum kendisi micro framework fakat ihtiyacımı pek fazla karşılamıyor, e-ticaret sistemi geliştiriyorum benim için hangisi daha doğru bir seçim olur ?

    • http://koddit.com Rıdvan Caner Öncü

      Selamlar Fatih,

      Öncelikli amacın e-ticaret sistemi geliştirmeyi öğrenmek/geliştirdiğin kod üzerinden para kazanmak değilse, gerçekten ticari ürünler satıp para kazanmaksa kendi e-ticaret siteni yazmaktansa halihazırda mevcut e-ticaret ürünlerini kullanmanı tavsiye ederim. Aksi halde senin geçtiğin yollardan zaten geçmiş, karşılaştığın problemlerle zaten karşılaşmış ve çözüme ulaşmış insanların geçtiği yollardan geçmene sebep olup vakit kaybetmene neden olacaktır. Direkt kullanıma hazır e-ticaret ürünleri olarak Shopify, Magento, WooCommerce gibi pek çok ürün mevcut. Ayrıca bu ürünlerin çoğunda düzenlemek istediğin noktaları kod üzerinden düzenleyebilmek de, istediğin eklentileri kendin yazıp geliştirebilmek de mümkün.

      Hayır benim amacım e-ticaret sistemi geliştirmeyi öğrenmek/yazdığım koddan para kazanmak diyorsan, komünitesi geniş (takıldığın problemlerde yardım alabileceğin büyük bir kitleye sahip) bir framework’ü (misal Laravel) seçip direkt geliştirmeye başlaman en mantıklısı. Popüler olan framework hem sürekli olarak güncellenerek günümüz ihtiyacına uyum sağlar, hatalardan temizlenir, geniş bir dökümantasyona sahip olur hem de aynı komünitede bulunan insanların yardımlaşması bakımından avantajlı olur.

      Teşekkürler mesajın için :)

      • Fatih Mert Doğancan

        Rica ederim.

        Aslında açık kaynak yapmayı düşünüyorum, hem de öğrenirim.
        Dedikleriniz çok kompleks, daha minimal bir şey geliştirmeyi düşünüyorum.

        Projeye başlamamın amacı bu.

        İyi çalışmalar..

  • Anıl Akkaya

    güzel yazı olmuş aradığımı buldum. Emeğine sağlık

  • http://sisteminteraktif.com Muhammed Aktolu