Domain driven design

Domain - driven design là một cách tiếp cận trong việc xây dựng phần mềm phức tạp[1], sự phức tạp ở đây là những logic của lĩnh vực kinh doanh (domain business).

Thuật ngữ đã được đưa ra bởi Eric Evans trong một cuốn sách cùng tên.[2]

Các khái niệm

[sửa | sửa mã nguồn]

Đinh nghĩa dễ hiểu nhất về domain ở đây là, ví dụ trong một hệ thống thương mại điện tử (e-commerce system) thì sản phẩm, đơn đặt hàng, khách hàng... và các hiểu biết như khách hàng có thể đặt một sản phẩm, một đơn hàng có thể được thanh toán bởi một khách hàng chính là thuộc về domain.

những phần về kỹ thuật bao gồm xử lý request, form, connect database, lưu trữ thông tin nằm ngoài domain.

Ubiquitous Language

[sửa | sửa mã nguồn]

Một ngôn ngữ có cấu trúc xung quanh domain được sử dụng bởi tất cả các thành viên trong nhóm phát triển (developer, domain expert, customer) để kết nối các hoạt động của nhóm với phần mềm.

đây là ngôn ngữ giải quyết cho vấn đề khó khăn tồn tại là doanh nghiệp thường không hiểu được những ngôn ngữ kỹ thuật bên dưới, còn nhà phát triển thì không hiểu được business logic của product. Cần có một ngôn ngữ chung để chia sẻ giữa doanh nghiệp và nhà phát triển để hiểu sản phẩm theo một cách như nhau.

Contexts and Bounded Contexts

[sửa | sửa mã nguồn]

Bounded Contexts tạm dịch Phạm vi Ngữ cảnh.

Phạm vi ngữ cảnh có thể được xem như một ứng dụng thu nhỏ, chứa những model của chính nó và mã nguồn cùng cơ chế lưu trữ (persistence) riêng. Bên trong Phạm vi Ngữ cảnh cần có sự thống nhất hợp lý. mỗi bounded contexts nên độc lập với bất kỳ bounded contexts khác. Ví dụ trong một e-commerce system chúng ta có thể coi chương trình của chúng ta trong ngữ cảnh của cửa hàng (shopping), nhưng sâu hơn ta có thể thấy có những ngữ cảnh khác nữa ở đây chẳng hạn Hàng hóa tồn kho (Inventory), Giao nhận (Delivery) và Tài khoản (Account).

Chia một ứng dụng lớn trong những bối cảnh hợp lý khác nhau sẽ cho chúng ta khả năng module hóa hệ thống, sẽ giúp ta phân tách mối quan tâm khác nhau vào những phần riêng biệt và làm cho các ứng dụng dễ dàng để quản lý và nâng cấp.

Entities and Value Objects

[sửa | sửa mã nguồn]

Entiies và Value Objects là những building blocks trong Domain Driven Design nó là những thành phần để xây dựng Domain Model. Tất cả những đối tượng này đều xuất phát từ sự ánh xạ của Ubiquitous Language và có những tính chất, hành vi mà phản ánh chính xác nghiệp vụ của miền (Domain Business), Trong DDD thì những đối tượng này được đặt ở lớp miền (Domain Layer) và được cô lập với mọi thành phần bên ngoài lớp miền này.

Entity và Value Objects đều là các đối tượng miền nhưng giữa chúng có những sự khác nhau cơ bản và cũng rất quan trọng để phân biệt.

Cụ thể:

- Các thực thể (Entities) có một định danh (Identity) riêng của chúng trong khi các đối tượng giá trị (Value Objects) thì không.

- Các khái niệm so sanh ngang bằng về định danh đề cập đến các thực thể (so sánh 2 thực thể dựa trên định danh), các khái niệm so sánh các giá trị của đối tượng đề cập đến đối tượng giá trị (so sánh các giá trị trong một đối tượng).

- Một Value Object luôn phải thuộc về 1 hoặc nhiều Entity,

- Một Entity thì có thể thay đổi trạng thái (Mutable) trong khi một Value Object thì không (Immutable).

Aggregates and Aggregate Roots

[sửa | sửa mã nguồn]

Persistence Ignorance

[sửa | sửa mã nguồn]

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ Domain driven design.
  2. ^ Evans, Eric (2004). Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley. ISBN 978-032-112521-7. Truy cập ngày 12 tháng 8 năm 2012..
Chúng tôi bán
Bài viết liên quan
Cảm xúc của font chữ
Cảm xúc của font chữ
Font chữ không chỉ là công cụ thể hiện nội dung mà còn truyền tải cảm xúc và cá tính của thương hiệu hoặc thiết kế. Mỗi kiểu chữ mang một sắc thái riêng
Hướng dẫn tải và cài đặt ứng dụng CH Play cho mọi iPhone, iPad
Hướng dẫn tải và cài đặt ứng dụng CH Play cho mọi iPhone, iPad
Được phát triển bởi thành viên của Group iOS CodeVn có tên Lê Tí, một ứng dụng có tên CH Play đã được thành viên này tạo ra cho phép người dùng các thiết bị sử dụng hệ điều hành iOS có thể trải nghiệm kho ứng dụng của đối thủ Android ngay trên iPhone, iPad của mình
6 cách để giao tiếp cho người hướng nội
6 cách để giao tiếp cho người hướng nội
Dù quan điểm của bạn có dị đến đâu, khác biệt thế nào hay bạn nghĩ là nó dở như thế nào, cứ mạnh dạn chia sẻ nó ra. Vì chắc chắn mọi người xung quanh cũng sẽ muốn nghe quan điểm của bạn
Câu truyện đằng sau đôi tất ướt và điệu nhảy của Ayaka
Câu truyện đằng sau đôi tất ướt và điệu nhảy của Ayaka
Story Quest của Ayaka có một khởi đầu rất chậm, đa số là những cuộc hội thoại giữa Ayaka và các NPC trong thành Inazuma