Tümü Altyapı katmanı içindeki tüm Etki Alanı Katmanlarınızın (Modüller, Modeller, Varlıklar, Etki Alanı Hizmetleri vb.) Tüm arabirimlerini gruplamak mantıklı mı? Aksi takdirde, bunların hepsini paylaşılan bir kitaplığa ayıran bir "paylaşımlı" proje/bileşen oluşturmak mantıklı mıdır? Sonuçta, "Altyapı Katmanı" tanımı "Etki Alanı, Uygulama ve Kullanıcı Arabirimi katmanları için paylaşılan kütüphaneler" içerir.DDD: Etki Alanı Arabirimleri, Altyapı nerede tutulur?
Kod tabanımı DDD katmanları etrafında tasarlamayı düşünüyorum: UI, Uygulama, Etki Alanı, Altyapı. Bu saygılı 4 proje yaratacaktır. Benim amacım, Etki Alanı Katmanı'ndan Altyapı Katmanı'nı referans göstermektir. Ancak, Domain Layer projesindeki arabirimleri tanımlarsanız, IPost için söyleyin, IPostRepository.Save (IPost post) yöntemini tanımlarken, Altyapı projesinden Etki Alanı Katmanı projesine başvurmanız gerektiğinde, bir circulur referansı olacaktır. . Bu nedenle, "Paylaşılan kitaplıktaki tüm arabirimleri tanımlayın" fikri.
Belki de depoların bir nesnenin kaydedilmesini beklememesi gerekir (IPostRepository.Save (IPost yayını)), ancak nesnenin paramslarını beklemeniz gerekir (bu, Save() olsada uzun bir param kümesi olabilir). Bu bir nesne aşırı karmaşık oluyor zaman gösteren bir ideal durum olabilir ve ek değer Nesneler bunun için göz önünde bulundurulmalıdır.
Düşünceler?
Mükemmel Geobarteam. Bu bana "duh" bir an verdi. Evet, Domain'deki arabirimleri tanımlayın, depolar ayrı toplantılarda uygulanmalıdır (MySqlProviver, MsSqlProvider, XmlProvider, vb) Ve App katmanında onu bağlamak için kullanılan IOC Konteyner (Castle Windsor I love) bir tür. Mükemmel. – eduncan911
ASP.NET MVC durumunda, aslında Denetleyici (UI) içine depo enjekte etmek kolaydır katmanları) Kale Kafeteresi'nden Steven Sanderson, ASP.NET MVC Framework Önizleme'de buna iyi bir örnek oluşturdu. -Driven Design Hızla kitap UI, App ve Domain'in Infra'yı kullanabileceğini söyledim. – eduncan911
Bu konuda sahip olduğum tek sorun, kitabımın Infrastructure'ın hiçbir zaman hiçbir şeye gönderme yapmadığını söyledi. UI-> Uygulama, Etki Alanı ve Infra. App-> Domain ve Infra. Ve, Domain-> Infra. Biliyorum biliyorum, her şeyden önce kurallar olduğunu varsayalım. – eduncan911