• 01-08-2008, 19:06:09
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bir süredir forumda bahsettiğim MVC kavramını açmak istiyorum zira Türkiye'de MVC ile yazılım geliştiren, patterned way design gerçekleştiren yazılımcı pek yok. Ancak uzun vadeli iş modelleri üretmek için bu tip profösyonel yaklaşımlarla yazılım geliştirmek gerekli.

    MVC ile iş mantığı (business logic) ve arabirim birbirinden izole olur (idealde). Bu iki katman veritabanının sembolleştirildiği model ile desteklenirse ortaya model-view-controller çıkar.

    Model: Genel olarak kullanılan verinin iş mantığı tarafından kullanılması için biçimlendirilmiş halidir. Sözgelimi ORM ile veritabanını nesne tabanlı bir formata sokarsanız bu bir model olacaktır. Controller, model'e erişim sağlayarak veri çeker, değiştirir, siler (crud) yani her türlü işlemi katmanlar ile yapar.
    Model tek katmanlı da olabilir, çok katmanlı da olabilir.

    View: Uygulamanın arabirimine ait olan her türlü bileşen (html, css, js...) view kapsamındadır. Bu bölümde algoritma bulunmaz (idealde). Böylece kod ile html birbirinden ayrılır ve değiştirilmeleri kolay hale gelir.

    Controller Bu bölümde iş mantığı, algoritma, kod ne derseniz artık o bulunur. Her view için bir controller bulunur. Her controller için bir view bulunmak zorunda değildir.

    MVC ilk etapta programming languages içinde başarılı uygulamalar buldu. Sonra zamanla PHP gibi scripting language'lerin projeleri belli büyüklüklere ulaşınca business logic çerçevesinde geliştirme bir ihtiyaç halini aldı ve başarılı PHP-Framework'leri belirmeye başladı. Cake, Symfony, CodeIgnitor, Zend bunlardan bazıları. Ben Symfony'yi çok beğeniyorum, ileride sektöre bu araç hakim olacaktır.

    Bunun yanında kendi ihtiyaçlarınıza göre bir MVC-Framework de oluşturabilirsiniz. Benim kişisel kullanımım için hazırladığım böyle bir framework'üm var.

    Neden
    1 Takım çalışmasına yatkın
    2 Modüler
    3 Katmanlı mimari ile geliştirilmeye ve değiştirilmeye açık
    projeler üretmenize yardımcı olur.
    4 Kodlama sürecini standartlaştırarak iki yazılımcının aynı proje üstüne
    çalışmasını kolaylaştırır.
    5 Bu iki yazılımcı birbirini hiç tanımıyor ve 5 yıl arayla aynı projeyi kodluyor da olabilir.
    6 ORM gibi araçlarla veritabanı erişimini katmanlı hale getirir, kendini tekrar etme prensibini bolca kullanmanızı sağlar.

    MVC'nin web geliştirme araçlarına sıçramasında en büyük devrim aslında Ruby üstünde koşan RoR (Ruby On Rails)dir. PHP Framework'lerin RoR üstüne avantajı bence PHP'nin popüleritesidir.

    Java ve .NET'in MVC ile deneyimlerini de unutmamak gerekir.
  • 18-11-2008, 16:43:56
    #2
    Üyeliği durduruldu
    Bu konuna mesaj gelmemişte hiç ben yazayım dedim
    Bu aralar codeignitor ile ilgileniyorum. Basit ve kolay kullanımı var. Böyle orta ölçekli projeler için senin önerin nedir.
    Mesela zend çok büyük projeler için gerekli diyolar aynı şekilde cakephp .
    Benchmark testlerinde codeignitor ilk sırada çıkıyor. Senin önerini almak isterim
  • 18-11-2008, 16:49:24
    #3
    SNaRe adlı üyeden alıntı: mesajı görüntüle
    Bu konuna mesaj gelmemişte hiç ben yazayım dedim
    Bu aralar codeignitor ile ilgileniyorum. Basit ve kolay kullanımı var. Böyle orta ölçekli projeler için senin önerin nedir.
    Mesela zend çok büyük projeler için gerekli diyolar aynı şekilde cakephp .
    Benchmark testlerinde codeignitor ilk sırada çıkıyor. Senin önerini almak isterim
    Selamlar, tüm bu saydığın araçlar açıkçası sadece 1-2 hafta öğrenme eğrisi gerektirebiliyor, hepsi iyidir. Ben Symfony ve Zend kullandım. Zend biraz basit bir çerçeve, ama basit MVC projeleri için iyi olabilir.
    Zend araba ise Symfony uzay aracıdır.

    Cake'i inceledim, Symfony ile yaklaşık aynı mimaride. AJAX fonksiyonları benziyor. Cake de güzel bir alternatif. CodeIgnitor'ı bilmiyorum ama çok farklı olduğunu sanmıyorum.

    Ben bazı projelerim için kendi MVC framework'ümü ve ORM katmanımı yazdım. Onu kullanıyorum.

    Tamamen ihtiyaçlarına kalmış. Ama çok dillilik, ajax, vb biraz üst düzey ihtiyaçların yoğun şekilde gerekecekse 2-3 hafta Symfony kurcalayabilirsin.
  • 18-11-2008, 17:03:09
    #4
    Üyeliği durduruldu
    Bu aralar çok araştırdım sordun denedim ,hız performans kolaylık kalite yönünden codeignitor öneriyorlar.Eğer benim gibi biyerden başlamak en azından bu işin mantığını kapmak istiyorsanız bundan başlamanızı tavsiye ederim. bununla bir proje yazıp kendimi geliştirmek istiyorum bakalım belki bişey yazıp burda yayınlarım
    Bu arada burada video var temel olarak 2 proje yapmış. bir blog sistemi yazmanın ne kadar kolay olduğunu gösteriyor videolar.
    Tutorials | CodeIgniter

    Kolay gelsin
  • 04-12-2008, 17:51:26
    #5
    çok açıklayıcı olmuş tşkler...
  • 30-06-2009, 22:08:19
    #6
    Üyeliği durduruldu
    konuyu altta gördüm bende birşeyler paylaşayım dedim mvc'ler genelde php'de ileri düzey olan kişiler için yazılmıştır işlerinizi daha kolaylaştırsın diye. öneriyormuyum hayır önermiyorum sebebi ise çok açık hazır framework'lerle yapabildigimiz herşeyi düz php'de yapabiliyoruz peki neden kullanıyoruz ? bunun sebebi herkese göre degişiyor birisi diyor zamanım yok birisi diyor zevkli geliyor neden önermedigime gelirsede bunu ögrencegimiz vakitte kendi framework'lerimi yazsak daha iyi olmazmı hem geliştirmeye açık hem nerde ne kullandıgımızı biliriz .. hem istediginiz yerde kullanabiliyorsunuz. sahsen ben 3 haftasonumu vererek kendi framework'ümü oluşturdum vede işlerim neredeyse %60 a kadar hız kazandı bazı arkadaşlar diyecektir çünkü diyeni çok gördüm sınıflar genelde kod yıgınıdır bence çok byük bir faydası var çok çücük bir örnek vereyim

    mysql_connect....
    select_Db......

    yazmaktansa bir veri tabanı sınıfı oluşturup bunu __construct ile başlatsak sadece
    $love->Database("local","root","root","taban");

    olarak hızlı bir şekilde baglansak daha iyi olmaz mı alakasız bir örnek oldu mantıklı bir örnek vereyim sistem olarak mysql kullanıyorsunuz bunu oracle'a çevirmeniz lazım tahminimce projenin boyutuna göre 1 ila 10 gün arasında yapabiliriz tek bir sınıf olarak yazarsak oracle cevirmemiz 10 dk mızı almaz.
  • 07-07-2009, 00:20:02
    #7
    @LoverzSoft
    mesele zaten ekip çalışmasında daha çok işe yaraması yönünde. kimse loverzSoftun frameworkunu bilen biri var mı diye iş ilanı vermiyor. Zend framework bilen var mı diye ilan veriliyor. Neden ? çünkü genel bilinen kütüphaneler gibi genel frameworkleride bilen bulma ihtimali fazla. Bunun dışında framework kullanıp kullanmamakla ilgili teknik meselelerde var. Yapacağınız scriptin boyu, dahada gelişip gelişmeyeceği, esnekliği, scriptin hazırının olup olmaması vs. bir sürü tartışacak şey var.

    Drupal, typo gibi CMS ler ile işiniz bitecekse bitirin gitsin. Sonuç şu ki bir işi verimli ve hızlı yaptıran ne ise onu kullanmak ama çözümün işlere göre özelleşeceğinide unutmamak lazım.
  • 07-07-2009, 01:31:39
    #8
    .Net tabanlı diller için konuşacak olursak;

    İster MVC pattern olsun ister MVP (Model View Presenter) Pattern ya da diğer presentation kalıpları olsun sonuçta bir kalıba göre yazma eğilimini ifade eder.Her birinin kendine göre avantajları ve de dezavantajları var.Elbette isteyen kendi frameworkunu yazabilir (kalıba bağlı kalmadan). Hatta kitabını bile yazabilir.Ama her frameworkun de ayrıca öğrenilmesi için geçecek zaman vardır.Bu nedenle her frameworkun çalışma prensibini anlamak yerine bilindik frameworkler üzerinde bilindik kalıplar kullanmak daha kolaydır.Her yazılan projenin de bir mvc-mvp kalıbına sahip olma zorunluluğu yoktur. Bazen çok basit yapabileceğiniz bir işlemi, işin içine patterne göre yapma girdiğinde çok daha karmaşık yapabilirsiniz.
    Bir kalıba göre yazmak büyük projeler için daha temiz kod daha az karmaşa demek.Kişisel veya küçük projeler içinse tamemen tercih meselesi.

    Kalıplar (patterns) konusu sürekli gelişen bir konu.TDD / DDD / XP Programming / Agile populer konular.Hatta Unit Testing'e eleştirel bir bakışa sahip olan Hata temelli geliştirme EDD (Error Driven Development) gibi farklı farklı kalıplar bile mevcut.

    Sonuç olarak MVC - MVP yazılıma kod okunabilirliği - diğer programcılar tarafından devam ettirilebilirliği sağlayabilir ama daha iyi kod ya da daha kötü kod gibi bir katkı sağlamaz.
  • 10-09-2009, 21:16:55
    #9
    arkadaşlar ben bu konularda çok yeniyim. bir kaç soru sormak istiyorum.

    öncelikle mvc bir tasarım deseni mi ? anladığım kadarıyla veri gizlemeyi ön plana alan bir kodlama tekniği, design pattern tarzı bir şey. ama php adına araştırdğım zaman karşıma sürekli olarak frameworkler çıktı. cakephp olsun codeigniter olsun

    framework kullanmadan mvc tabanlı tasarım yapmak mümkün mü ? amazondaki kitapların çoğu da framework tabanlı olarak anlatıyor ?

    bir de son olarak bu tarz bir tasarım performanstan ne götürür ? diyelimki mysql diye bir sınıf açtık. içine de statik bir fonksiyon koyduk query($query) tarzında. bunun direkt olarak prosedürsel yazılan bir kodla ciddi bir performans farkı olur mu ? yoksa mysql in kullanacağı sistem kaynaklarının yanında lafı bile mi olmaz ?

    cevaplarınız için şimdiden teşekkürler .