ฉันจะหาตัวอย่างที่ดีสำหรับ DDD ได้จากที่ใด [ปิด]


390

ฉันเรียนรู้เกี่ยวกับการออกแบบการขับเคลื่อนด้วยโดเมน แต่มีปัญหาในทางปฏิบัติบางอย่างที่ทำให้ฉันสับสนซึ่งฉันคิดว่าการเห็นตัวอย่างที่ดีบางอย่างอาจชัดเจนขึ้น

มีใครรู้บ้างเกี่ยวกับตัวอย่างโค้ดที่ใช้งานได้ดีซึ่งทำหน้าที่ได้ดีในการสร้างแบบจำลองแนวคิด DDD พื้นฐานหรือไม่?

สนใจเป็นพิเศษค่ะ

  • รูปแบบโดเมนตัวอย่าง
  • คลัง
  • การใช้บริการ Domain / Application
  • วัตถุค่า
  • รากรวม

42
การอภิปรายดังกล่าวของ IHMO จะช่วยได้มาก บางครั้งเป็นมากกว่าคำถามง่ายๆ เช่นเราสามารถเปลี่ยนได้ในคำถาม: "ฉันจะหาตัวอย่างที่ดีสำหรับ DDD ได้ที่ไหน" และใช้ได้กับรูปแบบคำถาม & คำตอบ
Gizzmo

1
ฉันพบตัวอย่าง "โครงการการจัดการที่คล่องตัว" จากหนังสือของ Vaughn Vernon ที่ให้คำแนะนำอย่างมาก มันแสดงให้เห็นถึงการใช้งานจริงของ Building Block ที่คุณระบุรวมถึงการจัดการกับบริบทที่แตกต่างกันคุณสามารถค้นหารหัสได้ที่นี่: github.com/VaughnVernon/IDDD_Samples
Mehdi

1
ฉันอยากจะแนะนำตัวอย่างนี้: github.com/vkhorikov/DddInAction
Vladimir

1
คุณสามารถดูได้ที่นี่: dzone.com/storage/assets/ …
Chaklader Asfak Arefe

มีหนึ่งที่นี่: github.com/appie2go/steal-this-code
Clark Kent

คำตอบ:


199

ปัญหาของตัวอย่าง DDD คือพวกเขามักจะเจาะจงโดเมนมากและการใช้งานทางเทคนิคของระบบผลลัพธ์ไม่ได้แสดงให้เห็นถึงการตัดสินใจออกแบบและการเปลี่ยนแปลงที่เกิดขึ้นในการสร้างแบบจำลองโดเมนซึ่งเป็นแกนหลักของ DDD DDD เป็นอะไรที่มากกว่ากระบวนการที่เป็นรหัส (อย่างที่บางคนบอกว่าตัวอย่าง DDD ที่ดีที่สุดคือหนังสือนั่นเอง!)

อย่างน้อยแอปตัวอย่างที่มีความคิดเห็นดีควรเปิดเผยการตัดสินใจบางอย่างเหล่านี้และให้ทิศทางในแง่ของการจับคู่แบบจำลองโดเมนของคุณกับรูปแบบทางเทคนิคที่ใช้ในการปรับใช้

คุณยังไม่ได้ระบุภาษาที่คุณใช้ แต่ฉันจะให้คุณสองสามภาษาในไม่กี่ภาษา:

DDDSample - ตัวอย่าง Java ที่สะท้อนให้เห็นถึงตัวอย่างของเอริคอีแวนส์พูดถึงเกี่ยวกับในหนังสือของเขา นี่เป็นความคิดเห็นที่ดีและแสดงวิธีการที่แตกต่างกันจำนวนมากในการแก้ปัญหาต่าง ๆ ด้วยบริบทที่มีขอบเขตแยกต่างหาก (เช่นเลเยอร์การนำเสนอ) มันกำลังทำงานอย่างต่อเนื่องดังนั้นโปรดตรวจสอบเป็นประจำเพื่อรับการปรับปรุง

dddps - แอพตัวอย่าง C # ของ Tim McCarthy สำหรับหนังสือของเขา,. การออกแบบขับเคลื่อนด้วยโดเมน. NET ด้วย C #

S # arp Architecture - ตัวอย่างของ C # ในทางปฏิบัติไม่เป็นแบบ "บริสุทธิ์" วิธี DDD อาจเนื่องมาจากการขาดปัญหาโดเมนจริง แต่ก็ยังคงเป็นวิธีที่สะอาดตา

ด้วยแอปตัวอย่างทั้งหมดเหล่านี้อาจเป็นวิธีที่ดีที่สุดในการตรวจสอบเวอร์ชั่นของลำตัวล่าสุดจาก SVN / สิ่งที่จะได้รับแนวคิดและรูปแบบเทคโนโลยีที่ควรปรับปรุงเป็นประจำ


2
ตามที่กล่าวถึง @Mehdi ในความคิดเห็นของคำถามต้นฉบับคุณควรเพิ่มตัวอย่างที่ยอดเยี่ยมจาก Vaughn Vernon มันเป็นการใช้งานที่ดีที่สุดของรูปแบบ DDD จนถึงตอนนี้ที่ฉันเคยเห็น: github.com/VaughnVernon/IDDD_Samples
Sylvain Lecoy

ฉันรู้ว่านี่เก่า แต่ตัวอย่างจากdddpsดูเหมือนจะเป็นโลหิตจางและต่อต้าน OOP จริงๆ ไม่มีโดเมนวัตถุที่มีพฤติกรรมใด ๆ และชั้นบริการชั้นนั้นเป็นตัวแทน 1: 1 ไปยังที่เก็บ ฉันไม่แน่ใจว่านี่ควรเป็นตัวอย่างที่ดีของ DDD หรือไม่ ฉันยังคงเรียนรู้ด้วยตัวเอง แต่ตัวอย่างในสถาปัตยกรรม S # arp ดูเหมือนจะเป็นตัวอย่างที่ดีกว่าสำหรับการเรียนรู้ DDD เพราะมันครอบคลุมทั้งสภาวะและพฤติกรรมซึ่งเป็นการออกแบบ OOP ที่ดี
David Anderson

ตอนนี้คุณควรเพิ่มตัวอย่างที่ยอดเยี่ยมของ Vaugnh Vernon ผู้แต่ง Implementing Domain Driven Design (IDDD): github.com/VaughnVernon/IDDD_Samples
Sylvain Lecoy

23

ไม่ใช่โครงการที่มาต่อพูด แต่ฉันสะดุดกับ Parleys.com ซึ่งมีวิดีโอที่ดีไม่กี่รายการที่ครอบคลุม DDD ค่อนข้างดี (ต้องใช้แฟลช):

ฉันพบว่าสิ่งเหล่านี้มีประโยชน์มากกว่าตัวอย่าง DDD ที่ไม่มีอยู่เกือบทั้งหมดที่มีอยู่ในปัจจุบัน


ลิงก์ไม่ทำงาน
sidgate


11

ตรวจสอบโครงการผ้าไหม มันไม่เพียงแสดงให้เห็นถึง DDD แต่รูปแบบขอบคมตัดอื่น ๆ นี่คือทรัพยากรที่ยอดเยี่ยมสำหรับนักพัฒนาเว็บใด ๆ ภาพรวมทั้งหมดของโครงการที่สามารถพบได้บนMSDN


ไม่มีซอร์สโค้ดอีกต่อไป :(
Dherik

7

นี่เป็นตัวอย่างที่ดีจากการออกแบบโดยใช้โดเมนและอธิบายว่าทำไมจึงมีความสำคัญที่จะต้องมีเลเยอร์โดเมนแยกต่างหาก
Microsoft สเปน - DDD N Layer Architecture


1
ฉันลงคะแนนนี้ไม่ได้ แต่ไปที่บล็อกของ Ayende เพื่อดูว่าทำไมเขาถึงคิดว่านี่ไม่ใช่ตัวอย่างที่ดี ayende.com/blog/19457/…
Chris

1
ลิงก์ที่คุณระบุไม่ทำงานข้อผิดพลาดข้อความ: 'โครงการ' microsoftnlayerapp 'ไม่พบ'
Omar AMEZOUG


5

แคมป์รหัสเซิร์ฟเวอร์ , เจฟฟรีย์ปาแลร์โมโค้ดตัวอย่างสำหรับหนังสือASP.NET MVC ในการดำเนินการ ในขณะที่หนังสือมุ่งเน้นไปที่เลเยอร์การนำเสนอแอปพลิเคชันจะถูกจำลองโดยใช้ DDD

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.