11 Apr 2024

656

Domain model là gì? Tìm hiểu về khái niệm domain model

Post by Admin
Domain model là gì? Tìm hiểu về khái niệm domain model

Trong công nghệ phần mềm, domain model là một mô hình khái niệm của tên miền kết hợp cả hành vi và dữ liệu. Vậy domain model là gì, những layer nào liên quan và những kiến thức về domain model sẽ được chúng tôi chia sẻ sau đây, các bạn đón đọc nhé!

Tìm hiểu về khái niệm domain model

Domain Model là gì?

Domain model là mô hình hóa domain hay là cách chúng ta thiết kế kiến trúc ở mức độ hệ thống chứ không phải mức độ class như MVC hay những design pattern khác. Ví dụ như bạn không thể xây dựng một hệ thống ngân hàng nếu bạn không có một chút hiểu biết gì về nghiệp vụ ngân hàng.

Với cách làm thông thường khi xây dựng một hệ thống là chúng ta sau khi phân tích từ file design chúng ta xác định mình cần làm gì và bắt đầu code.

Tuy nhiên với quy mô Domain Model lại ngược lại, chúng ta phải đi từ domain, hay nói cách thức khác là đi từ tổng quát nghiệp vụ của project sau đó mới đến phần design.

>>> Xem thêm: Domain controller là gì?

Ứng dụng được chia làm 4 layer

  • User Interface Layer: làm nhiệm vụ biểu diễn thông tin trực quan cho user và dịch những user command ( ở đây chúng ta có thể hiểu là những sự kiện xảy ra trên giao diện khi được trigger ( nhấn nút trên những UI input control ) là những sẽ được dịch thành những command xử lý ở những tầng dưới.
  • Application Layer: Tầng này được thiết kế khá mỏng ( thin ) với ít logic xử lý chỉ để làm nhiệm vụ coordinate những Activity của Application và không chứa Business Logic, nó không chứa state của những Business Object mà chỉ chứa state của Application Task Progress. Chúng ta có thể tưởng tượng phần này gần giống với những Controller trong quy mô MVC chỉ làm nhiệm vụ forward những task đến nơi cần xử lý.
  • Domain Layer: Đây là trái tim của ứng dụng ( Business Software ), những state của Business Object đều tọa lạc ở đây. Việc lưu trữ ( persistence ) những Business Object và những state của nó được chuyển giao cho tầng Infrastructure ở dưới. Trái tim của quy mô này đó là ở phần Domain Layer, những nghiệp vụ sẽ được mô tả tại đây, và cấu trúc source code rất được tổ chức theo tên những nghiệp vụ chứ không để kiểu view, controller như truyền thống
  • Infrastructure Layer: Đóng vai trò đồng tình thư viện ( supporting libraries )cho những tầng khác. Nó đồng tình cơ chế tiếp xúc ( communication ) giữa những Layer với nhau, cũng như đồng tình những chức năng khác như lưu trữ ( persistence ) những Business Object của tầng Domain model.

Xây dựng kiến thức Domain Model

Ubiquitous Language

Ngôn ngữ chung hiển nhiên là vấn đề được đặt lên hàng đầu. Việc sử dụng chung ngôn ngữ giúp tránh mọi nhầm lẫn dẫn đến sai sót trong quá trình xây dựng và phát triển ứng dụng.

Entity

Nếu bạn hay lập trình hướng đối tượng người dùng thì sẽ hiểu rõ khái niệm về Object. Entity trong Domain model thực chất là một object như vậy, tuy vậy nó lại thêm 1 thuộc tính là ID để định danh.

Value object

Value Object thức chất vẫn là 1 Object nhưng không cần định danh. Đặc tính của object là Immutable, tạo ra rồi thì không thể thay đổi được. Một value object sẽ không có ý nghĩa gì nếu không được tích hợp một entity nào đó.

Aggregate (Tính tương đồng)

Khá là trừu tượng, tuy vậy bạn cũng có thể hiểu đơn giản đó là khi một thực thể bị xóa khỏi nó sẽ bị kéo theo xóa khỏi những thực thể khác. Chẳng hạn bạn có 1 bài viết trên Facebook, bài post ấy là 1 entity post, một post lại có rất nhiều entity comment và entity like, nếu bạn xóa bài post ấy đi thì kéo theo comment và like cũng bị xóa khỏi.

Trên đây là một số khái niệm và những thông tin liên quan tới Domain model. Hy vọng những san sẻ này sẽ giúp ích cho chúng ta trong quá trình làm việc hay đơn giản chỉ là dùng một quy mô mới trong quá trình xây dựng dự án.

Tổng hợp bnn.vn

Đóng góp ý kiến

Danh mục
0971.933.973