-Mô hình 3 lớp hay còn được gol là mô hình Three Layer3- Layer, mô hình này ra đời nhằm phân chia các thành phan trong hệ thống, các thành phần cùng chức năng sẽ được nhóm lại với nhau v
Trang 1DAI HOC QUOC GIA TP HCM
TRUONG DAI HOC CONG NGHE THONG TIN
Trang 2BANG PHAN CONG THUC HIEN
Demo Chỉnh sửa nội dung Góp ý Demo Góp ý Dem
Trang 3M6 hinh 3 lớp là gì
._ Cách hoạt động
.- Ưu điềm và nhược điềm
Phan biét 3-tier va 3-layer
Cac thanh phần của mô hình 3 lớp - - - - « 5-«-secse s2 2.1 _ Presentation Layer c cào cà cà, 2.2 Busimess Logic Layer cà cà cà 2.3 Data Access LAyCT cu cuc cà nn nh be nàn bàn khe Hàn
So sánh mô hình 3 lớp và MVC
Demo
Trang 41 Mô hình 3 lớp là gì ?
-Mô hình 3 lớp hay còn được gol là mô hình Three Layer(3- Layer), mô hình này ra đời nhằm phân chia các thành phan trong hệ thống, các thành phần cùng chức năng sẽ được nhóm lại với nhau và phân chia công việc cho từng nhóm đề dữ liệu không bị chồng chéo
và nhất quán
-Mô hình này phát huy hiệu quá nhất khi bạn xây dựng một hệ thông lớn, việc quản lý code và xử lý dữ liệu lỗi dễ dàng hơn
Presentation Layer
Business Logic Layer
Data Access Layer
— Business Logic Layer (BLL) : Layer nay phân ra 2 thành nhiệm vụ :
Trang 5¢ Day la noi dap img cac yéu cau thao tac dit liệu của GUI layer, xử lý chính nguồn dữ liệu từ Presentation Layer trước khi truyền xuống Data Access Layer
và lưu xuống hệ quản trị CSDL
® - Đây còn là nơi kiểm tra các ràng buộc, tính toàn vẹn và hợp lệ dữ liệu, thực hiện tính toán và xử lý các yêu cầu nghiệp vụ trước khi trả két qua vé Presentation Layer
— Data Access Layer (DAL) : Lop nay co chute nang giao tiếp với hệ quản trị CSDL như thực hiện các công việc liên quan đến lưu trữ và truy vấn dữ liệu ( tìm kiếm, thêm, xóa, sửa, )
Trang 62.1 Presentation Layer (GUD:
Có hai thành phần chính sau đây với những tác vụ cu thể :
® UI Components : gồm các thành phần tạo nên giao diện của ứng dụng (GUI)
Chúng chịu trách nhiệm thu nhận và hiển thị dữ liệu cho người dùng
® ULIProcess Components : là thành phần chịu trách nhiệm quản lý các quá trình chuyên đôi giữa các UL
2.2, Bussiness Layer (BLL) :
Lớp này gồm 4 thanh phan:
° Service Interface : là thành phần giao diện lập trình mà lớp này cung cấp cho lớp Presentation str dung
° Bussiness Workflows : chịu trách nhiệm xác định và điều phối các quy trình nghiệp vụ gồm nhiều bước và kéo dài Những quy trình này phải được sắp xếp
và thực hiện theo một thứ tự chính xác
° Bussiness Components : chịu trách nhiệm kiểm tra các quy tắc nghiệp vụ, ràng buộc logic và thực hiện các công việc Các thành phần này cũng thực hiện các dịch vụ mà Service Interface cung cấp và Business Workflows sẽ sử dụng nó
Trang 7° Bussiness Entities : thuong duoc su dung nhu Data Transfer Objects ( DTO ) Bạn có thê sử dụng đề truyền dữ liệu giữa các lớp (Presentation và Data Layer) Chúng thường là cầu trúc dữ liệu ( DataSets, XML ) hay các lớp
đối tượng đã được tùy chỉnh
2.3 Data Layer (DAL) :
DAL có chức năng chính là ghi lại các dữ liệu quan trọng Vì thế mô hình có 2 phần là:
® Data Access Logic Components : chiu trach nhiệm chính lưu trữ và truy xuất dữ
liệu từ các nguồn dir higu (Data Sources) nhu XML, file system, Hon ntra con
tao thuận lợi cho việc dễ cầu hình và bảo trì
® Service Agents : giup bạn gọi và tương tác với các dịch vụ từ bên ngoài một cách dễ dàng và đơn giản
Kinh nghiệm khi xây dựng mô hình 3 lớp là bạn cần thành lập một solution riêng cho project Trong do co 3 project khac nhau dé tạo 3 lớp Thực hiện đặt ten Project can có các tiên tô theo mầu Tên lớp Tên tệp (Ví dụ: GUI_ Quản lý)
Tuy nhiên, để đảm bảo sự thống nhất bạn nên đặt tên theo nguyên tắc Dưới đây là một số cách đặt tên cho các thành phân của 3 lớp, Ví dụ:
© Một là, đặt lần lượt tên GUI - BUS - DAL
® - Hai là, sử dụng tên có chứa tiên tô GUI - BLL - DAL - DTO
® - Ba là, áp dụng tên có chứa GUI - BLL - DAL
3 Cách hoạt động
Trang 8Business Logic Layer
- Người sử dụng tác động lên GUI yêu cầu hiện thị thông tin lên man hinh Tai day GUI
sẽ kiểm tra yêu cầu của người dùng nhập có hợp lệ hay không, nếu không hợp lệ sẽ thông báo cho người dùng
- Ngược lại yêu cầu sẽ được gởi trực tiếp đến BLL hoặc thông qua lớp object DTO hỗ trợ luân chuyên , tại đây BLL sẽ xử lý nghiệp vụ về yêu cầu của người dùng, nêu yêu cầu không hợp lệ hoặc tự xử lý yêu câu không cần phải truy vấn thì BLL sẽ gởi thông tin về GUI va GUI sé hién thi két qua cho người dùng
- Trong trường hợp BLL cần thao tác trên dữ liệu từ CSDL thi BLL sẽ gởi yêu cầu đến trực tiệp đến DAL hoặc thông qua DTO,, nhờ DAL giao tiếp với hé quan tri CSDL lây hoặc thêm, xóa, sửa dữ liệu
- DAL sẽ giao tiếp hệ quản trị CSDL với các truy vẫn (sử dụng công nghệ ADO, LINQ to SQL, NHibernate, Entity Framework)
Tại đây tiếp tục thực hiện tiến trình thứ 2 được biểu diễn bằng các mũi tên màu xanh:
Trang 9- Sau khi DAL thực hiện giao tiếp, hệ quan tri CSDL sé tra kết quả truy vấn về DAL, DAL sẽ gởi thông tin về dữ liệu vừa lấy trực tiếp sang BLL hoặc thông qua DTO xử lý tiếp nghiệp vụ với yêu cầu đã gởi từ trước, sau khi xử lý xong nghiệp vụ, BLL sẽ gởi thông tin đến GUI , GUI sẽ hiển thị thông báo và kết quá yêu cầu lên màn hình VD: Mô tả hoạt động của mô hình 3-layer với ứng dụng liệt kê danh sách điểm sinh viên:
Từ màn hình form quản lý sinh viên gồm có l combobox chọn lớp, | gridview dé hién thi
danh sách sinh viên và L button đề thực hiện lệnh liệt kê danh sách
- Người dùng chọn combobox lớp trên GUI và ấn button liệt kê
- GUI kiểm tra yêu cầu chọn combobox hợp lệ và gởi mã lớp (**) vừa chọn sang BUS xử
ly yêu cầu hiên thị danh sách điệm sinh viên
- Tại BUS vì yêu cầu từ GUI khả đơn giản nên BUS sẽ không xử lý gì mà sẽ gởi mã lớp sang DAL lay danh sách điểm
- Tại DAL sau khi đã nhận được yêu cầu lấy danh sách điểm từ mã ae DAL sé tuong tac voi hé quan tri CSDL qua cac Iénh mo tap tin, kết nối, truy vấn, đề lấy được danh sách điểm với mã số yêu cầu, DAL tiếp tục gởi danh sách (**) này sang BUS dé xt ly
- Tại BUS sau khi nhận được danh sách điểm từ DAL gởi sang, BUS thực hiện nghiệp vụ của mình bằng cách tính điểm trung bình, kết luận đậu/rớt của từng sinh viên (tất cả xử lý
về mặt nghiệp vụ), sau đó gởi danh sách điểm đã xử lý (**) sang GUI đề hiền thị
- 1 lần nữa GUI có thẻ kiểm tra tính hợp lệ của dữ liệu và hiển thị thông tin và thông báo
lên màn hình cho người dùng
Một số câu kinh nghiệm khi sử dụng:
- Các thao tác trên control như: kiểm tra nhập hợp lệ, ấn hiện các control, và các xử lý
thông tin trên control thi ta dat cac ham xu ly ngay trên GUI
- Cac thao tac trén cac dir gu co ban nhu: List, Array List, Object, DataTable, string, int, long, floai, ta xử lý ngay chính tâng nghiệp vụ BUS, vi ban chat khi thay đổi hệ quản trị hay các platform thì BUS không thay đôi
- Các thao tác với CSIDL như truy vấn, kết nối, đóng kết nối, ta xử ly trong DAL
- Khi cé nhu cau thay d6i hé quan tri CSDL, ta chi cần thay đối DAL phù hợp với hệ quản
tri mdi, gitr nguyén BUS, GUI va build lai project
- Khi có nhu cầu chuyên đổi qua lại giữa ứng dụng web forms hoặc win forms ta chỉ cần thay GUL, gitr nguyén DAL,BUS va build lai project
Trang 104 Ưu điểm và nhược điểm của mô hình 3 lớp
Đây là mô hình được các nhà lập trình tin hoc tin dùng bởi sở hữu nhiều ưu điểm như:
Việc phan chia thành từng lớp với các nhiệm vụ khác nhau sẽ mang lại hiệu quả quan ly tường minh Khi chúng đảm nhận các chức năng riêng biệt khác nhau sẽ giảm sự kết dính
Những người có kinh nghiệm lập trình thường áp dụng trong kiểm soát giao diện, xử lý, truy vấn, Hạn chế tối đa việc đề tất cả lại một chỗ nhằm quản lý và maintain project tôi
ưu hơn
Dễ dàng phân loại các hành động tại Business sẽ góp công lớn trong công tác bảo trì Khi được phân chia thành từng nhóm, lập trình viên có thể nhanh chóng thay đối khi cần bảo trì một thành phần của hệ thống
Với mô hình 3 lớp, thao tác thay đôi dữ liệu có thể được cô lập trong I lớp hoặc chỉ anh hưởng đến lớp gần nhất Điều đó đảm bảo không ảnh hưởng đến cả chương trình, tiết kiệm thời g1an công sức
Thao tác phân loại các hàm truy xuất tại Database hay phân loại hàm theo table, Chúng
sẽ trở nên dễ dàng vì chúng ta đã có chuân đề tuân theo
Nhờ có mô hình thì việc muốn thêm một chức năng nào đó sẽ dễ dàng hơn
Khi có sự thay đổi giữa hai môi trường từ Winform sang Webform Và bạn mong muốn tái
sử dụng thì chỉ việc thay đôi lớp GUI
Nếu mọi người đều tuân theo một quy chuẩn đã được định sẵn, thì khi bàn giao công việc trở né dé dang va tiét kiệm thời gian Các thành viên có thể tương tác thuận tiện
Mô hình quản lý 3 lớp sẽ hỗ trợ phân phối nhiệm vụ, khôi lượng công việc rõ ràng Đồng
thời, nó sẽ giúp các lập trình viên kiêm soát công tác
Với những ưu điểm tuyệt vời, mô hình cho phéo áp dụng được cho nhiều project lớn ở bên ngoài
Trang 11se Diễm giống nhau:
o_ Cả hai đều là mô hình kiến trúc áp dụng trong lập trình được tách thành 3
o_ Khác biệt rõ nhất là cách xử lý yêu cầu (workflow) của 2 mô hình
o_ 3 Layer thường được sử dụng trong lập trình ứng dụng, trong khi đó MVC được ưu chuộng nhiều trong lập trình website vì tính linh hoạt và không bắt
buộc các DTO như 3-Layer
Trang 12Information | | Present
Presentation layer Interacts with users
Data Access Layer
Access data from the database
Trang 13=
Business logic i
Trang 14
có thể có nhiều layer
- Khi dùng từ layer, chúng ta nói tới việc phân chia ứng dụng thành các thành phan một cách logic theo chức năng hoặc theo vai trò, điều nay giup phan mềm của bạn có cấu trúc sáng sủa, dễ dùng lại, từ do giúp việc phát triển và bảo trì dé dàng hơn Các layer khác nhau khi được thực thị van co thé nam trong cung mot vung bộ nhớ của một process, và hiển nhiên việc giao tiếp giữa 2 layer có thê không phải là giao tiếp giữa 2 process, đồng nghĩa với việc chúng không liên quan tới mô hình client/server
- Trái lại, tier liên quan đến cách phân chia một cách vật lý các thành phần trên các máy tính khác nhau Điều làm nhiều người nhằm lẫn giữa layer và tier là chúng có cùng cách phan chia (presentation, business, data), tuy nhién trên thực tế chúng khác nhau Vì cách phân chia như trên nên | tier có thể chứa nhiều hơn | layer
7 Demo
Như các bạn đã nhìn tại sơ đồ ở trang 1 thì Mô hình 3 lớp hoạt động như sau:
GUI liên kết tới dc Business Layer và DTO
Business Layer liên kết tới được Data Access và DTO
Data Access chỉ liên kết tới DTO
Trang 15Bây giờ chúng ta bắt đầu tạo, déi voi 3 Project DTO, Business va Data Access chung ta tao theo Class Library
Add New Project ? Xx
Ð Recent ,NET Fremework4 ~ Sort by: Defeult - Search installed Templates (CtrleE) /2~
4 Installed
F Windows Forms Application Visual C# Type: Visual C#
4 Visual C# A project for cresting a C# class library
4 Windows F1 WPF Application Visual C# (a1)
Universal
> Windows & a Console Application Visual C#
Classic Desktop
Web 5 Shared Project Visual C#
Cloud oy Class Library (Portable for iOS, Android and Windows) Visual C#
Trang 16Solution Explorer Team Explorer
Và bây giờ chúng ta sẽ liên kết, làm project GUI trước nhé Đầu tiên ta chọn chuột fäi vào References => Add Reference
4 {cs} GUI_Quanly
> /# Properties
Add Reference
Add Service Reference
7 Add Connected Service
Trang 17Reference Manager - GUI_Quanly ? x
> Assemblies Search Projects (Ctrl+E) P|]
Sohation = Gal cole SnaipastooisA2: TEEN
Làm tương tự đối với BUS va DAL theo bén trén
Thê là đã liên kêt xong cho mô hình 3 lớp
Trang 18C# - Mô hình 3 lớp đơn giản — Xây dựng mô hình 3 lớp: Xây dựng DTO
Cơ sở dữ liệu:
CSDL sẽ xài table ThanhVien như sau:
CREATE TABLE THANHVIEN (
Tv_ID INT NOT NULL PRIMARY KEY IDENTITY,
TV_NAME NVARCHAR(30) NOT NULL,
TV_PHONE VARCHAR(11) NOT NULL,
TV_EMAIL VARCHAR(50) NOT NULL
Xay dung DTO
Minh sé tao file DTO_ThanhVienfics (Class file), vé co ban thi các cột của table ThanhVien của mình ra sao thì mình tạo 1 class y hệt vậy kèm get/set
private int _THANHVIEN_ID;
private string _ THANHVTEN_NAME;
private string _ THANHVTEN_PHONE;
private string _ THANHVTEN_EMAIL;
Trang 19public string THANHVIEN_NAME
Trang 20public DTO_ThanhVien(int id, string name, string phone, string
Điều quan trọng đầu tiên, chúng ta cần tạo class DBConnect.cs với nội dung như sau: using_SystemfiDatafiSqlClient;
Ỳ
Chúng ta sẽ tạo SqlConnecfion và khởi tạo luôn, sau này các class DAL, ta chỉ cần kế thwra class DBConnect là có thê sử dụng _conn không cân khởi tạo lại
Phải sửa lại connection string chuẩn
Ta sẽ tạo file DAL_ThanhVien.cs (Class file)
Ở đây minh sé lam san luén 4 methods la: Lay tất cả, Thêm, Xóa, Sửa
Trang 21tvfiTHANHVTEN_NAME, tvfiTHANHVTEN_PHONE, tvfiTHANHVTEN_ EMAIL);
SqiCommand cmd = SqiCommand(SQL, _conn);
(cmdfiExecuteNonQuery() > 0) true;
(Exception e)
Trang 23// Command (mac dinh command type = text nén chung
ta khỏi fải làm gì nhiều)fi
Trang 24C# - Mô hình 3 lớp đơn giản —- Xây dựng mô hình 3 lớp: Xây dựng Business Bước này là bước xử lý business logie (Business layer)
Ở bước này, ta có thê lấy dữ liệu từ DAL, về, xử lý ABC XYZ gì đó rồi trả về lại
cho GUI sử dụng Hoặc khi update dữ liệu trên DB, GUI gửi data lên BUS và rồi ta xử
lý ABC XYZ gì đó cho data của chúng ta, rồi mới insert/update/delete chăng hạn,
Vi app minh build la app đơn giản, nên mình chỉ cần gọi lên DAL va tra về tương ứng cho GUI xải thui
Minh sẽ tạo BUS_ ThanhYVien.cs (Class ñle):
namespace BUS QuanLy
public class BUS ThanhVien
: DAL_ThanhVien dalThanhVien = new DAL _ThanhVien();