Model Görünümü Denetleyicisini Açıklama


13

Dinamik web siteleri geliştirme konusundaki deneyimim çoğunlukla Java sunucu uygulamaları ile sınırlı. Tomcat'ı çeşitli Java sunucu uygulamaları geliştirmek için kullandım ve bu teknolojinin yanı sıra ön uç için istemci tarafı HTML / CSS / Javascript ile de oldukça yetkin olduğumu söylemekte tereddüt etmem.

"Dinamik web sitesi" düşündüğümde, sanırım: kullanıcı bir sorgu dizesi ile bir URL ister, sunucu sorguyu alır ve sonra sorguyu yanıtlamak için dinamik olarak HTML çıktısı ilerler. Bu genellikle görüntülenmesi için istenen verileri almak için bir veritabanı ile iletişimi içerir. Temelde doGetbir Java yönteminin arkasındaki fikir budur HttpServlet.

Ama bu günlerde, Django ve Ruby on Rails gibi hepsi "Model View Controller" mimarisinden faydalanan daha yeni çerçeveler duyuyorum. MVC açıklayan çeşitli makaleler okudum , ama gerçekten faydalarını anlamakta sorun yaşıyorum. Genel fikrin iş mantığını UI mantığından ayırmak olduğunu anlıyorum, ancak bunun normal web programlamasından gerçekten farklı bir şey olduğunu göremiyorum. Web programlama, doğası gereği, iş mantığını (arka uç sunucu tarafı programlama) UI programlamasından (istemci tarafı HTML veya Javascript) ayırmaya zorlar, çünkü ikisi tamamen farklı programlama alanlarında bulunur.

Soru: MVC, Java sunucu uygulaması gibi bir şey üzerinde ne sunuyor ve daha da önemlisi, MVC tam olarak nedir ve Java sunucu uygulaması (veya hatta daha geleneksel bir yaklaşım kullanarak dinamik bir web sitesi geliştirmek için normalde yaptıklarınızdan nasıl farklıdır) CGI gibi daha eski bir şey)? Mümkünse, MVC'yi açıklarken, lütfen MVC'nin web geliştirme sürecine nasıl uygulandığını ve nasıl faydalı olduğunu gösteren bir örnek verin .

Yanıtlar:


7

Önce en iyi MVC Mimarisi hakkında konuşmak ve daha sonra şu anda programladığınız şekilde ilerlemek düşünüyorum.

MVC Mimarisi, bir sotfware sistem içindeki iş akışını organize etmenin bir yoludur, sistem davranışını uygulamak için katmanlı bir yol olarak düşünün. Bu katmanlar:

  1. Model : Veri Modelinizi, onunla ilgili tüm bilgilerin yerelleştirilmesi gereken sistem çekirdeğini temsil eder. Örneğin: bir Oyun tasarlayacaksanız Oyunculara, Kurallara, Engellere ve bu öğelerin etkileşimleriyle ilgili bazı mantıklara ihtiyacınız olacaktır: Oyuncular bazı Kurallar geçerli olduğunda Engelleri sıralayabilmelidir.

    Model ilk çünkü kapalı düşünmek gerekir düşünüyorum onun uygulamalarınızın merkez olacak .

  2. Denetleyici : Bu, sihrin gerçekleştiği ve Katmanlı Mimarinin, kullanılması amaçlanan Nesne Odaklı Paradigma ile buluştuğu yerdir. Burada, bazı uygulama kullanıcıları uygulama arayüzü kullanıcı arayüzü hakkında bir şey istediklerinde sistemin nasıl tepki vereceğini uygularsınız.

    Denetleyici, Model Nesneleri ile çalışabilmeli, kullanıcının istediklerini elde etmek için onlarla işlem yapabilmeli ve ardından sonucu tekrar kullanıcıya göstermek için ilgili Görünüm Katmanına devredebilmelidir.

  3. Görünüm : Bu, Kullanıcı etkileşimlerinin Başlangıç ​​ve Bitiş Noktasıdır. Kullanıcıların uygulama ile nasıl etkileşime gireceğini burada tanımlayabilirsiniz. Günümüzde kullanıcılar, örneğin Cep Telefonları, Tablolar, Adet, Dizüstü Bilgisayarlar vb.Gibi farklı medya türlerinden web uygulamalarına erişmeye çalışmaktadır.

    Genellikle her bir teknolojinin görünümü oluşturmak için farklı bir dile ihtiyacı vardır, bu nedenle Veri Modelinizin ve modelin nasıl etkileşimde bulunduğunu ve bu etkileşimleri nasıl oluşturduğunuzu hayal edin, kodunuzu CopyPaste olmayan bir şekilde yeniden kullanmanın kesinlikle bir yolu olmadığını düşünün. . Sonuç, HOLE sistemini uyarlayan kokan ve çok zaman kaybeden koddur.

    Görünümü ayrı bir katmana sahip olmanın önemi , şu anda üzerinde çalıştığımız Modelden bağımsız olarak çalışmamıza izin verir . Sadece kontrolörün bize gönderdiği nesnelerin listesini nasıl oluşturmamız gerektiğini bilmeliyiz. Nasıl yarattı tamamen önemsiz

Böylece, nihayet mevcut ihtiyaçlarımıza göre gördüğümüz gibi uyarlanabilecek bağımsız bir Modelimiz var (bugün kuralsız bir Monouser Oyunu kullanmalıyım, yarın arkadaşlarla oynamak istiyorum, şimdi çok kullanıcılı, vb.) bu onu kullanıcıya nasıl sunacağımıza bağlı değildir. Daha sonra, bir görünümden gelen kullanıcıların isteğini yakalayan bir Denetleyici , Model Nesneleri'ni işler ve sonra bilgileri oluşturmak için bilgileri Görünüm'e geri verir.

Sorduğunuz ilk soruya geri dön: Gördüğünüz gibi (umarım) MVC bir şeyler yapmak için bir YOL, yazılım oluşturmak için bir TECHNOLOGIE değil. Java Servlet'lerinizi kullanabilir ve altına bir MVC Teknik Belgesi uygulayabilirsiniz.

İşte biraz açıklığa kavuşturmak için MVC Mimarisi kullanan bir Soru-Cevap örnek sitesi resim açıklamasını buraya girin


6

Soruna cevap vermek için

What does MVC offer over something like a Java servlet

MVC bir model değil, bir teknolojidir. Böylece desen Servlet'lerle programlama yaparken de uygulanabilir.

MVC modelini Servlet'lerin kendisiyle açıklamaya çalışayım. MVC uygulamak hakkında konuşurken yapmaya çalıştığınız şey, Modeli (iş mantığı), görünümü (sunum mantığı) ve Denetleyiciyi (denetimi uygun iş mantığına delege eden denetleyici Servlet'i) ayırmaktır.

Bu durumda, MVC sadece işin sunum katmanından ve denetleyici katmanından ayrılmasıyla ilgili değildir, ancak iş katmanı bir denetleyicinin veya sunumun var olduğunu bile bilmez.

Java'da Struts gibi büyük çerçeveler bu modeli izler. Bence kavramı yanlış anladın. İnternette daha fazla bilgi edinebilirsiniz.


2

MVC'nin anlaşılması gerçekten kolay, sadece bir tasarım deseni, ancak en zor / denetlenen Model kısmı olduğunu gördüm.

  • Model : Verileriniz (yalnızca veritabanınız değil!, Model bir ini veya xml dosyası veya bir web hizmetinden veriler olabilir). Model sınıfları, verileri tanımlama, birleştirme ve kullanma amacına hizmet eder. " MVC'de M: Modeller Neden Yanlış Anlaşıldı ve Farksız " adlı mükemmel makaleyi okuyun . Modele sadece kontrolör tarafından erişilmelidir.
  • Görünümler : GUI (sunu) kodunuz. Yalnızca denetleyiciye erişmelidir
  • Kontrolör : Mantık. Model ve görünüm arasındaki iletişimi gerçekleştirir.

1

Model-View-Controller kavramı yeni bir şey değildir. 1979'da Smalltalk ile başladı.

Özünde MVC, kodunuzun sorumluluklarını modüler, öngörülebilir ve sağlam olacak şekilde düzenlemenin bir yoludur.

Ayrılık size aşağıdaki özgürlükleri sağlar:

  • Uygulama mantığını etkilemeden veya verileri görüntülemeden modeli geliştirebilme
  • Modeli etkilemeden iş mantığını değiştirme yeteneği (yeni adımlar ekleme, vb.)
  • Modeli farklı şekillerde temsil edebilme

Özenle, bir masaüstü uygulamasını bir web uygulamasıyla ön uç olarak tamamen değiştirebileceğiniz şekilde modeli ve denetleyiciyi tasarlayabilirsiniz.

Daha yakın zamanda, MVC'ye Ruby on Rails yaklaşımı, neredeyse tüm MVC tarzı web uygulama çerçevelerinde kopyalanan bazı yeni kavramları tanıttı. Bu, "Konfigürasyon üzerinde sözleşme", denetleyici eylemlerini sınıf yöntemleriyle eşleme ve URL isteklerini temel alınan koda yönlendirme kavramlarını içeriyordu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.