Tôi tìm thấy một số ví dụ tốt cho DDD ở đâu? [đóng cửa]


390

Tôi đang tìm hiểu về Thiết kế hướng miền, tuy nhiên có một số vấn đề thực tế khiến tôi bối rối rằng tôi nghĩ rằng việc nhìn thấy một số mẫu tốt có thể làm sáng tỏ.

Có ai biết một số mẫu mã làm việc tốt làm tốt công việc mô hình hóa các khái niệm DDD cơ bản không?

Đặc biệt quan tâm đến

  • Một mô hình miền minh họa
  • Kho lưu trữ
  • Sử dụng dịch vụ tên miền / ứng dụng
  • Đối tượng giá trị
  • Rễ tổng hợp

42
IHMO những cuộc tranh luận như vậy sẽ giúp ích rất nhiều. Đôi khi nhiều hơn một câu hỏi đơn giản. Ví dụ, chúng ta có thể thay đổi điều này trong một câu hỏi: "Tôi tìm thấy một số ví dụ tốt cho DDD ở đâu?" và nó hoạt động với định dạng Q & A.
Gizzmo

1
tôi đã tìm thấy ví dụ "dự án quản lý nhanh" từ cuốn sách của Vaughn Vernon. nó minh họa việc triển khai thực tế các khối xây dựng mà bạn liệt kê, cũng như xử lý các bối cảnh bị ràng buộc khác nhau, bạn có thể tìm thấy mã ở đây: github.com/VaughnVernon/IDDD_Samples
Mehdi.

1
Tôi muốn giới thiệu ví dụ này: github.com/vkhorikov/DddInAction
Vladimir

1
Bạn có thể có một cái nhìn ở đây: dzone.com/stiving/assets/ Kẻ
Chaklader Asfak Arefe

Câu trả lời:


199

Khó khăn với các mẫu DDD là chúng thường rất đặc trưng cho miền và việc triển khai kỹ thuật của hệ thống kết quả không phải lúc nào cũng hiển thị các quyết định thiết kế và chuyển đổi được thực hiện trong mô hình hóa miền, vốn thực sự là cốt lõi của DDD. DDD là nhiều về quá trình hơn là mã. (như một số người nói, mẫu DDD tốt nhất là chính cuốn sách!)

Điều đó nói rằng, một ứng dụng mẫu được nhận xét tốt ít nhất sẽ tiết lộ một số quyết định này và cung cấp cho bạn một số hướng về việc kết hợp mô hình miền của bạn với các mẫu kỹ thuật được sử dụng để triển khai nó.

Bạn chưa chỉ định ngôn ngữ nào bạn đang sử dụng, nhưng tôi sẽ cung cấp cho bạn một vài ngôn ngữ khác nhau:

DDDSample - một mẫu Java phản ánh các ví dụ mà Eric Evans nói trong cuốn sách của mình . Điều này được nhận xét tốt và cho thấy một số phương pháp khác nhau để giải quyết các vấn đề khác nhau với các bối cảnh giới hạn riêng biệt (tức là lớp trình bày). Nó đang được tích cực làm việc, vì vậy hãy kiểm tra nó thường xuyên để cập nhật.

dddps - Ứng dụng C # mẫu của Tim McCarth dành cho cuốn sách của mình, .NET Domain-Driven Design with C #

S # arp Architecture - một ví dụ C # thực dụng, không phải là "thuần túy" một cách tiếp cận DDD có lẽ do thiếu một vấn đề miền thực sự, nhưng vẫn là một cách tiếp cận sạch đẹp.

Với tất cả các ứng dụng mẫu này, có lẽ tốt nhất nên kiểm tra các phiên bản trung kế mới nhất từ ​​SVN / bất cứ điều gì để thực sự có ý tưởng về các kiểu suy nghĩ và công nghệ vì chúng nên được cập nhật thường xuyên.


2
Như đã đề cập @Mehdi trong bình luận câu hỏi ban đầu, bạn nên thêm ví dụ tuyệt vời từ Vaughn Vernon. Đây là cách triển khai tốt nhất của mẫu DDD cho đến nay tôi từng thấy: github.com/VaughnVernon/IDDD_Samples
Sylvain Lecoy

Tôi biết điều này đã cũ, nhưng ví dụ từ dddpsdường như hoàn toàn thiếu máu và thực sự chống lại OOP. Không có đối tượng miền nào có bất kỳ hành vi nào và các lớp lớp dịch vụ về cơ bản là phân quyền 1: 1 cho các kho lưu trữ. Tôi không chắc liệu đây có phải là một ví dụ "tốt" về DDD không? Tôi vẫn đang tự học, nhưng các mẫu trong S # arp Architecture dường như là một ví dụ tốt hơn cho những người học DDD vì nó bao gồm cả trạng thái và hành vi, đó là thiết kế OOP tốt.
David Anderson

Bây giờ bạn nên thêm mẫu tuyệt vời của Vaugnh Vernon, tác giả của Thiết kế triển khai tên miền (IDDĐ): github.com/VaughnVernon/IDDD_Samples
Sylvain Lecoy

23

Không phải các dự án nguồn mỗi lần nói nhưng tôi tình cờ thấy Parley.com có ​​một vài video hay bao gồm DDD khá tốt (yêu cầu flash):

Tôi thấy những điều này hữu ích hơn nhiều so với các ví dụ DDD gần như không tồn tại hiện đang có sẵn.


liên kết không hoạt động
sidgate


11

Kiểm tra dự án Silk . Nó không chỉ thể hiện DDD mà các mẫu tiên tiến khác. Đây là một tài nguyên tuyệt vời cho bất kỳ Nhà phát triển web. Tổng quan đầy đủ về dự án có thể được tìm thấy trên MSDN .


Mã nguồn không còn khả dụng nữa :(
Dherik

7

Đây là một ví dụ tốt dựa trên thiết kế hướng tên miền và giải thích tại sao điều quan trọng là phải có lớp miền riêng biệt.
Tây Ban Nha Microsoft - Kiến trúc lớp DDD N


1
Tôi không thể bỏ phiếu này nhưng vào blog của Ayende để xem tại sao anh ta nghĩ rằng đây không phải là một ví dụ hay. ayende.com/blog/19457/ trộm
Chris

1
liên kết bạn cung cấp không hoạt động, lỗi thông báo: 'Dự án' microsoftnlayerapp 'không tìm thấy'
Omar AMEZOUG


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.