Soğan çerçevesinde, dış katman tüm iç katmanlara erişebilir. Bununla devam edersem, dış katmanım (MVC'deki UI katmanı/Denetleyici) doğrudan uygulama/iş hizmetlerine ve depolara da erişebilir. Şimdi, denetleyicim bir etki alanı modeli oluşturabilir ve veri deposunu kullanarak veri deposunda kaldırabilir. Ve böylece iş katmanında yazılan doğrulama ve diğer iş kurallarını atlayın. İnanıyorum ki, bir şey özlüyorum. Lütfen yardım et. Palermo kendisi twitter konuşmaları aksi belirtilmedikçe olmasına rağmen http://jeffreypalermo.com/blog/the-onion-architecture-part-2/Soğan Çerçevesi: UI/Kontrolörlerin doğrudan depoya erişmesi gerekiyorsa
cevap
den
public SpeakerController(IConferenceRepository conferenceRepository,
IUserSession userSession, IClock clock)
: base(userSession) {
_conferenceRepository = conferenceRepository;
_clock = clock;
_userSession = userSession; }
Ben "hayır" demek. Her katmanın bir sonraki iç katmanla konuşmasına izin verdiğini ve bypass etmediğini söylüyorum. Bu kurala yaptığım istisna, söz konusu işlevsellik temel olarak referans veriler için sadece CRUD ise. Bu tür veriler için ek karmaşıklığı tanıtmak için bir neden göremiyorum. Başka bir alternatif, depo uygulamanızın iş kurallarının doğrulanmasını zorlamasını sağlamaktır. Uygulama, soğanın en dış tabakasında olduğundan, bunun yapılması oldukça kolay olmalıdır.
Alistair Cockburn's Hexagonal Architecture'u Onion Architecture'den daha kolay ve daha kolay buldum. Temelde "benim uygulamamın içinde" ve "benim uygulamamın dışında" var. Bu sınırı geçmeniz gerektiğinde, uygulamanızı uygulama ayrıntılarından korumak için bir adaptöre ihtiyacınız vardır.
- 1. Sadece gösterim gerekiyorsa bilimsel gösterimi kullanın
- 2. Döndürülmüş bir sendikanın bir değişkene değişken olmadan erişmesi yasal mıdır?
- 3. Instagram için doğrudan destek Adobe
- 4. , doğrudan
- 5. GIT Uzantıları kullanılarak depoya geçirilemiyor
- 6. İki alakasız depoya nasıl katılır?
- 7. Pencerelerde depoya sembolik bağlantı ekleme
- 8. Depoya git birleştirme sürücüsü ekleyin?
- 9. Bahar çerçevesi
- 10. wp7 üzerindeki varlık çerçevesi
- 11. C# eklenti çerçevesi nasıl oluşturulur?
- 12. Git: Bir komutta iki depoya itme
- 13. VisualSVN Sunucusunu varolan bir depoya iliştirme
- 14. Yerel depoya bağımlılığı aramak için maven zorla
- 15. git: başka bir dizinde depoya taşını taşıma
- 16. maven yerel deposunu uzak depoya dönüştürün
- 17. Mercurial hg birden fazla depoya hizmet veriyor
- 18. svnX kullanarak * .a dosyalarını depoya nasıl ekleyebilirim?
- 19. WC'yi yeni depoya taşımaya çalışırken sorun var
- 20. Maven: Weblogic libs'i yerel depoya yerleştirirken hata
- 21. Git (bitbucket): Ssh tünelini mevcut depoya taşıyın
- 22. Git, henüz depoya aktarılmamış dosyaları alın
- 23. pygit2 (libgit2) kullanarak oluşturulmuş bir depoya lekeler veya ağaçlar ekleyin?
- 24. yeniden düzenleme Veri çerçevesi
- 25. Net doğrudan
- 26. Kivy kesinlikle bir GUI çerçevesi midir?
- 27. VBO'yu değiştirmem gerekiyorsa VAO'mu yeniden kurmam gerekiyor mu?
- 28. Django - Şablon ekran modeli verbose_names & ben birkaç model görüntülemeniz gerekiyorsa
- 29. Varlık Çerçevesi Ne Kadar Güvenli?
- 30. Varlık Çerçevesi
Seni doğru anladıysam, CRUD işlemi için iş sınıfında sarıcı/Geçiş yöntemlerine gerek olmadığını söylemek istersiniz. UI'de depo yöntemleri kullanmak tamamdır. Bana göre, 'iş kurallarının doğrulanması' depoda iyi bir fikir değildir. Bu, iş katmanına sahip olma amacını ortadan kaldıracaktır. – Pragmatic
2 ayrı sorun var: başvuru verileri ve doğrulama. Bunları ayrı yorumlarda ele alacağım. Re: Referans Veriler Diyelim ki StateOrProvince adında bir tablom var. Bu veriler için gerekli alanlar ve teklikten başka iş kurallarına sahip olmamam olabilir. Bu kurallar veritabanı tarafından zorlanabilir. Bu veri için CRUD dışında bir işlem bulunmamaktadır. Bu tür veriler için bir Etki Alanı Modeli geliştirmek aşırı olabilir. Bu durumda genellikle görüşümü doğrudan ORM'ime bağlarım. –
Re: Doğrulama Doğrulama mantığınızı etki alanı katmanınıza yazarsınız. Etki alanı katmanınızda tanımlanan kalıcılık katmanınızı temsil eden, alan adı nesnelerinizin kullanabileceği soyutlamalara sahip olmalısınız. Kalıcı katmanınızın uygulanmasında alan nesnesinin doğrulama mantığını "çağırmamanız" için bir neden yoktur. Aslında, OA şemasında dikkatlice bakarsanız, sürekliliğin uygulanması şemanın en dış basamaklarından biridir. Bu, kalıcılık katmanınızdaki Etki Alanı'nın tam bağlamını aldığınız anlamına gelir. Onu da kullanabilirsin. –