Sự khác biệt và tương đồng giữa Ngôn ngữ cụ thể tên miền (DSL) và Thiết kế điều khiển miền (DDD) là gì?Ngôn ngữ cụ thể của miền (DSL) và Thiết kế điều khiển miền (DDD)
Trả lời
Thiết bị điều khiển tên miền (DDD) là một cách suy nghĩ và giao tiếp về các vấn đề và giải pháp của nó.
Ngôn ngữ cụ thể tên miền (DSL) là cách viết mã.
Chúng giống nhau vì cả hai đều bắt đầu bằng từ "tên miền". Đó là nó, tôi đoán vậy. :-)
Tôi cho rằng chúng bằng cách nào đó có liên quan và không chỉ bằng từ "tên miền". Một khi bạn có một thiết kế tốt (tên miền), nó chắc chắn sẽ giúp đỡ trong việc tạo ra một DSL vững chắc.
"DDD không yêu cầu cụ thể việc sử dụng DSL, mặc dù nó có thể được sử dụng để giúp xác định DSL." - Wikipedia
Wikipedia có một định nghĩa khá rõ ràng cho DSL:
Thuật ngữ ngôn ngữ miền cụ (DSL) đã trở nên phổ biến trong những năm gần đây trong việc phát triển phần mềm để chỉ ra một ngôn ngữ lập trình hoặc đặc điểm kỹ thuật ngôn ngữ dành riêng cho một miền có vấn đề cụ thể là , sự cố cụ thể về kỹ thuật và/hoặc kỹ thuật giải pháp cụ thể.
Điều này có thể được thực hiện như một tập hợp các lớp theo một số mẫu nhất quán, một số mẫu C++ ưa thích hoặc trình biên dịch/phân tích cú pháp để nhập văn bản tự do để thực hiện những gì bạn muốn.
Tôi nghĩ rằng chúng bằng cách nào đó liên quan (như Christophe đặt nó), nhưng hai khía cạnh hoàn toàn khác nhau. Tôi thậm chí sẽ không bác bỏ tuyên bố của jop.
Để có thông tin bằng văn bản rất tốt về DSL tham khảo Martin Fowler's set of pages on DSLs (đang tiến hành), bạn có thể bắt đầu với example hoặc definition. Một đọc tốt là QandA của mình.
DDD dựa trên mô hình miền và thường có ít nhất một mức trừu tượng cao hơn DSL. Cả hai đều có thể tồn tại mà không có người khác, và như Christophe đã nói, cả hai đều có thể được sử dụng trong cùng một dự án.
Thiết kế theo hướng miền nhấn mạnh vai trò của miền vấn đề khi bạn tạo từ vựng cơ bản, khái niệm và mô hình đối tượng cho hệ thống đang được thiết kế.
Ngôn ngữ cụ thể theo miền là ký hiệu để chỉ định hoặc triển khai các phần cụ thể của hệ thống, được định hướng theo nhu cầu của người hành nghề trong miền đó (tức là giảm thiểu khía cạnh "lập trình viên" của hầu hết các ngôn ngữ lập trình hoặc đặc tả).
Sự khác biệt, một là một cách tiếp cận để xây dựng hệ thống sử dụng ngôn ngữ ngôn ngữ cụ thể (DSL) thay vì ngôn ngữ mục đích chung và phương pháp tiếp cận kiến trúc (DDD) để thiết kế và xây dựng hệ thống.
Sự giống nhau là cả hai đều tập trung vào tên miền cụ thể.
Một phần tử của DDD có thể được xem là khả năng phát triển ngôn ngữ phổ biến để nói chuyện với các bên liên quan về miền. Đối với các tập hợp con của những UL đó là cả hai rõ ràng và có khả năng thực thi, bạn có thể chọn để thực hiện chúng bằng cách sử dụng một DSL nội bộ hoặc bên ngoài.
Dưới đây là một đoạn video của tôi thảo luận này trên trang web DomainDriven:
http://domaindrivendesign.org/library/bell_gitlevich_2009
Best Wishes, Peter
Tôi đoán cả hai đều có là trọng tâm chính của nó giảm tiếng ồn trong lập trình, DDD hoạt động về nhiễu ngữ nghĩa và DSL trong tiếng ồn cú pháp.
Đây có thể giúp hiểu quan điểm của tôi:
http://fragmental.tw/2009/03/12/expessive-design-slides/
http://fragmental.tw/2008/04/20/domain-specific-languages-and-video-games/
- 1. DDD: Thiết kế điều khiển miền. Tên miền có ý nghĩa gì trong DDD?
- 2. Tài nguyên Ngôn ngữ Cụ thể của Miền
- 3. CouchDB/NoSQL và thiết kế điều khiển miền?
- 4. Cạm bẫy miền-thiết kế (DDD)
- 5. Vùng chứa IoC và Thiết kế Điều khiển Tên miền
- 6. Kho lưu trữ Ruby DSL (Miền Ngôn ngữ Cụ thể), ví dụ
- 7. Các thực thể trong thiết kế điều khiển tên miền
- 8. Các blogger ngôn ngữ cụ thể theo tên miền
- 9. viết một ngôn ngữ cụ thể cho miền di động
- 10. Mẫu trạng thái và thiết kế điều khiển tên miền
- 11. Thiết kế điều khiển tên miền và thiết kế điều khiển cơ sở dữ liệu cho ứng dụng web MVC
- 12. Phát triển hướng hành vi (BDD) hoạt động với Thiết kế điều khiển miền (DDD)
- 13. Xác thực trong Thiết kế Điều khiển Tên miền
- 14. C++ mẫu cụ thể do thiết kế ngôn ngữ
- 15. Các lựa chọn thay thế cho Thiết kế Điều khiển Tên miền theo MVC
- 16. Các đối tượng giá trị so với đối tượng (Thiết kế điều khiển tên miền)
- 17. Lập mô hình miền, Đối tượng miền trong DDD
- 18. Thiết kế điều khiển tên miền: Khi nào cần tạo một gốc tổng hợp?
- 19. Hướng dẫn tốt để hiểu ngôn ngữ cụ thể miền (DSL) từ đầu, để bắt đầu một luận án khảo sát
- 20. .htpasswd trên tên miền phụ cụ thể
- 21. Thiết kế Driven Miền trong Lập trình Chức năng?
- 22. Viết một ngôn ngữ cụ thể tên miền để chọn các hàng từ một bảng
- 23. Các câu hỏi liên quan đến Thiết kế điều khiển miền
- 24. Mô hình miền không an toàn so với Mô hình miền trong thiết kế được điều khiển theo miền đơn giản
- 25. Làm cách nào để tạo ngôn ngữ truy vấn theo miền cụ thể?
- 26. Thiết kế điều khiển miền (LINQ to SQL) - Làm cách nào để xóa các phần của tổng hợp?
- 27. Cách nhận miền địa phương của thiết bị sau khi thay đổi ngôn ngữ ứng dụng
- 28. Trong Thiết kế theo hướng miền, bạn có thể sử dụng thực thể miền trong giao diện người dùng của mình không?
- 29. Thực thể trên các ngữ cảnh bị chặn trong Thiết kế theo hướng miền
- 30. Có ai biết về một tài liệu tham khảo tốt cho thiết kế DSL?
Mặc dù buồn cười, tôi nghĩ rằng câu trả lời này là hơi không chính xác. một DSL sẽ sử dụng cùng một ngôn ngữ phổ biến như bạn nhận được khi thực hành DDD cho cùng một tên miền, chúng không hoàn toàn không liên quan .. –