Mô Hình 3 Lớp Là Gì

      66
Do dạo gần đây mình đang làm về một trong những app desktop sử dụng quy mô 3 lớp, đề xuất mình sẽ lưu ý lại phần lớn điều cần chăm chú trong quy mô 3 lớp.

Bạn đang xem: Mô hình 3 lớp là gì

1. Quy mô 3 lớp là gì??

Khái niệm:

Mô hình 3 lớp hay có cách gọi khác là mô hình Three Layer(3-Layer), quy mô này ra đời nhằm mục tiêu phân chia những thành bên trong hệ thống, các thành phần cùng tác dụng sẽ được team lại cùng với nhau và phân chia công việc cho từng nhóm nhằm dữ liệu không bị chồng chéo cánh và chạy lộn xộ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 cai quản code cùng xử lý dữ liệu lỗi dễ dàng hơn.

Ưu điểm:

Phân loại ví dụ các lớp có các nhiệm vụ không giống nhau. Từ đó ta gồm thể cai quản và maintain project xuất sắc hơn.Dễ dàng phân các loại các hành động tại Business.Dễ dàng phân loại các hàm truy vấn xuất tại Database, phân nhiều loại hàm theo table,…Ứng dụng được cho những project to ở bên ngoài.…

Lưu ý khi xây dựng quy mô 3 lớp:

Cần một solution riêng cho project.Cần 3 project khác nhau để làm nên 3 lớp, thương hiệu Project đặt như sau:Lớp GUI: (VD: QuanLy_GUI)Lớp Business: (VD: QuanLy_BUS)Lớp Data Access: (VD: QuanLy_DAL)Lớp DTO: (VD: QuanLy_DTO)

2. Reviews về quy mô 3 lớp

*

Mô hình 3-layer gồm gồm 3 phần chính:

Presentation Layer (GUI)

Lớp này còn có nhiệm vụ đó là giao tiếp với những người dùng. Nó gồm các thành phần bối cảnh ( winform, webform, …) và tiến hành các quá trình như nhập liệu, hiển thị dữ liệu, bình chọn tính đúng mực dữ liệu trước khi gọi lớp Business xúc tích Layer (BLL).

Business súc tích Layer (BLL)Layer này phân ra 2 thành nhiệm vụ:

Đây là nơi thỏa mãn nhu cầu các yêu thương cầu thao tác làm việc dữ 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 cùng lưu xuống hệ quản ngại trị CSDL.Đây còn là nơi kiểm tra các ràng buộc, tính toàn diện và đúng theo lệ dữ liệu, thực hiện giám sát và đo lường và xử lý các yêu ước nghiệp vụ, trước khi trả hiệu quả về Presentation Layer.

Data Access Layer (DAL)

Lớp này có tác dụng giao tiếp cùng với hệ cai quản trị csdl như tiến hành các các bước liên quan đến lưu trữ và truy vấn dữ liệu ( kiếm tìm kiếm, thêm, xóa, sửa,…).

3. Các thành phần của từng lớp

Presentation Layer (GUI)

Có nhị thành phần chính tiếp sau đây với đều tác vụ cụ thể :

UI Components : gồm các thành phần tạo cho giao diện của ứng dụng (GUI). Chúng chịu trách nhiệm thu nhận với hiển thị dữ liệu cho người dùng… ví dụ : textbox, button, combobox, …UI Process Components : là thành phần chịu trách nhiệm quản lý các quá trình biến hóa giữa những UI… lấy ví dụ như : sắp đến xếp quá trình kiểm tra tin tức khách hàng:Hiển thị màn hình tra cứu giúp ID.Hiển thị màn hình thông tin chi tiết khách mặt hàng tương ứng.Hiển thị màn hình hiển thị liên lạc với khách hàng hàng.

Bussiness Layer (BLL)

Lớp này có 4 thành phần:

Service Interface : là thành phần đồ họa lập trình mà lại lớp này cung ứng cho lớp Presentation sử dụng.

Bussiness Workflows : chịu đựng trách nhiệm khẳng định và điều phối những quy trình nhiệm vụ gồm nhiều bước và kéo dài. Những tiến trình này nên được bố trí và thực hiện theo một thiết bị tự chính xác.

Xem thêm: Chia Sẻ Cách Hoàn Thiện Kiểm Tra Bảo Mật Facebook 2022, Xin Hãy Hoàn Thiện Kiểm Tra Bảo Mật

Bussiness Components : chịu trách nhiệm kiểm tra những quy tắc nghiệp vụ, ràng buộc xúc tích và ngắn gọn và triển khai các quá trình . Các thành phần này cũng tiến hành các dịch vụ mà Service Interface hỗ trợ và Business Workflows sẽ thực hiện nó.

Bussiness Entities : thường được áp dụng như Data Transfer Objects ( DTO ) . Chúng ta cũng có thể sử dụng để truyền dữ liệu giữa những lớp (Presentation với Data Layer). Bọn chúng thường là cấu trúc dữ liệu ( DataSets, XML,… ) hay những lớp đối tượng người tiêu dùng đã được tùy chỉnh.Ví dụ : chế tạo 1 class Student lưu giữ trữ các dữ liệu về tên, ngày sinh, ID, lớp.

Data Layer (DAL)

Data Access ngắn gọn xúc tích Components : phụ trách chính lưu trữ và truy xuất dữ liệu từ những nguồn tài liệu (Data Sources) như XML, file system,… không dừng lại ở đó còn tạo dễ dãi cho vấn đề dễ thông số kỹ thuật và bảo trì.Service Agents : giúp cho bạn gọi và liên tưởng với các dịch vụ từ bên ngoài một cách dễ ợt và đối chọi giản.

Để hiểu rõ hơn về cấu trúc và cách xây dựng của mô hình 3 lớp, họ cùng tham khảo một ví dụ về quy mô quản lí Uber gồm những lớp BUS, DAO, DTO, GUI ( Lớp GUI đã là phần chương trình chính).

*

Do ở đây mình lười phải mình gom lại thành các folder để dễ điện thoại tư vấn nhau :v (Nếu làm chính xác thì phải là tạo thành các project trong Solution new đúng)

Đầu tiên là GUI gồm những button, texbox, ... Mà người dùng sẽ liên quan với screen giao diện này.

*
*

Lớp DTO, chứa những dữ liệu được tạo ra dưới dạng lớp đối tượng. Từng một User đang mang hầu hết thuộc tính sau:

namespace UberManagerment_WPF.DTO{ public class account string name; string userName; string passWord; string telephone; string status; public string Name get => name; set => name = value; public string UserName get => userName; phối => userName = value; public string PassWord get => passWord; phối => passWord = value; public string Telephone get => telephone; set => telephone = value; public string Status get => status; set => status = value; //Hàm khởi sản xuất public Account() Name = ""; UserName = ""; PassWord = ""; Telephone = ""; Status = "0"; public Account(string Name, string UserName, string Password, string Telephone, string Status) this.Name = Name; this.UserName = UserName; this.PassWord = PassWord; this.Telephone = Telephone; this.Status = Status; Các nghiệp vụ xử lý chính sẽ tiến hành đặt sinh sống lớp BUS (hay là BLL) gồm những nghiệp vụ insert, update, delete,...

namespace UberManagerment_WPF.BUS public class List_Driver_BUS private static List_Driver_BUS instance; public static List_Driver_BUS Instance get if (instance == null) instance = new List_Driver_BUS(); return instance; public void ShowListDriver(DataGrid data) data.ItemsSource = List_Driver_DAO.Instance.ShowListDriver(); public void ShowListDriverMotobike(DataGrid data) data.ItemsSource = List_Driver_DAO.Instance.ShowListDriver_Motobike(); public void ShowListDriverCar(DataGrid data) data.ItemsSource = List_Driver_DAO.Instance.ShowListDriver_Car(); public void ShowListDriverTaxiCar(DataGrid data) data.ItemsSource = List_Driver_DAO.Instance.ShowListDriver_taxiCar(); Và ở đầu cuối là lớp DAO ( tốt là DAL ). Tầm nã vấn đến cơ sở dữ liệu

http://kitchencake.vnnamespace UberManagerment_WPF.DAO{ class List_Driver_DAO { private static List_Driver_DAO instance; public static List_Driver_DAO Instance get if (instance == null) instance = new List_Driver_DAO(); return instance; public menu LstDriver_Motobike get => lstDriver_Motobike; set => lstDriver_Motobike = value; public danh mục LstDriver_Car get => lstDriver_Car; set => lstDriver_Car = value; public các mục LstDriver_TaxiCar get => lstDriver_TaxiCar; phối => lstDriver_TaxiCar = value; public list LstTravel get => lstTravel; phối => lstTravel = value; public List_Driver_DAO() các mục lstTravel; private các mục lstDriver_Motobike; private danh sách lstDriver_Car; private menu lstDriver_TaxiCar; public danh mục ShowListDriver() string fileName = Static_Instance.directory + "\XML\data_Driver.xml"; danh mục lstDriver = new List(); LstDriver_Motobike = new List(); LstDriver_Car = new List(); LstDriver_TaxiCar = new List(); LstTravel = new List(); XmlDocument reader = new XmlDocument(); reader.Load(fileName); foreach (XmlNode node in reader.DocumentElement.ChildNodes) Driver_DTO driver = new Driver_DTO(); driver.Id = node<"ID">.InnerText; driver.Name = node<"Name">.InnerText; driver.UserName = node<"UserName">.InnerText; driver.PassWord = node<"Password">.InnerText; driver.Telephone = node<"Telephone">.InnerText; driver.Type_Driver = Static_Instance.checkTypeCar(node<"Type_Driver">.InnerText); string type = node<"Type_Driver">.InnerText; driver.Location_Driver = node<"Location">.InnerText; driver.Status = Static_Instance.checkStatus(node<"Status">.InnerText); Travell_DTO travell = new Travell_DTO(driver.Name, driver.UserName, driver.PassWord, driver.Telephone, driver.Status, driver.Id, driver.Type_Driver, driver.Location_Driver, "", "", "", DateTime.Now.ToString(), DateTime.Today.ToString()); LstTravel.Add(travell); lstDriver.Add(driver); if (type == "0") Driver_Motobike_DTO driver_Motobike = new Driver_Motobike_DTO(driver.Name, driver.UserName, driver.PassWord, driver.Telephone, driver.Status, driver.Id, driver.Type_Driver, driver.Location_Driver); driver_Motobike.Type_Driver = "Xe máy"; LstDriver_Motobike.Add(driver_Motobike); else if (type == "1") Driver_Car_DTO driver_Car = new Driver_Car_DTO(driver.Name, driver.UserName, driver.PassWord, driver.Telephone, driver.Status, driver.Id, driver.Type_Driver, driver.Location_Driver, int.Parse(node<"Slot">.InnerText)); driver_Car.Type_Driver = "Xe ô tô"; LstDriver_Car.Add(driver_Car); else Driver_TaxiCar_DTO driver_TaxiCar = new Driver_TaxiCar_DTO(driver.Name, driver.UserName, driver.PassWord, driver.Telephone, driver.Status, driver.Id, driver.Type_Driver, driver.Location_Driver, int.Parse(node<"Weight">.InnerText)); driver_TaxiCar.Type_Driver = "Xe xe hơi tải"; LstDriver_TaxiCar.Add(driver_TaxiCar); return lstDriver; //........................................................ //..............INSERT..............// //..............UPDATE..............// //..............DELETE..............// //........................................................Vậy là tôi đã mô phỏng xong xuôi cách cấu trúc một công tác sử dụng mô hình 3 lớp. Nếu tất cả sai sót thì mong mọi người góp ý thêm ạ.Cảm ơn các bạn đã đọc bài viết này.