MVC Mimarisi için En İyi Uygulamalar [kapalı]


28

Benim sorum MVC uygulamasının nasıl yapılacağı hakkında daha fazla. Örneğin, denetleyiciden veri erişimini ayırmak için DI'yi Depo modeliyle birlikte kullanmamız teşvik edilir, ancak HOW'da özellikle MVC için bunu yapması için çok az şey söylenir. Örneğin, Depo sınıflarını nereye yerleştiririz? Özellikle model ile ilgili gibi görünmüyorlar çünkü modelin gerçek veri erişim teknolojilerinden göreceli olarak ayrılması gerekiyor.

İkinci bir soru, katmanların veya katmanların nasıl yapılandırılacağını içerir. Örnek uygulamaların çoğu (İnek yemeği, Müzik Mağazası vb.) Hepsi, genellikle doğrudan L2S veya EF kodunu çağıran denetleyicilere sahip olan tek katmanlı, 2 katmanlı bir yaklaşım kullanıyor (test sayılmaz).

Çok katmanlı / katmanlı bir uygulama oluşturmak istersem, MVC ile ilgili en iyi uygulamalardan bazıları nelerdir?

Yanıtlar:


5

DI bir Kontrolör Fabrikası kullanılarak ASP MVC'de gerçekleştirilir. Bu fabrika kontrol cihazınızın bağımlılıklarını çözmek için kullanılır.

MvcContrib, kutudan kullanabileceğiniz bazı Controller Facotry uygulamalarına sahiptir. Castle Windsor uygulamalarını kullanıyorum ve iyi çalışıyor. Ayrıca TestHelper Sınıflarına göz atmanızı öneririm. Denetleyici HTTPContext, Sessions vb. İle alay etmek için çok harika bir işlevselliğe sahiptir. MVCContrib

Şahsen, Modellerime çalışacak bir Havuz örneği vermeyi seviyorum. Model depoya bir api gösterir (CRUD). Kontrolörün belirli bir modele bağımlılığı yaratıcıya (kurucu) enjekte edilir ve bu kontrolör Fabrika tarafından enjekte edilir. Bu, IoC kabımın yönettiği nesne grafiğine giriş noktam.


2

Örneğin, Depo sınıflarını nereye yerleştiririz?

Onlar modele ait; Uygulama içi model onlar.

Katmanları nasıl yapılandırabilirim? Çok katmanlı / katmanlı bir uygulama oluşturmak istersem, MVC ile ilgili en iyi uygulamalardan bazıları nelerdir?

Katmanlar Kodun fiziksel olarak ayrılmasını temsil eder. Katmanlar mantıksal ayrımları temsil eder. Katmanlar (halihazırdaki gibi) MVC için iyi çalışır. İş mantığı miktarına bağlı olarak, Kontrol Ünitenize yerleştirilebilir veya ayrı bir montaj içine yerleştirilebilir ve talep döngüsü sırasında kontrol ünitesi tarafından kullanılabilir.


Yani, çok katmanlı bir uygulamanın UI Projesi'ne girmeleri gerektiğini mi söylüyorsunuz?
Erik Funkenbusch

@ Mystere Man Eğer devasa değilse, MVC uygulamanızı barındıran projeye katılmaları gerekir. Özellikle, iş mantığı denetleyiciye girer ve her eylemin kendi mantığı olur. MVC sadece UI sadece bir model değildir; bu yüzden 'UI projesi' olduğu iddiasına katılmıyorum. Değil. Bu bir Viewbölüm olarak bir MVC projesi (kullanıcı arayüzünüz var).
George Stocker

Tamam, belki de bunu zayıf bir şekilde ifade ettim. Ancak, görüntüleme katmanının veritabanını değiştirmemesi gerektiği konusunda hemfikir değil misiniz? Ve eğer Depo sınıflarını modele koyarsanız, görünüm bunu yapabilir.
Erik Funkenbusch

Küçük MVC uygulamasında, UI "Katmanı" yalnızca görünümleri tutan klasördür. Daha büyük bir uygulamada, kendi projesi olabilir. Eğer kendi projesi ise, kontrolörle koordineli olacak ve kontrolör BusinessLayer'a gerektiği gibi bağlanabilecektir. Denetleyicinin dışındaki hiç kimsenin iş katmanının var olduğunu bilmesine bile gerek kalmayacaktı. Bence bunların otomatik olarak ayrı projeler olduğunu düşünüyorsunuz, ama olmak zorunda değiller.
George Stocker
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.