Đỉnh NGUYỄN

life's a journey not a destination

3-Tier, 3-Layer, MVC: Ba mô hình kiến trúc phổ biến nhất

Leave a comment


Các ứng dụng hiện đại ngày
nay đều dựa trên 3 hướng tiếp cận kiến trúc phổ biến:

·        
3-layered
architecture

·        
3-tier
architecture

·        
Model-View-Controller
architecture

Tồn tại sự bối rối khi lựa
chọn 1 trong 3 hướng tiếp cận. Có thể xem 2 hướng tiếp cận đầu tiên
là giống nhau (xem Wikipedia).
Điều này có thể vì cả 3 hướng tiếp cận kiến trúc đều không trái
ngược nhau. Thật sự, hơi khó tìm được ứng dụng thuần 1 trong 3 mô
hình kiến trúc trên, phần nhiều là sự lai tạo & tùy biến kết
hợp với design pattern cho phù hợp.

3-Layered Architecture

Hướng tiếp cận này phân tách
ứng dụng thành các thành phần mang tính logic

·        
Presentation,
các form nhập liệu & kết quả trả lại

·        
Business,
còn gọi Domain Logic, trọng tâm các xử lý logic, nghiệp vụ.

·        
Data
Access, các thành phần lưu trữ & xử lý trên lưu trữ.

Mặc dù về mặt vật lý, các
layer không tồn tại như đã ủy thác, nhưng thực tế, kiến trúc này mang
lại khả năng duy trì (maintenance) & khả năng dùng lại (reusability).

Maintenance, bởi vì mỗi layer
gồm 1 tập các APIs (Presentation layer, APIs như WinForms hay ASP.NET,
Atlas, Data Access layer, có thể là ADO.NET, System.Xml, Business layer)

Reusability là khả năng có
thể thêm Presentation layer cho các thiết bị di động, thay đổi thành
phần lưu trữ dữ liệu bằng thành phần lưu dữ liệu khác hoặc Xml,
nhưng sự thay đổi 1 layer không ảnh hưởng đến các layer khác.

Thảo luận sâu hơn về 3-layered
architecture, gợi ý thêm quyển sách Enterprise Solution Patterns (MS
Pattern & Practices):

http://msdn.microsoft.com/en-us/library/ms978689.aspx

3-Tier Architecture

Theo hướng tiếp cận này, phân
chia ứng dụng thành các thành phần vật lý (physical)

·        
Client
(còn gọi Front-end, Channels), thống nhất trong 1 tập các phần cứng &
cơ sở hạ tầng phần mềm khác nhau – (nơi giao diện người dùng ứng dụng
được thi hành).

·        
Application
Server (còn gọi Middleware), một hoặc nhiều máy chủ, cụm máy chủ,
các yêu cầu máy Client được xử lý dựa trên HTTP, SMTP, SOAP hoặc các
dạng khác dựa trên XML,…)

·        
Back-end

Máy chủ ứng dụng đóng vai
trò chủ đạo tập trung các dịch vụ cấp thấp (truyền thông, bảo mật,…),
vì thế cho phép các channel khác nhau có thể truy cập vào các
enterprise back-end.

Hướng tiếp cận này mang tính
khả chuyển (Scalability), bảo mật tập trung (Centrelized Security) khả
năng quản lý lỗi (Fault Tolerance). Quyển sách giải thích rõ hơn hướng
tiếp cận này có cùng tên

http://msdn.microsoft.com/en-us/ms123402.aspx

Model-View-Controller

Hãy xem lại các mẫu kiến trúc
dựa trên hành vi tại Starting with Model/View/Controller (MVC) Architecture
Pattern (http://www.skyscrapr.net/blogs/solution/archive/2006/08/07/262.aspx)

·        
View,
mặc dù dường như là đề cập đến Presentation layer của 3-Layered
Architecture, hoặc Client của 3-Tier Architecture, View đơn thuần chỉ mang
presentation logic, không có thụ lý sự kiện

·        
Controller,
thành phần nhận hành động của Actors thông qua View và thúc đẩy sự
phản ứng của hệ thống theo cách được mô tả trong Use-Case.

·        
Model,
tượng trưng cho hệ thống, business entities và business rules

Kiến trúc này rất có ích
khi hiểu rõ và cài đặt giao diện người dùng hướng hành vi (sự
kiện). Một sự kết nối giữa kỹ thuật giao diện & business logic
với presistence mechanisms. Thảo luận sâu hơn tại

http://msdn.microsoft.com/architecture/default.aspx?pull=/library/en-us/dnpatterns/html/ArcThreeTieredDistribution.asp


Advertisements

Author: dinhnn

Senior software developer, a technical leader. You can be reached at via email to dinhnguyenngoc@gmail.com, via my blog at dinhnguyenngoc.wordpress.com, and on Twitter @dinhnguyenngoc.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s