Web için MVC dışında herhangi bir tasarım deseni var mı?


15

MVC dışında web için herhangi bir tasarım desenleri olduğunu bilmek istiyorum?

Tasarım desenleri olduğunu biliyorum: Kayıt Defteri, Gözlemci, Fabrika, ActiveRecord, ... ve MVC diğer tasarım desenleri ve klasör yapısı kümesi.

MVC gibi bir dizi tasarım deseni var mı?

Düzenleme: programlama dilim PHP.



1
@ Bay-Moqadam, lütfen bir göz atın - meta.stackexchange.com/questions/5234/…
Yusubov

Aşağıdaki cevapların sorunuzun tüm yönlerine cevap verdiğine inanıyorum. En iyisini kabul edebilir ve topluluğa yardım edebilirsin.
Arpith

FB'nin Flux modeli hakkında.
Muhammed Umer

Bkz . İlk önce de.
nawfal

Yanıtlar:


25

Yazılım geliştirmede farklı modeller vardır; MVP, MVVM, MVC vb . İyi bilinenlerden bazılarıdır. Ancak, çözmek veya kullanmak istediğiniz belirli bir sorunu veya teknolojiyi tanımlamanız gerekir.

resim açıklamasını buraya girin

Bu örüntülerin her biri, bazı belirli problemleri çözmek için iyidir. Örneğin, MVP (Model Görünümü Sunucusu) deseni , ASP.NET WebForms geliştirmesinde endişelerin ayrılmasını sağlamaya yardımcı olur. Bir web sayfasından veri toplama, görüntüleme ve saklama sorumluluklarını ayrı nesnelere bölmekten oluşur: bir Model nesnesi, bir View nesnesi ve bir Presenter nesnesi.

Tasarım desenlerinin en ünlü genel yemek kitabı Gang of Four (GoF) tasarım desenleri .

resim açıklamasını buraya girin

Düzenleme: Ben daha .NET platformunda tasarım desenleri uygulamakla ilgileniyorum varsayalım


1
+1, bir model olarak tanımlanan MVC ile mi yoksa yakında mı yoksa yakınını görecek bir teknikle mi yaşayacağız?
Bağımsız

6
+1 ancak MVP, MVVM ve MVC aynı temanın varyasyonlarıdır: (g) ui'yi model mantığından ayırmak ve aralarında bazı üçüncü tarafların (denetleyici, sunucu) arabuluculuğu.
Marjan Venema

2
@ Bay-Moqadam: MVC ilk başta aşırıya kaçmış ve karmaşık görünüyor. UI, mantık ve verileri ayırarak yapmanız gerekenleri yapar. Yazılım geliştirmede kesin olan tek şey değişimdir. Ve genel bir kural olarak; % 20 gelişme,% 80 bakım yapıyor. Bu açıdan bakıldığında, MVC kesinlikle çabaya değer. Bunu başarmanın en temel modeli sanırım.
Bruno Schäpper

3
@ Bay-Moqadam: Hayır, yalnız olsanız bile size çok yardımcı oluyor. Özellikle büyük projelerde.
Bruno Schäpper

1
@ Mr-Moqadam MVC'nin bir takım geliştirme modeli olduğunu kim söyledi? Ben uzun zamandır PHP kullanarak geliştirmekteyim ve MVC işleri korumak için zorunludur. Herhangi bir PHP çerçevesi kullanmayı denediniz mi?
Songo

7

Birkaç hafta önce geldiğim güzel bir desen MOVE . MVC gibi biraz daha sofistike görünüyor, ancak aynı prensibe dayanıyor. MVC'nin bir dezavantajı, kontrol cihazlarınızın gerçekten, gerçekten büyük olabileceğidir. MOVE modelini kullanarak, bu sorunu biraz ele alacaksınız.

Diğerleri tarafından adlandırılan diğer desenler de iyi alternatiflerdir.


Ben MVC ince Kontrolörleri kullanarak terfi düşündüm ?! Biliyorsunuz "İnce Kontrolörler ve Yağ Modelleri"
Songo

Öyle, ama gerçekte kontrolörler oldukça şişman olma eğilimindedir.
Jan_V

2
Bunun nedeni, etki alanı mantığını denetleyicilere koyduğunuzdan, orijinal Krassner ve Pope MVC'nin amacı değildi. Orijinal şekilde kontrolörler, giriş işlemleri ile ilgilidir, örn. fare tıklamalarını (X, Y) koordinatına model işlemine bağlama (örneğin, bir termostat uygulamasında sıcaklığı artırma). Bununla birlikte, MVC anlamda kontrolör katmanının çoğu tam otomatiktir ve bu nedenle bir çerçevede uygulama geliştiricisi tarafından görülmez.
Aadaam

akış gibi hareket ediyor
Muhammed Umer

4

Kurulması gereken ilk şey, bir çerçevenin ve / veya MVC'nin (veya başka bir tasarım modelinin) faydalı olup olmayacağına karar vermek için tam olarak yapmanız gereken şeydir.

Çerçeveler, genellikle ortak programlama gereksinimlerine (Veritabanı etkileşimi, form oluşturma ve doğrulama, kullanıcı kimlik doğrulaması vb.) Çözümler sunarken, geliştirme için tutarlı bir platform sağlamak için vardır.

PHP için en azından MVC / HMVC tasarım deseni mevcut ana çerçevelere (örn. Zend , CakePHP , CodeIgniter vb.) Hakim olma eğilimindedir , ancak birisinin kullanabileceği birçok farklı tasarım deseni vardır.

MVC çok popülerdir çünkü veri modelleme ve işleme mantığını görünüm / sunum katmanından ayırmak için sağlam ve anlaşılır bir yol sunar (sağlam, ölçeklenebilir uygulamalar üretmek için arzu edilen bir şeydir).

MVC, MVP, MVVM ve diğer MV x modellerinin (en azından prensip olarak) aynı 'tasarım deseni' olduğunu belirtmek (@Marjan Venema tarafından @ ElYusubov'un cevabına yaptığı bir açıklamada ifade edildiği gibi) önemlidir .

Tipik olarak farklı tasarım modellerinin hepsi (genellikle incelikle) farklı amaçlara hizmet eder ve bazı durumlarda belirli bir dil düşünülerek geliştirilmiştir. Bununla birlikte, gerçek bir 'tasarım deseni' programlamanın zor ve hızlı bir kuralı değildir ve gerçekten bir programın uygulanması ve tasarım gereksinimleri ile mantıksal işlev (ler) in felsefi / düşünsel bir anlayışıdır.

Araştırma, farklı programlama prensipleri ve en iyi uygulamalar hakkında bilgi edinmenin en iyi yoludur. İşte başlamanız için bazı Wikipedia bağlantıları:

Uygulamada, kendi 'deseninizi' uygulamanızı engelleyen hiçbir şey yoktur, IMO en iyi yolu yaparak öğrenmektir, benim için en azından MVC modelini kullanarak bir web sitesi yazmaya çalışana kadar tam olarak anlamadım.

Programlama kavramlarından ve en iyi uygulamalardan bazılarını anladıktan sonra, karşılaştığınız belirli sorunları çözmek ve yerleşik bir 'kalıba' uygun olsa da olmasa da ihtiyaçlarınızı karşılamak için kendi sisteminizi oluşturmak için bunları kullanabilirsiniz.

Çözülecek belirli bir sorun kümeniz yoksa, ortak çerçevelerden birini öğrenmek en iyi seçenektir.


3

En ünlü örneklerden biri , MVVM tasarım modelini kullanan bir javascript çerçevesi olan Knockout.js'dir . MVC çerçevesi Backbone.js ile Knockout.js'yi karşılaştıran yığın taşmasıyla ilgili harika bir makale var .

Sidenote, MVVM tasarım modelinin, Martin Fowler'ın PM tasarım modelinin bir uzmanlığı olarak Microsoft'tan kaynaklandığı yönündedir. MVVM, WPF uygulamaları tarafından yaygın olarak kullanılmaktadır.


sayfa bulunamadı!
Muhammed Umer

1
@MuhammadUmer Teşekkürler, bağlantıyı güncelledim. Maalesef StackOverflow bu 1000+ puanlık soruyu sildi. Neyse ki, geri dönüş makinesinin katı bir denetleme sistemi yoktur.
dodgy_coder

Hiç sürpriz değil ... tüm se siteleri de böyle olmasını bekliyoruz.
Muhammed Umer

0

ElYusubov'un işaret ettiği gibi, nispeten ana akım örnekler arıyorsanız, ASP.Net çerçevesi uzun süredir MVP ve MVVM desenlerine sahipti. MVC ve MVVM arasındaki temel farklılıklardan biri, varlıklarınızın nasıl güncellendiği; MVC, web uygulamalarının geleneksel vatansız veya yarı vatansız yaklaşımına daha uygundur. ASP.Net çerçevesi, MVP ve MVVM modellerini orada daha mantıklı kılan durumunuzu bir formda (böylece her istekte geri yüklenebilir) gömülü tutarak bu sorunu gidermeye çalıştı.

HTML5 ile uygulamalar giderek daha fazla JavaScript ağırlıklı hale geliyor ve durumlarının çoğu istemcide. Bu MVVM çerçevelerinde yeniden canlanmaya yol açabilir ve Knockout JS buna bir örnektir.


0

Vahşi doğadaki çoğu desen MVC veya MVC'nin bir çeşit lezzetidir. Sonuçta verilerinizi bölmek mantıklıdır (Model), temsil (Görünüm) ve onunla etkileşim (Denetleyici). MVC'ye 80'lerde kurulduğuna bir göz atarsanız, bunun asla bir web çerçevesi olmasının amaçlanmadığını öğreneceksiniz. Böylece web'de çok fazla yük buldum.

Diğer iyi bilinen bir desen Hizmet Odaklı Mimari (SOA) olacaktır. Buna dayanarak, modern bir yaklaşım, sunucunuzda bir MVC (veya lezzet) olması, sadece çalışabileceğiniz bir hizmeti ortaya çıkarmak olacaktır. İstemci tarafında, HTML5 ve JavaScript destekli bir web uygulaması (örneğin Twitter veya Linked In) gibi başka bir MVC tarzı uygulama olacaktır. İstemci uygulaması, sunucu tarafı hizmetinizi (sunucunun "Görünümü") Modeli olarak kullanır. IMHO, bu son teknoloji olacak ve muhtemelen sunucu tarafı sadece MVC bir kenara itecektir.


0

Ben şahsen Kaynak Yöntemleri Temsil fikrini kullanan bir şey uygulamaya çalışıyorum , ancak bu aşamada çoğunlukla sadece her şeyden daha fazla bir deney. MVC'den daha iyi bir HTTP isteği / yanıtı (kısa ömürlü istek / yanıt oturumlarının aksine tek bir bilgisayarda çalışan uzun ömürlü uygulamalar için kastedilmektedir) modellemesinde bazı zorlayıcı noktalar vardır. Bununla birlikte, kaynaklarınıza GET, POST, PUT, DELETE, vb. İşlemek için yöntemler koyarsanız, kaynaklarınızın ön uca bağlanması dezavantajı vardır. Bunu başka bir katmana ayıracağımı düşünüyorum.


0

MVC haricinde 1000'den fazla yol var, bazıları MVC'ye ve bazıları tamamen farklı

Örneğin :

  1. Model-Şablon-Görünüm - MTV
  2. Model – görünüm – sunucu - MVP
  3. Hiyerarşik model-görünüm-denetleyici HMVC
  4. Model Görünümü ViewModel- MVVM

vb


1
bu, önceki 7
cevapta

bence sorunun en basit yanıtı bu.
Saurabh Chandra Patel
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.