มันสมเหตุสมผลแค่ไหน?
คำตอบสั้น ๆ : มันไม่ได้
คำตอบที่ยาวกว่า: รูปแบบเฮฟวี่เวทสำหรับการพัฒนาแบบจำลองโดเมนไม่ได้ใช้กับส่วนต่าง ๆ ของโซลูชันของคุณที่เป็นเพียงฐานข้อมูล
อุดี Dahan มีข้อสังเกตที่น่าสนใจซึ่งอาจช่วยชี้แจงเรื่องนี้
Dahan คิดว่าบริการต้องมีทั้งฟังก์ชั่นและข้อมูลบางอย่าง หากไม่มีข้อมูลแสดงว่าเป็นเพียงฟังก์ชัน หากสิ่งที่มันทำคือการดำเนินการ CRUD กับข้อมูลแล้วมันเป็นฐานข้อมูล
จุดของรูปแบบโดเมนหลังจากทั้งหมดคือเพื่อให้แน่ใจว่าการอัปเดตทั้งหมดของข้อมูลจะรักษาค่าคงที่ทางธุรกิจปัจจุบัน หรือเพื่อให้เป็นอีกแบบโดเมนมีหน้าที่รับผิดชอบในการตรวจสอบให้แน่ใจว่าฐานข้อมูลที่ทำหน้าที่เป็นระบบบันทึกถูกต้อง
เมื่อคุณจัดการกับระบบ CRUD คุณมักจะไม่ใช่ระบบบันทึกข้อมูล โลกแห่งความจริงเป็นหนังสือของการบันทึกและฐานข้อมูลของคุณเป็นเพียงตัวแทนแคชของโลกแห่งความจริง
ตัวอย่างเช่นข้อมูลส่วนใหญ่ที่ปรากฏในโปรไฟล์ผู้ใช้เช่นที่อยู่อีเมลหรือหมายเลขประจำตัวที่ออกโดยภาครัฐมีแหล่งที่มาของความจริงที่อาศัยอยู่นอกธุรกิจของคุณ - เป็นผู้ดูแลระบบอีเมลของบุคคลอื่นที่กำหนดและเพิกถอนที่อยู่อีเมลไม่ใช่ แอปของคุณ เป็นรัฐบาลที่กำหนด SSN ไม่ใช่แอปของคุณ
ดังนั้นโดยปกติคุณจะไม่ทำการตรวจสอบความถูกต้องของโดเมนใด ๆกับข้อมูลที่มาถึงคุณจากโลกภายนอก คุณอาจจะมีการตรวจสอบในสถานที่เพื่อให้มั่นใจว่าข้อมูลที่จะเกิดขึ้นได้ดีและถูกสุขอนามัย ; แต่ไม่ใช่ข้อมูลของคุณ - โมเดลโดเมนของคุณไม่ได้รับการยับยั้ง
ในวิธี DDD โดยใช้เลเยอร์ดูเหมือนว่าการดำเนินการ CRUD จะผ่านชั้นโดเมน แต่อย่างน้อยในกรณีของเราสิ่งนี้ดูเหมือนจะไม่สมเหตุสมผล
ที่เหมาะสมสำหรับกรณีที่ฐานข้อมูลเป็นหนังสือของการบันทึก
Ouarzy วางวิธีนี้
การทำงานกับรหัสดั้งเดิมจำนวนมากฉันสังเกตข้อผิดพลาดทั่วไปเพื่อระบุสิ่งที่อยู่ภายในโดเมนและสิ่งที่อยู่นอก
แอปพลิเคชันสามารถพิจารณา CRUD เฉพาะในกรณีที่ไม่มีตรรกะทางธุรกิจรอบตัวแบบข้อมูล แม้ในกรณีนี้ (หายาก) แบบจำลองข้อมูลของคุณไม่ใช่แบบจำลองโดเมนของคุณ นั่นหมายความว่าเมื่อไม่มีการ logics ของธุรกิจเราไม่ต้องการสิ่งที่เป็นนามธรรมในการจัดการและทำให้เราไม่มีโมเดลโดเมน
เราใช้โมเดลโดเมนเพื่อจัดการข้อมูลที่อยู่ภายในโดเมน ข้อมูลจากภายนอกโดเมนมีการจัดการที่อื่นแล้ว - เราเพิ่งแคชสำเนา
Greg Young ใช้ระบบคลังสินค้าเป็นตัวอย่างหลักของโซลูชันที่หนังสือบันทึกอยู่ที่อื่น (เช่น: พื้นคลังสินค้า) การใช้งานที่เขาอธิบายนั้นคล้ายกับของคุณมาก - ฐานข้อมูลเชิงตรรกะหนึ่งฐานในการจับข้อความที่ได้รับจากคลังสินค้าจากนั้นฐานข้อมูลเชิงตรรกะแยกต่างหากจะแคชข้อสรุปที่ดึงมาจากการวิเคราะห์ข้อความเหล่านั้น
ดังนั้นเราอาจมีบริบทที่ถูก จำกัด สองจุดที่นี่? แต่ละแบบที่แตกต่างกันสำหรับinvestment account
อาจจะ. ฉันลังเลที่จะติดแท็กมันเป็นบริบทที่มีขอบเขตเพราะมันไม่ชัดเจนว่ากระเป๋าอื่น ๆ มาพร้อมกับกระเป๋าใบนั้น อาจเป็นได้ว่าคุณมีสองบริบทมันอาจเป็นบริบทหนึ่งที่มีความแตกต่างเล็กน้อยในภาษาที่แพร่หลายที่คุณยังไม่ได้เลือก
การทดสอบสารสีน้ำเงินที่เป็นไปได้: คุณมีผู้เชี่ยวชาญด้านโดเมนกี่คนที่ต้องการผู้เชี่ยวชาญด้านโดเมนสองคนเพื่อครอบคลุมสเปกตรัมนี้หรือเพียงแค่คนที่พูดคุยเกี่ยวกับองค์ประกอบในรูปแบบต่างๆ โดยพื้นฐานแล้วคุณอาจเดาได้ว่าคุณมีบริบทที่ จำกัด ขอบเขตเท่าไรโดยปฏิบัติตามกฎหมายของคอนเวย์ย้อนหลัง
หากคุณพิจารณาบริบทที่มีขอบเขตเพื่อให้สอดคล้องกับบริการอาจเป็นเรื่องง่ายกว่า: คุณควรจะสามารถปรับใช้ฟังก์ชันการทำงานทั้งสองนี้ได้อย่างอิสระหรือไม่ ใช่แนะนำบริบทสองขอบเขต แต่ถ้าพวกเขาจำเป็นต้องได้รับการซิงโครไนซ์ก็อาจเป็นเพียงหนึ่งเดียว