Tôi thấy thuật ngữ này rất nhiều trong bối cảnh kiến trúc phần mềm ("mô hình miền", "thiết kế hướng theo miền", v.v.). Tôi đã googled nó, nhưng tôi nhận được vô số định nghĩa khác nhau. Vậy nó thực sự là gì?
Tôi thấy thuật ngữ này rất nhiều trong bối cảnh kiến trúc phần mềm ("mô hình miền", "thiết kế hướng theo miền", v.v.). Tôi đã googled nó, nhưng tôi nhận được vô số định nghĩa khác nhau. Vậy nó thực sự là gì?
Câu trả lời:
Từ tên miền tên miền trong cuốn sách Thiết kế hướng tên miền của Eric Evans có ý nghĩa cụ thể. Đó là điều mà phần mềm nói về.
Evans đi xa hơn mặc dù. Theo quan điểm của ông, có những tên miền phụ ngay cả với cùng một phần mềm. Và đây là một phần của cuốn sách liên quan đến Thiết kế chiến lược.
Có ba miền tên miền tên miền: tên miền cốt lõi, tên miền hỗ trợ và tên miền chung. Đôi khi anh ấy sẽ gọi chúng là các tên miền phụ.
Evans cũng quan tâm sâu sắc đến hoạt động kinh doanh thực sự đằng sau phần mềm và cuốn sách không chỉ nhắm vào các nhà phát triển mà cả các kiến trúc sư và nhà quản lý, những người cần xem phần mềm và doanh nghiệp có thể làm việc với nhau như thế nào, và đó là điều ông quan tâm khi thảo luận về thiết kế chiến lược và các tên miền phụ.
Vì vậy, miền cốt lõi là một phần của phần mềm đại diện cho cả lợi thế cạnh tranh và phần mềm raison d''rere của phần mềm. Đó là một phần của phần mềm, đó là lý do tại sao khách hàng sẽ mua phần mềm này so với một số phần mềm khác. Thông thường, Evans xem nó là miền chứa tỷ lệ mã nhỏ nhất. Bạn có thể nghĩ về nó như là 20% quan trọng nhất. Đó là phần mà bạn không thể thực sự mua ngoài kệ và nó có thể chỉ là một mô-đun hoặc thành phần duy nhất của phần mềm tổng thể.
Miền hỗ trợ vẫn quan trọng và có thể là duy nhất cho tổ chức nhưng không quan trọng bằng miền lõi. Không có nó, phần mềm sẽ không có giá trị và cốt lõi phụ thuộc vào nó. Nó có thể là nhiều mô-đun trong phần mềm mà bạn đã tự viết và thực hiện các chức năng quan trọng nhưng hỗ trợ cho cốt lõi.
Tên miền chung là ít tùy chỉnh nhất và trong một số trường hợp là phần ít quan trọng nhất của phần mềm. Bạn có thể đã viết nó trong nhà nhưng có thể hiệu quả hơn nếu chỉ mua nó ngoài giá hoặc sử dụng phần mềm nguồn mở nổi tiếng. Phần này của hệ thống có thể không dành riêng cho miền tổng thể của bạn, vì vậy, ví dụ bạn có hệ thống vận chuyển định tuyến bưu kiện hoặc hệ thống hồ sơ sức khỏe quản lý bệnh nhân, miền chung là một phần của các hệ thống này phổ biến và chỉ đơn giản chỉ cần có mặt để hoạt động. Điều này có thể chiếm phần lớn của toàn bộ hệ thống, nhưng không nhất thiết phải như vậy.
Từ góc độ kinh doanh, điều quan trọng là quyết định tên miền cốt lõi của bạn là gì và tập trung các nguồn lực phát triển của bạn vào đó. Evans có nhiều video, đặc biệt là trên trang InfoQ, nơi ông giải thích các khái niệm này chi tiết hơn.
Vì vậy, trong khi chúng ta thường nói về các tên miền, trong phần mềm DD, thì trong trường hợp DDD, nó không đơn giản như vẻ ngoài của nó.
Tôi nên lưu ý rằng các khái niệm về DDD không nhất thiết tồn tại trong cộng đồng phần mềm rộng lớn hơn. Các nhà phát triển, tác giả và người sản phẩm khác có thể có những ý tưởng và định nghĩa khác nhau, một số tinh tế hơn và một số ít hơn. Ngay cả các tác giả khác đã viết về DDD cũng có thể trình bày về các khái niệm này trong cuốn sách của Evans, nhưng tôi cảm thấy rằng các khái niệm này vẫn hữu ích khi viết và lên kế hoạch cho một dự án phần mềm.
Các miền là bối cảnh thực tế mà bạn đang cố gắng để giải quyết một vấn đề sử dụng phần mềm. Mỗi miền đi kèm với chuyên môn, từ vựng và công cụ là một phần của miền đó.
Một ví dụ cụ thể của một miền có thể là một cái gì đó như "gia công tự động các bộ phận phức tạp bằng cách sử dụng máy cắt quay tốc độ cao". Hệ thống phần mềm và phần cứng thực hiện việc này được gọi là nhà máy CNC .
Một ví dụ khác về tên miền là bộ phận kế toán tại một công ty.
Đọc thêm
Bối cảnh giới hạn của Martin Fowler
Nó đơn giản có nghĩa là không gian vấn đề bạn đang làm việc. Ví dụ: nếu bạn đang xây dựng trang web thương mại điện tử, tên miền của bạn sẽ là "thương mại điện tử" và sẽ liên quan đến các quy trình liên quan đến thực tiễn bán hàng của khách hàng / công ty của bạn. Vì vậy, một mô hình miền sẽ là một cái gì đó để đại diện cho một sản phẩm hoặc hóa đơn hoặc hồ sơ vận chuyển.
domain names
còn được gọi là tên miền, tôi nghĩ bạn nên làm rõ cách bạn đang sử dụng tên miền ở đây.
Một miền là một lĩnh vực kiến thức. Nó có thể là một hoạt động trong đó tồn tại các vấn đề được giải quyết bằng phần mềm của bạn. ( Wiki , Cộng đồng DDD )
Eric Evans trong cuốn sách của mình, sử dụng vận chuyển hàng hóa để giải thích DDD là gì. Trong ví dụ của mình, tên miền là tất cả mọi thứ về vận chuyển . Làm thế nào hàng hóa được di chuyển, quản lý, vận chuyển và theo dõi, vv Nó đi kèm với các quy tắc, ngôn ngữ và quy trình cụ thể của riêng mình. Những người sẽ tạo mô hình miền, đối tượng, dịch vụ và như vậy.
Khi bạn tạo một ứng dụng, bạn sẽ có một số loại ủy quyền, giống như thế giới thực của vận chuyển, không phải ai cũng có thể truy cập vào kho. Cách người dùng được ủy quyền và cách cấp quyền có thể nằm ngoài miền , vì thông tin có thể không liên quan đến việc vận chuyển hàng hóa.
Nói một cách đơn giản: một tên miền là nơi bạn làm kinh doanh . Nếu doanh nghiệp của bạn là vận chuyển hàng hóa - vận chuyển hàng hóa sẽ là tên miền của bạn. Nếu doanh nghiệp của bạn đang xác thực và ủy quyền nhân sự thì đây sẽ là miền của bạn.
Từ thiết kế hướng tên miền: Giải quyết sự phức tạp trong trung tâm của phần mềm , Eric Evans:
Mỗi chương trình phần mềm liên quan đến một số hoạt động hoặc sở thích của người dùng. Lĩnh vực chủ đề mà người dùng áp dụng chương trình là miền của phần mềm.
Các lĩnh vực của một chương trình đặt vé máy bay liên quan đến những người thực sự có được trên máy bay thực sự.
Lĩnh vực của một chương trình kế toán là tiền và tài chính.
Miền của hệ thống kiểm soát mã nguồn là chính sự phát triển phần mềm.
Mô hình miền, sau đó là "sự trừu tượng hóa có tổ chức và chọn lọc chặt chẽ" kiến thức trong đầu của một chuyên gia tên miền.
Palermo, khi mô tả kiến trúc củ hành, đã đưa ra bản tóm tắt này
Ở chính giữa chúng ta thấy Mô hình miền, đại diện cho sự kết hợp trạng thái và hành vi mô hình sự thật cho tổ chức.
Fowler, lần lượt, cung cấp
Một mô hình đối tượng của miền kết hợp cả hành vi và dữ liệu.
Nếu bạn đang xem xét các định nghĩa gần đây hơn, nhiều khả năng bạn sẽ chạy vào các tài liệu tham khảo rằng mô hình miền và mô hình dữ liệu khác nhau . Tôi không coi việc thay đổi ý nghĩa nhiều như thay đổi sự nhấn mạnh - mô hình hóa các hành vi (cách thay đổi dữ liệu để phản hồi thông tin từ bên ngoài mô hình) có độ phức tạp và biến đổi phong phú hơn so với các cách viết khác nhau .
Vì bạn có thể đã có ý tưởng về miền là gì, tôi đoán bước tiếp theo bạn sẽ thực hiện là xác định tên miền phụ, mô hình miền và quan trọng hơn là bối cảnh bị ràng buộc.
Tôi bắt đầu với việc đưa quan điểm của tôi về tên miền mặc dù.
Miền là thực tế chúng ta sinh sống: các thực thể của nó, hành vi của họ, luật pháp họ tuân theo. Nó tồn tại trước chúng ta và sẽ tồn tại sau chúng ta, dưới hình thức này hay hình thức khác. Sự tồn tại của nó không phụ thuộc vào nhận thức của chúng ta. Các nhà tiếp thị đưa ra các tính năng mới và thực hiện phân tích thị trường, Người quản lý tài khoản chính giao tiếp với khách hàng, nhà phát triển phần mềm tự động hóa các quy trình kinh doanh. Đó là lý do tại sao tên miền được gọi là không gian vấn đề.
DDD ngụ ý phân tách miền thành các tên miền phụ, để dễ dàng mô hình hóa và hiểu. Thực tế là bạn điều hành một doanh nghiệp cho rằng có ít nhất một giá trị kinh doanh chiếm ưu thế. Người bạn kiếm được tiền với. Một trong những chúng tôi bắt đầu kinh doanh của chúng tôi cho. Vì vậy, ngay cả khi bạn không biết một từ như tên miền Core Core, thì nó vẫn hiện diện. Điều tương tự cũng áp dụng cho các tên miền phụ: có thể bạn sẽ cần một sổ sách kế toán, nguồn nhân lực, hỗ trợ kỹ thuật - nhưng nó chỉ là thứ yếu.
Không cần mô hình hóa toàn bộ các tên miền phụ được trích xuất. Có một bộ quy tắc nhất định trong mỗi tên miền phụ mà chúng tôi quan tâm. Một quy tắc được đặt trong một số tên miền phụ cần thiết để đạt được kết quả kinh doanh nhất định được gọi là mô hình.
Điều quan trọng nhất là bối cảnh bị ràng buộc là một ranh giới logic.
Khi cả hai tên miền phụ và tên miền lõi được xác định, đã đến lúc triển khai mã. Bối cảnh giới hạn xác định ranh giới hữu hình về khả năng áp dụng của một số tên miền phụ. Đó là một khu vực nơi một tên miền phụ nhất định có ý nghĩa, trong khi những miền khác thì không. Nó có thể là một bài nói chuyện, một bài thuyết trình, một dự án mã với các ranh giới vật lý được xác định bởi tạo tác.
Nếu bạn quan tâm đến việc khái niệm bối cảnh bị ràng buộc tương quan như thế nào với khái niệm tên miền phụ, cách xác định tên miền phụ và bối cảnh bị ràng buộc, cách thể hiện giao tiếp của họ với nhau và cách tổ chức các nhóm với các khái niệm này, có lẽ bạn sẽ quan tâm đến điều này đọc thêm .