Sorum daha fazla bir MVC uygulaması nasıl mimar hakkında. Örneğin, denetleyiciden veri erişimini ayırmak için DI'yi Havuz deseniyle birlikte kullanmamız önerilir, ancak NASIL'da bunu özellikle MVC için yapmak için çok az şey söylenir. Örneğin, Depo sınıflarını nereye yerleştiririz? Özellikle modelle ilgili görünmüyorlar, çünkü model aynı şekilde gerçek veri erişim teknolojilerinden nispeten ayrılmalıdır.
İkinci bir soru, katmanların veya katmanların nasıl yapılandırılacağını içerir. Çoğu örnek uygulamanın (Nerd yemeği, Müzik Mağazası, vb.) Tümü, genellikle doğrudan L2S veya EF kodunu arayan denetleyicilere sahip tek katmanlı, 2 katmanlı bir yaklaşım (testleri saymaz) kullanır.
Çok katmanlı/katman uygulaması oluşturmak istersem MVC ile ilgili en iyi uygulamalardan bazıları nelerdir?
DI ASP MVC bir Denetleyici Fabrikası kullanılarak gerçekleştirilir. Bu fabrika denetleyici bağımlılıklarınızı çözmek için kullanılır.
MvcContrib, kutunun dışında kullanabileceğiniz bazı Denetleyici Facotry uygulamalarına sahiptir. Castle Windsor uygulamasını kullanıyorum ve iyi çalışıyor. TestHelper Sınıflarına da göz atmanızı öneririm. Denetleyici HTTPContext, Sessions, vb. İle alay etmek için çok güzel bir işleve sahiptir. MVCContrib
Şahsen Modellerime çalışmak için bir Depo örneği vermek istiyorum. Model, depoya bir api (CRUD) uygular. Kontrolörün belirli bir modele bağımlılığı yaratılışa (yapıcı) enjekte edilir, bu Kontrolör Fabrikası aracılığıyla enjekte edilir. Bu, IoC kabımın yönettiği nesne grafiğine giriş noktam.
Örneğin, Depo sınıflarını nereye yerleştiririz?
Modele aittirler; onlar uygulama içi model.
Katmanları nasıl yapılandırabilirim? Çok katmanlı/katman uygulaması oluşturmak istersem MVC ile ilgili en iyi uygulamalardan bazıları nelerdir?
Katmanlar Kodun fiziksel ayrımlarını temsil eder. Katmanlar mantıksal ayrımları temsil eder. Katmanlar (şu anda oldukları gibi) MVC için iyi çalışır. İş mantığının miktarına bağlı olarak, Denetleyicinize yerleştirilebilir veya ayrı bir Montaja yerleştirilebilir ve denetleyici tarafından istek döngüsü sırasında kullanılabilir.