Tiers V Layers

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Tiers và Layers

Physical Separation và Logical Separation


Physical Separation Phân tách Vật lý) Logical Separation (Phân tách Logic)

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.

Sự khác biệt giữa Layers và Tiers?


1. Layers (lớp)
Thuật ngữ "layer" đề cập đến sự tách biệt logic của mã (logical separation of
code). Nó đơn giản là một tập hợp nhất quán các chức năng liên quan đến nhau.
Tổ chức ứng dụng theo các lớp là một cách để tổ chức mã nguồn của chúng ta tốt hơn.
Vì vậy, tính di động và khả năng bảo trì là những yếu tố thúc đẩy chúng ta sử dụng cấu
trúc này.
Thực tế, chúng ta có thể thấy ứng dụng của khái niệm này trong các kiến trúc khác
nhau, như Kiến trúc theo Lớp và Kiến trúc Hexagonal.
Ví dụ, dưới đây là biểu diễn của một kiến trúc theo lớp:

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

Mã UI, BL và DAL nằm trong một namespace duy nhất

Không có sự tách biệt giữa các lớp UI, BL và DAL

Ứ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

2. Single Tier - Two Layer Model


Vẫn chỉ có một dữ án web

Tách mã UI vào một namespace riêng, và mã BL, DAL vào một namespace khác.

Lúc này dự án ASP.NET Web có hai thư mụ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

3. Single Tier - Three Layer Model


Phân chia BL và DAL vào các namespace khác nhau:

Toàn bộ mã nguồn của giao diện người dùng sẽ được đặt trong namespace
MyApp.Web (Layer1).

Dự án duy nhất có thể có hai thư mục:

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.

4. Two tier Model


Tạo hai dự án:

Một dự án web thông thường cho mã UI.

Một dự án thư viện lớp (Class library) cho mã BL và DAL.

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:

Dự án ASP.NET Web chứa mã GUI và mã hiển thị (Tier 1).

Một dự án thư viện lớp chứa mã logic nghiệp vụ và truy cập dữ liệu.

5. Two Tier - Two Layer Model


Chia mã BL và DAL thành các namespace và class file riêng biệt của chúng.

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).

Một dự án thư viện lớp có hai thư mục (Tier 2):

Business: chứa mã logic kinh doanh, với namespace


MyApp.Code.Business (Layer 1).

DAL: chứa mã truy cập dữ liệu, với namespace MyApp.Code.DAL (Layer


2).

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.

Ứng dụng linh hoạt hơn

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 having business logic code, with namespace,


MyApp.Code.Business (Tier 2)

A class library project DAL for data access code, with namespace,
MyApp.Code.DAL (Tier 3)

Tiers và Layers 6

You might also like