Domain model là gì | Tìm hiểu 4 layer liên quan

Domain model là gì? Bạn có đang làm việc trong lĩnh vực công nghệ thông tin không? Dù bạn đang làm việc với ngôn ngữ lập trình hay framework nào thì chắc chắn bạn cũng làm việc cùng Domain model. 

Domain model có quy mô thiết kế project 3 lớp. Nếu bạn học và hiểu về Domain model sẽ giúp ích cho bạn rất nhiều. Nó làm cho code của bạn gọn gàng và dễ hiểu hơn rất nhiều.

Không hề bị lỗi thời hay bị thay thế, MVC vẫn phát triển cho đến ngày nay và không hề giảm đi giá trị. Trong bài viết này chúng tôi sẽ giới thiệu với bạn đọc về Domain model là gì? Những thông tin hữu ích liên quan đến Domain Model. Giờ đây hãy bắt đầu khám phá những thông tin hữu ích nhé. 

Domain model là gì

Domain model là gì | Tìm hiểu 4 layer liên quan

Khái niệm domain model là gì

Domain model là một cách thức con người hiểu biết về thế giới thực, những vấn đề mà ứng dụng cần giải quyết. Nó cũng là cách thức để thiết kế cấu tạo kiến trúc ở mức độ cần giải quyết. Không phải ở mức độ cơ bản như MVC hay những design pattern khác. 

Một ví dụ minh họa: Bạn không thể xây dựng một ứng dụng kế toán nếu bạn không hiểu biết về các nghiệp vụ kế toán. Với những cách làm thông thường, khi thiết lập một hệ thống bạn sẽ có một bản thiết kế là psd hay picture hay là một tệp tin spec. 

Sau khi phân tích tệp tin design bạn biết mình cần phải làm gì và bắt đầu làm code. Ngược lại, với mô hình DDD bạn phải đi từ domain, đi từ tổng quát nghiệp vụ của dự án sau đó mới thiết kế. 

Trong đó domain model sẽ được phân chia thành 4 layer. Giờ đây hãy cùng tìm hiểu về các layer này nhé. 

04 layer liên quan đến domain model là gì?

User Interface Layer

Có nhiệm vụ làm biểu diễn thông tin trực quan cho người dùng và dịch những user command. Bạn có thể hiểu đơn giản là những sự kiện xảy ra trên giao diện khi hệ thống trigger. Tức là khi người dùng nhấn nút hoặc click vào những UI input control. Nó sẽ được dịch thành những command xử lý ở giai đoạn sau. 

Application Layer

Tầng này được thiết kế mỏng với rất ít logic xử lý. Nó có nhiệm vụ coordinate những Activity của Application. Application Layer không chứa các Business Logic. Không chứa state của những Business Object. Nó chỉ chứa các  state của Application Task Progress. 

Bạn có thể tưởng tượng phần này giống với những Controller trong quy mô của MVC và có nhiệm vụ chuyển tiếp (forward) đến những nhiệm vụ “task” và đưa đến nơi cần xử lý. 

Domain Layer

Là trái tim của ứng dụng (Business Software), những status của Business Object đều nằm ở đây. Việc lưu trữ các persistence của Business Object và những state sẽ được chuyển giao cho tầng dưới. Trái tim của quy trình này nằm ở Domain layer. Sau đó những nghiệp vụ cụ thể sẽ được mô tả ở layer này. Cấu trúc source code sẽ được tổ chức theo tên nghiệp vụ, không để theo dạng xem như truyền thống. 

domain model là gì

Tìm hiểu về 4 Layer liên quan đến domain model là gì

Infrastructure Layer

Là layer đóng vai trò thư viện (supporting libraries) cho những tầng còn lại. Layer này đồng tình cơ chế tiếp xúc giữa các layer khác với nhau. Đồng tình những chức năng khác ví dụ như lưu trữ các Business Object của Domain. 

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

Để xây dựng hay tích góp được những kiến thức về Domain Model bạn nên là người làm ngành nghề này. Nếu bạn không làm công việc liên quan và không làm coder thì sao? Thực sự cũng sẽ có nhiều hạn chế để tích lũy kiến thức về domain model.

Nếu có điều kiện hoặc cơ hội hãy tìm một người thầy, người bạn làm về lĩnh vực này hoặc có kinh nghiệm để học hỏi thêm về domain model là gì.  

Ví dụ minh họa khi làm domain model là gì

Bạn muốn xây dựng hệ thống quản lý tàu thủy trên biển. Nếu chỉ quen biết những người làm trong ngành đường thủy chắc là chưa đủ phải không. 

Khi gặp và trao đổi với họ về ngành hàng thủy chắc hẳn bạn sẽ có những thông tin về công việc của họ. Nhưng còn nhiều thông tin và kiến thức khác nữa để có thể xây dựng được hệ thống quản trị. 

Sau khi thu thập được thông tin từ những người làm trong lĩnh vực đó, bạn cần chuyển hóa thông tin sang ngôn ngữ lập trình. 

Để chuyển đổi thì cần có một ngôn ngữ chung được gọi là Ubiquitous language. Ngoài ra cũng cần thêm 3 yếu tố liên quan nữa. Sau đây chúng tôi sẽ phân tích cụ thể hơn. 

Ubiquitous language

 Domain Model là gì

Tìm hiểu và học hỏi về Domain Model là gì để phục vụ cho công việc tốt hơn

Ubiquitous language giống như một nhà phiên dịch đại tài. Ubiquitous language giúp cho người dùng, lập trình viên và máy tính cùng hiểu đúng một thuật ngữ, một khái niệm. 

Entity 

Nếu bạn là lập trình viên hướng về người dùng thì bạn sẽ hiểu về khái niệm Object. Entity trong DĐ là một object. Entity có thêm một thuộc tính đó là mã ID để định danh. 

Value object

Value object về bản chất vẫn là một Object nhưng không yêu cầu phải định danh. Đặc tính của Value Object là Immutable. Nếu đã được tạo ra sẽ không thay đổi được. Khi một value object được tạo nó sẽ không có ý nghĩa nếu không tích hợp cùng một Entity nào đó. 

Aggregate

Aggregate có khái niệm khá trừu tượng. Bạn có thể hiểu đơn giản là khi bạn xóa một trường hoặc một điều gì đó. Nó sẽ kéo theo xóa những thông tin liên quan khác. Ví dụ như bạn đã đăng một bài trên mạng xã hội. Bài đó là một dạng Entity post, post này có nhiều comment và like. Nếu xóa entity post sẽ kéo theo xóa hết comment là like của post đó. Domain model là gì? 

Kết luận Domain model là gì?

Trên đây là bài viết giới thiệu đến bạn đọc những thông tin hữu ích về Domain model là gì. Trên thực tế đây là một khái niệm rất khó để có thể hiểu tường tận chi tiết. Nhưng cách tiếp cận domain model thì không phải là quá khó. Bạn có thể tiếp tục tìm hiểu và thực tập thêm để có kỹ năng tốt. 

Chúng tôi hy vọng rằng những thông tin trên đây giúp bạn giải đáp những thắc mắc về domain model. Giúp bạn có thể biết thêm nhiều hơn về lĩnh vực này. Cảm ơn bạn đọc đã quan tâm theo dõi. 

Bài liên quan:

Nên mua hosting giá rẻ ở đâu uy tín chất lượng 2022

6 công cụ kiểm tra lịch sử tên miền (domain age) nhanh nhất

Lỗi 503 là gì? Nguyên nhân và cách khắc phục

Thông tin liên hệ tư vấn