DDD

2012-09-23 23 views
7

'daki paketleme depoları ve arabirimleri Paketleme üzerinde çalıştığım uygulamalarda, Hizmetler + Depoları + depoları ve hizmetleri için arabirimleri içeren bir Hizmet Katmanı'na sahip olma eğilimindeyiz, hepsi aynı derlemede yaşıyorlar. Model farklı bir mecrada yaşayacak. Bu büyük bir projede alan modeline uymayan her şey gibi görünüyor.DDD

DDD ilkelerini ve desenlerini takip eden bir uygulamada, kullandıkları depoları ve arabirimleri nasıl paketlersiniz? DDD uygulamasının farklı mantıksal kısımlarını (veya bu konuda genel olarak paketleme) ambalajlamak için en iyi uygulamalar nelerdir? Her mantıksal bölüm kendi meclisinde mi yaşıyor? Fark eder mi?

cevap

5

Soğan Mimarisine bakarım. Temel olarak tüm etki alanı modeli ve etki alanı hizmetleri için arabirimler çekirdek kabul edilir. Katmanlar, yalnızca üstlerindeki katmanlara, çekirdeğe daha yakın bağlıdır. Gerçek uygulamaları altyapı tarafından ele alınmaktadır.

Sonuçta sizin arayüzleri başvurunuzu tanımlar nelerdir burada http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

bakınız. Bunun nasıl uygulanacağının mantığı dışsaldır. Bu nedenle, Domain Modelleri ve etki alanı hizmetleri, bir ön uç (örneğin MVC vb.) Ve daha sonra veri sağlamak için NHibernate gibi şeyleri uygulayan bir altyapı düzeneği hazırlamanızı beklerim.

Uyguladığınız çeşitli örnekleri görebilirsiniz. bağlantılı makalenin çeşitli kısımlarındaki mimari. En basit bir Ana yararı da en sık değişecek ölçüde altyapı endişeleri olmasıdır burada https://stackoverflow.com/questions/tagged/onion-architecture

bununla ilgili sorular görebilirsiniz burada https://bitbucket.org/jeffreypalermo/onion-architecture/get/1df2608bc383.zip

olduğunu. Yeni veri katmanı teknolojileri, yeni dosya depolama, vb. Ayrıca temel alanınız, yalnızca sözleşme (arayüzler) tarafından neyi gerektirdiğini belirleyen hiçbir şeyi uygulamadığı için makul düzeyde kararlı olmalıdır. Uygulama endişelerini tek bir konuma koyarak, montajlarınızda gerekli olacak değişiklik miktarını en aza indirebilirsiniz.

+0

Soğan mimarisine büyük bir referans, hiç farkında olmadığım. Teşekkürler. – kabaros

0

Katmanlarınızı tasarlamak için yönergeleri DDD book'da bulabilirsiniz. Temelde var:

  • Alan
  • Altyapı
  • Uygulama
  • UI Hizmetleri 3 çeşit gelir

: Uygulama katmanı hizmeti, Altyapı katmanı hizmeti ve Alan katmanı hizmeti, bağlı hizmet ne yapar. Depolara gelince, sözleşmeleri (ara yüzler) genellikle Alanda yer alırken, somut uygulamaları Altyapı katmanındadır.

Montajlarla ilgili olarak, katman başına en az bir tane öneriyorum. Meclisler ve dll'ler, yeniden kullanılabilirlik, endişelerin ayrılması ve ayrıştırma ile ilgilidir - bu dll'yi seçebilir ve başka bir uygulamada yeniden kullanmak için kullanabilir miyim? Diğer uygulamalara gereksiz karmaşıklık getirecek ilgisiz bir dizi özellik boyunca sürüklemeden yapabileceğim mi? Bağımlılık enjeksiyon modülümde sadece bir satır satırı değiştirerek dll'imi başka bir yerine kolayca değiştirebilir miyim? ve bunun gibi.