Trang chủ > Uncategorized > Business logic, application logic và domain logic

Business logic, application logic và domain logic

Nếu tìm định nghĩa domain logic trên Wikipedia, bạn sẽ được redirect tới business logic với dòng đầu tiên “Business logic, or domain logic, is a non-technical term…”. Trên thực tế, domain logic chỉ là một phần của business logic. Phân biệt rõ các khái niệm này rất có ích trong việc xây dựng và hiện thực user story cho enterprise application, đặc biệt là khi sử dụng pattern Domain Model.

Business logic = domain logic + application logic

Về cơ bản, domain logic dùng để chỉ các logic mang tính bản chất, luôn đúng cho một business domain, phản ánh tính chất của các domain object và mối quan hệ giữa chúng với nhau, mà không phụ thuộc vào một application. Trong khi đó, application logic là các logic riêng cho một application cụ thể. Các application khác nhau sẽ có các application logic khác nhau. Việc thay đổi application logic không nên dẫn đến sự thay đổi ở domain logic. Đặt trong ngữ cảnh của một enterprise application dạng client-server với nhiều loại client (web, desktop application, mobile app, v.v), domain logic là thành phần lõi ở server, được chia sẻ giữa các client, còn application logic quy định hành vi của từng client khi tương tác với người dùng.

Chúng ta sẽ xem xét một ví dụ để làm rõ các khái niệm. Trong việc quản lí dự án, ta quy định mối build phải thuộc một và chỉ một release nào đó. Khi đó, để mối quan hệ này luôn được đảm bảo, việc một release bị xóa sẽ dẫn đến các build thuộc về nó bị xóa theo. Thao tác này thuộc về domain logic. Khi được người dùng yêu cầu xóa một release, phần mềm quản lí dự án có thể đáp ứng đúng như domain logic, hoặc bắt buộc người dùng phải tự xóa các build trong release, hoặc có thể đòi hỏi sự xác nhận của quản lí dự án v.v. Những thao tác này phát sinh và thay đổi theo hoàn cảnh sử dụng, và không làm thay đổi ngữ nghĩa của build và release. Đây chính là application logic.

Việc xây dựng user story cho một hệ thống, vốn không liên quan gì đến lập trình, cũng được lợi từ việc phân tách application logic và business logic. Theo kinh nghiệm cá nhân, nó hạn chế sự trùng lặp khi diễn giải các bước trong user story, giúp lập trình viên và tester tra cứu dễ dàng hơn, và có những định hướng tốt hơn khi hiện thực. Ngoài ra, tách biệt các vấn đề (domain logic, workflow, user experience, v.v) sẽ giúp ngữ cảnh của những cuộc thảo luận cụ thể và rõ ràng, và tất nhiên sẽ hiệu quả hơn.

Cần chú ý là không có ranh giới tuyệt đối giữa domain logic và application logic. Việc sắp đặt như thế nào phụ thuộc vào cách nhìn về business domain, yêu cầu của application, v.v. Xét cho cùng, tất cả những việc phân chia này đều nhằm đáp ứng những nguyên tắc cơ bản khi thiết kế phần mềm.

Tham khảo:

  • Patterns of Enterprise Application Architecture, của Martin Fowler và các tác giả khác.
  • Architecting Microsoft .NET Solutions for the Enterprise, của Dino Esposito và Andrea Saltarello.
  • Pros and Cons of Data Transfer Objects, MSDN.
Tags:
  1. Chưa có phản hồi.
  1. No trackbacks yet.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: