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
Giả thuyết về tên, cung mệnh của 11 quan chấp hành Fatui và Băng thần Tsaritsa
Giả thuyết về tên, cung mệnh của 11 quan chấp hành Fatui và Băng thần Tsaritsa
Tên của 11 Quan Chấp hành Fatui được lấy cảm hứng từ Commedia Dell’arte, hay còn được biết đến với tên gọi Hài kịch Ý, là một loại hình nghệ thuật sân khấu rất được ưa chuộng ở châu
Twinkling Watermelon - Cảm ơn các cậu đã dịu dàng lớn lên và tỏa sáng lấp lánh
Twinkling Watermelon - Cảm ơn các cậu đã dịu dàng lớn lên và tỏa sáng lấp lánh
Có một Ha Yi Chan 18 tuổi luôn rạng rỡ như ánh dương và quyết tâm “tỏa sáng thật rực rỡ một lần” bằng việc lập một ban nhạc thật ngầu
Long Chủng và Slime trong Tensura sự bình đẳng bất bình thường.
Long Chủng và Slime trong Tensura sự bình đẳng bất bình thường.
Những cá thể độc tôn mạnh mẽ nhất trong Tensura, hiện nay có tổng cộng 4 Long Chủng được xác nhận
Nhân vật Ponison Pop Perlia - Cô bé tinh linh nhút nhát Overlord
Nhân vật Ponison Pop Perlia - Cô bé tinh linh nhút nhát Overlord
Cô có vẻ ngoài của một con người hoặc Elf, làn da của cô ấy có những vệt gỗ óng ánh và mái tóc của cô ấy là những chiếc lá màu xanh tươi