DDD için bazı iyi örnekleri nerede bulabilirim? [kapalı]


390

Etki Alanına Dayalı Tasarım'ı öğreniyorum, ancak bazı iyi örneklerin görülebileceğini düşündüğümde kafa karıştırıcı bazı pratik sorunlar var.

Herkes temel DDD kavramları modelleme iyi bir iş yapmak bazı iyi çalışma kodu örnekleri biliyor mu?

Özellikle ilgileniyorum

  • Açıklayıcı bir Alan Modeli
  • Depoları
  • Etki Alanı / Uygulama Hizmetlerinin Kullanımı
  • Değer Nesneleri
  • Agrega Kökleri

42
IHMO bu tür tartışmalar çok yardımcı olacaktır. Bazen basit bir sorudan daha fazlası. Örneğin bunu bir soruda değiştirebiliriz: "DDD için bazı iyi örnekleri nerede bulabilirim?" ve Soru-Cevap biçimiyle çalışır.
Gizzmo

1
Vaughn Vernon'un kitabındaki "çevik yönetim projesi" örneğini çok öğretici buldum. numaralandırdığınız yapı taşlarının pratik uygulamasını ve farklı sınırlı bağlamlarla uğraşmayı gösterir, kodu burada bulabilirsiniz: github.com/VaughnVernon/IDDD_Samples
Mehdi.

1
Bu örneği tavsiye ederim: github.com/vkhorikov/DddInAction
Vladimir


Yanıtlar:


199

DDD örnekleriyle ilgili zorluk, genellikle alana özgü olmaları ve sonuçta ortaya çıkan sistemin teknik uygulamasının, gerçekte DDD'nin merkezinde yer alan etki alanının modellenmesinde yapılan tasarım kararlarını ve geçişlerini her zaman göstermemesi. DDD süreç hakkında koddan çok daha fazlasıdır. (bazılarının dediği gibi, en iyi DDD örneği kitabın kendisidir!)

Bununla birlikte, iyi yorumlanmış bir örnek uygulama en azından bu kararların bazılarını açığa çıkarmalı ve alan modelinizi, bunu uygulamak için kullanılan teknik desenlerle eşleştirme açısından size bir yön vermelidir.

Hangi dili kullandığınızı belirtmediniz, ancak size birkaç farklı dilde birkaç tane vereceğim:

DDDSample - Eric Evans'ın kitabında bahsettiği örnekleri yansıtan bir Java örneği . Bu iyi yorumlanmıştır ve ayrı sınırlı bağlamlarda (yani sunum katmanı) çeşitli problemleri çözmek için bir dizi farklı yöntem göstermektedir. Aktif olarak çalışılıyor, bu yüzden güncellemeler için düzenli olarak kontrol edin.

dddps - Tim McCarthy'nin kitabı için örnek C # uygulaması, C # ile .NET Domain-Driven Design

S # arp Mimarlık - pragmatik bir C # örneği, "gerçek" bir DDD yaklaşımı değil, belki de gerçek bir etki alanı probleminin olmaması nedeniyle, ama yine de güzel ve temiz bir yaklaşım.

Tüm bu örnek uygulamalarda, düzenli olarak güncellenmesi gerektiği için düşünme ve teknoloji kalıpları hakkında gerçekten bir fikir edinmek için SVN / en son gövde sürümlerine göz atmak en iyisidir.


2
Orjinal soru yorumunda @Mehdi'den bahsedildiği gibi Vaughn Vernon'dan harika bir örnek eklemelisiniz. Şimdiye kadar gördüğüm DDD modelinin en iyi uygulaması: github.com/VaughnVernon/IDDD_Samples
Sylvain Lecoy

Bunun eski olduğunu biliyorum, ancak gelen örnek dddpstamamen anemik ve aslında OOP'ye karşı görünüyor. Etki alanı nesnelerinin hiçbirinin davranışı yoktur ve hizmet katmanı sınıfları temel olarak depoların 1: 1 temsilcisidir. Bunun DDD'nin "iyi" bir örneği olarak görülüp görülmeyeceğinden emin değilim? Hâlâ kendimi öğreniyorum, ancak S # arp Mimarisi'ndeki örnekler, hem devleti hem de davranışı içerdiği için DDD'yi öğrenenler için daha iyi bir örnek gibi görünüyor, ki bu iyi bir OOP tasarımı.
David Anderson

Şimdi Etki Alanına Dayalı Tasarım (IDDD) uygulayan Vaugnh Vernon'un mükemmel bir örneğini eklemelisiniz: github.com/VaughnVernon/IDDD_Samples
Sylvain Lecoy



11

Check out Proje Silk . Sadece DDD'yi değil, diğer kesici kenar kalıplarını da gösterir. Bu, herhangi bir Web Geliştiricisi için mükemmel bir kaynaktır. Projeye tam bir genel bakış MSDN'de bulunabilir .


Kaynak kodu artık mevcut değil :(
Dherik

7

Bu, etki alanına dayalı tasarıma dayanan iyi bir örnektir ve ayrı bir etki alanı katmanına sahip olmanın neden önemli olduğunu açıklar.
Microsoft Türkiye - DDD N Katman Mimarisi


1
Bunu oylayamıyorum ama bunun neden iyi bir örnek olmadığını düşündüğünü görmek için Ayende'nin bloguna gidiyorum. ayende.com/blog/19457/…
Chris

1
sağladığınız bağlantı çalışmıyor, hata mesajı: 'Project' microsoftnlayerapp 'bulunamadı'
Omar AMEZOUG


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.