Professional Documents
Culture Documents
Tiers V Layers
Tiers V Layers
Tiers V Layers
Liên quan đến việc phân phối các thành phần Liên quan đến tổ chức và cấu trúc logic của các
phần mềm trên các phần cứng hoặc hạ tầng thành phần phần mềm dựa trên trách nhiệm và
khác nhau. chức năng của chúng.
Mục tiêu là phân chia các quan tâm và duy trì
Mục tiêu là đạt được tính mở rộng, khả năng
một cơ sở mã nguồn có tính mô-đun và dễ bảo
chịu lỗi và tối ưu hiệu năng.
trì.
Ví dụ: Phân tách các máy chủ trong một ứng
Ví dụ: Phân lớp kiến trúc, phân tách lớp hiển
dụng web thành máy chủ web, máy chủ ứng
thị, lớp xử lý logic và lớp truy cập dữ liệu.
dụng và máy chủ cơ sở dữ liệu.
Tiers và Layers 1
Ở đây, lớp User Interface, lớp Business Logic và lớp Data Access mỗi lớp đều có trách
nhiệm riêng của mình và được tách biệt logic.
Các lớp không liên quan đến việc tách biệt vật lý (physical separation) của chúng. Khi
chúng ta nói về các lớp, chúng ta không xác định nơi triển khai chúng.
2. Tiers
Mặt khác, thuật ngữ "tier" đề cập đến cấu trúc vật lý. Các tier xác định nơi triển khai
các lớp, mà không nhất thiết phải có mối tương ứng một-một. Vì vậy, khi chúng ta nói
về các tier của một ứng dụng, chúng ta đề cập đến cấu trúc của nó.
Ví dụ, hãy xem cách chia ứng dụng theo lớp thành các tier vật lý như sau:
Ở đây, chúng ta thấy một biểu diễn của kiến trúc "n-tier" trong đó mỗi tier vật lý đại diện
cho một lớp. Đây là kiến trúc "3-tier" cổ điển.
Các tier được xác định dựa trên môi trường tính toán mà phần mềm sẽ chạy trên
đó. Bằng cách chia ứng dụng thành các tier, ta có thể đạt được mức độ mở rộng cao
hơn.
Tiers và Layers 2
Chúng ta cũng có thể triển khai các lớp của ứng dụng với một cấu trúc tier khác nhau:
Trong kiến trúc "2-tier" hoặc "Client-Server Architecture", Lớp Giao diện Người dùng
nằm trên một tier riêng biệt trong khi Lớp Business Logic và Lớp Data Access nằm trên
một tier khác.
So sánh
Layers (lớp) Tiers
Thuật ngữ "layer" đề cập đến sự tách biệt logic Thuật ngữ "tier" đề cập đến cấu trúc vật lý
của mã (logical separation of code). (physical separation).
Đây là cách để tổ chức mã thành các lớp có Đây là cách để tổ chức ứng dụng thành các
logic tương tự nhau. cấp độ triển khai vật lý.
Mục tiêu là cải thiện tính di động, khả năng bảo Mục tiêu là tăng tính mở rộng và khả năng triển
trì và modular của mã. khai vật lý.
Ví dụ: Kiến trúc theo lớp (Layered Ví dụ: Kiến trúc 3-tier, Kiến trúc 2-tier (Client-
Architecture), Kiến trúc Hexagonal. Server Architecture).
Ví dụ: Lớp Giao diện Người dùng, Lớp Logic Ví dụ: Tier Giao diện Người dùng, Tier Logic
Kinh doanh, Lớp Truy cập Dữ liệu được tách Kinh doanh, Tier Truy cập Dữ liệu được tách
biệt logic. biệt.
Tiers và Layers 3
Các kiến trúc
1. Single Tier - Single Layer Model
Chỉ một dự án trong solution
Ứng dụng: ứng dụng web gồm 2 hoặc 3 trang, hoặc các trang web với nội dung
chủ yếu là tĩnh
Tách mã UI vào một namespace riêng, và mã BL, DAL vào một namespace khác.
Code: Thư mục này sẽ chứa các tệp lớp chứa mã BL, mã DAL dưới một
namespace duy nhất, ví dụ MyApp.Code
Web: Thư mục này sẽ chứa các điều khiển người dùng, trang ASPX và mã liên
quan đến hiển thị dưới namespace, ví dụ như MyApp.Web
Toàn bộ mã nguồn của giao diện người dùng sẽ được đặt trong namespace
MyApp.Web (Layer1).
Tiers và Layers 4
Business (Layer 2): dành cho mã logic kinh doanh, với namespace
MyApp.Code.Business .
DAL (Layer 3): dành cho mã truy cập dữ liệu, với namespace
MyApp.Code.DAL .
Sử dụng mô hình này cho một ứng dụng web vừa đến lớn, nhiều người dùng sẽ
không đăng nhập đồng thời.
Để xử lý một số lượng lớn người dùng, ứng dụng cần có khả năng mở rộng cần
tách BL và DAL thành các tổ hợp vật lý của riêng chúng.
Nếu chúng ta thay đổi mã BL hoặc DAL, chúng ta không cần phải biên dịch lại dự
án web vì chúng ta có các bộ khối vật lý riêng biệt.
Giải pháp:
Một dự án thư viện lớp chứa mã logic nghiệp vụ và truy cập dữ liệu.
Giải pháp:
Dự án ASP.NET Web có mã lớp trình bày trong các tệp ASPX và ASCX, trong
namespace, MyApp.Web (Tier1).
Tiers và Layers 5
6. Three Tier Model
Nếu dự án lớn, với nhiều logic nghiệp vụ phức tạp, thì việc tách BL và DAL để
chúng ta có thể thay đổi mã BL mà không thay đổi hợp ngữ DAL.
Có thể sử dụng một tổ hợp DAL khác cho một cơ sở dữ liệu khác với cùng một BL.
The solution:
ASP.NET Web Project having Presentation Layer coding in ASPX and ASCX
files, under namespace MyApp.Web (Tier 1).
A class library project DAL for data access code, with namespace,
MyApp.Code.DAL (Tier 3)
Tiers và Layers 6