Minsan phiêu lưu kí

Blog chia sẻ kiến thức về Cloud/Data&AI

Architecture Pattern – Kiến trúc phân lớp (Layered architecture)

0
(0)

Kiến trúc phân lớp (Layered architecture – còn được gọi là N-tier architecture) là kiến trúc phổ biến tới mức trở thành kiến trúc “quốc dân“. Mỗi lớp trong kiến trúc này có chức năng riêng và tương tác với lớp ngay trên hoặc dưới nó. Các mô hình sử dụng kiến trúc này bao gồm MVC, MVVM, …

Mặc dù không có con số cụ thể về số lượng và loại lớp phải có, kiến trúc phân lớp thường bao gồm bốn lớp tiêu chuẩn: presentation, business, persistence, và database.

Kiến trúc phân lớp tiêu chuẩn – Nguồn: Software Architecture Patterns – Mark Richards

  1. Lớp Presentation: Gồm các thành phần như giao diện người dùng, trình duyệt, ứng dụng di động, hoặc các thành phần tương tác với người dùng khác. Có chức năng hiển thị thông tin và kết quả từ lớp Logic cho người dùng và chuyển dữ liệu người dùng nhập vào lớp Logic.
  2. Lớp Business: Đôi khi còn được gọi là lớp Service. Có nhiệm vụ xử lý các logic nghiệp vụ, nhận yêu cầu từ lớp Presentation, xử lý nó và gửi yêu cầu tương ứng đến lớp Persistence.
  3. Lớp Persistence: Đảm nhiệm việc gửi  các yêu cầu đến lớp Database để thực hiện các thao tác liên quan đến dữ liệu.
  4. Lớp Database: Bao gồm cơ sở dữ liệu và các thành phần liên quan như hệ quản trị cơ sở dữ liệu. Có nhiệm vụ quản lý cơ sở dữ liệu, thực hiện thao tác đọc và ghi dữ liệu và triển khai các truy vấn và lưu trữ dữ liệu theo cách được định nghĩa từ lớp Persistence.

Hãy cùng nhìn vào mô hình API được thiết kế theo kiến trúc quốc dân được sử dụng phổ biến sau:

Kiến trúc phân lớp trong thực tế

Chúng ta có bốn lớp với các nhiệm vụ cụ thể:

  1. ControllerÂ(Presentation Layer): Parse các request từ client
  2. ServiceÂ(Business Layer): Xử lý logic nghiệp vụ
  3. RepositoryÂ(Persistence Layer): Mapping dữ liệu từ service với database (DAO – Data access object hoặc DTO – Data transfer object)
  4. DatabaseÂ(Database Layer): Cập nhật dữ liệu trong database

Dù có ưu điểm tách biệt logic giữa các tầng, kiến trúc phân lớp vẫn có một yếu điểm dễ thấy là logic phải được truyền theo thức tự các tầng, bất kể tầng đó có xử lý dữ liệu hay không. Điều này gây ra sự lãng phí tài nguyên.

Kiến trúc phân lớp (Layered archtecture) chia hệ thống ra thành các lớp thực hiện chức năng riêng biệt. Mỗi lớp sẽ tương tác với lớp ở trên hoặc ở dưới nó.

Ưu điểm của kiến trúc phân lớp là các layer độc lập, đảm bảo logic không bị chồng chéo lẫn nhau. Tuy nhiên, vì phải đi theo thứ tự từng lớp một nên có thể dẫn tới hiệu năng không tốt do dữ liệu bị truyền qua những lớp không cần thiết.

Kiến trúc phân lớp sẽ phù hợp với những hệ thống đơn giản chưa cần nhiều khả năng mở rộng, khả năng chịu lỗi và hiệu năng.

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Leave a Reply

Your email address will not be published. Required fields are marked *