- Trang chủ »
- Code , SoftDesign »
- [SOFTWARE DESIGN] Thiết kế phần mềm theo mô hình 3 lớp Layer
Hướng tới lập trình chuyên nghiệp (nói cho oai chứ mình gà lắm) - không chỉ về mặt code , thuật toán ... mà bạn cần phải thiết kế phần mềm sao cho dễ chỉnh sửa , cập nhật nhất (nhất là đối với code team và bạn đã định hướng phát triển phần mềm lâu dài)
Hôm nay mình xin giới thiệu một cách thiết kế khá phổ biết là "MÔ HÌNH 3 LỚP LAYER"
1. Giới thiệu tổng quan
Như tên của mô hình. Chúng ta sẽ thiết kế phần mềm theo 3 lớp sau :
- GUI Layer : chuyên xử lí về GUI (giao diện)
- Business Layer : chuyên xử lí về nghiệp vụ, thuật toán....
- Data Access Layer : đưa dữ liệu xuống cơ sở dữ liệu cũng như lấy dữ liệu từ cơ sở dữ liệu lên
Ngoài ra chúng ta dùng thêm 1 class là : Data Transfer Object (DTO) có chức năng là cầu nối giữa các Layer. (Ta cũng có thể dùng các parameter để truyền dữ liệu , tùy nhiên nhiều parameters quá thì nên dùng tên class này)
2. Các bước thiết kế phần mềm theo mô hình 3 lớp layer
Bây giờ chúng ta cùng nhau thiết kế một phần mềm đơn giản nhé ^^
Để đơn giản ở đây tôi không dùng hệ quản trị cơ sở dữ liệu mà ghi dữ liệu ra file "Data.txt" (Coi như nó là DataBase đi :D -- File này sẽ chỉ ghi được 1 tài khoản thôi nhưng đây là ví dụ mà -- các bạn có thể áp dụng vào các hệ quản trị CSDL giống như vậy)
- Thiết kế một GUI như sau :
- Tạo các Folder vào các class như hình dưới đây :
(GUI Layer : frmRegister.cs | Business Layer : XuLi.cs | Data Access Layer : VanChuyenDuLieu.cs
và DTO.cs)
- OK Tiến hành code nhé :
** DTO.cs (Nơi đây chỉ chứa các biến vận chuyển) :
namespace MOHINH3LOPLAYER
{
public class DTO
{
private string _TaiKhoan;
private string _MatKhau;
public string TaiKhoan
{
set {_TaiKhoan = value;}
get {return _TaiKhoan;}
}
public string MatKhau
{
set {_MatKhau = value;}
get {return _MatKhau;}
}
}
}
**VanChuyenDuLieu.cs (Nơi đây chỉ có chức năng đọc/ghi dữ liệu xuống CSDL)
Ở phương thức GhiDuLieu tôi sẽ truyền vào đối tượng DTO
namespace MOHINH3LOPLAYER.Data_Access_Layer** XuLi.cs (Nơi đây chỉ có chức năng xử lí thuật toán)
{
public class VanChuyenDuLieu
{
public static void GhiDuLieu(DTO doituong)
{
FileStream fs = new FileStream("Data.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.None);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(doituong.TaiKhoan);
sw.WriteLine(doituong.MatKhau);
sw.Flush();
sw.Close();
}
}
}
namespace MOHINH3LOPLAYER.Business_Layer}
{
public class XuLi
{
private static bool KiemTra(DTO doituong)
{
if (doituong.TaiKhoan != "" && doituong.MatKhau != "")
return true;
return false;
}
public static bool DangKi(DTO doituong)
{
if (!KiemTra(doituong))
return false;
MOHINH3LOPLAYER.Data_Access_Layer.VanChuyenDuLieu.GhiDuLieu(doituong);
return true;
}
}
** Và cuối cùng là Xử lí nút "Đăng kí ở GUI" như sau :
// Tạo đối tượng DTO
private void btnDangKI_Click(object sender, EventArgs e)
{
DTO doituong = new DTO();
doituong.TaiKhoan = this.txtTaiKhoan.Text;
doituong.MatKhau = this.txtMatKhau.Text;
if (MOHINH3LOPLAYER.Business_Layer.XuLi.DangKi(doituong))
{
MessageBox.Show("Đăng kí thành công");
}
else
{
MessageBox.Show("Đăng kí thất bại");
}
}
- Thêm thuộc tính, sự kiện cho các điểu khiển trong winform
- [SOFTWARE DESIGN] Thiết kế phần mềm theo mô hình 3 lớp Layer
- Mời sử dụng Tool Import dữ liệu lên Wocommerce siêu tốc
- Mời tải về phần mềm tăng tương tác YouTube chỉ với 14k/tháng
- Bất đồng bộ với Entity Framework, tại sao không?
- Mời dùng thử phần mềm chuyển định dạng font chữ CF3
- Chú ý khi sử dụng ProgressBar
- Đóng gói phần mềm - Đặt tất cả thư viện liên kết động (DLL) vào 1 thư mục
- Tạo mã kích hoạt cho phần mềm
- Lấy IP của máy, địa chỉ IP và tên các máy trọng mạng nội bộ (LAN)
- Lỗi "operation is not valid due to the current state of the object"
- Gửi dữ liệu qua mạng với ThuVienWinform.Mang.GuiDuLieuNoiBo
- Các yêu cầu đóng gói phần mềm (có hoặc không có cơ sở dữ liệu)
- Chỉnh sửa thông báo DevExpress (XtraMessageBox)
- Thêm nút lên GridView của DevExpress bằng HyperLinkEdit
DTO đặt là Entity dễ hiểu hơn đấy nhỉ@!
ReplyDeletethanks
ReplyDelete