Mô hình 3 lớp trong C#

Mô hình 3 lớp trong C#

  1. Tại sao cần dùng mô hình 3 lớp trong lập trình
  2. Mô hình 3 lớp trong lập trình là gì ?
  3. Vậy lợi ích mang lại từ mô hình 3 lớp khi làm phần mềm là gì ?
  4. Ví dụ code c# mô hình 3 lớp
  5. Video về mô hình 3 lớp code bằng C#

1. Tại sao nên sử dụng mô hình 3 lớp trong lập trình phần mềm

Bởi vì mô hình 3 lớp (Three Layer Model) mang lại RẤT NHIỀU lợi ích trong việc phát triển phần mềm.

Một ví dụ trong thực tế như sau:

Nếu bạn vào 1 siêu thị chỉ có 1 người duy nhất
B1: Khi bạn vào họ ra dắt xe, xong họ vào lựa hàng.
B2: Khi lựa xong bạn phải lấy hàng cho bạn
B3: Bạn tính tiền cho khách...

-> Bạn thấy tất cả công việc dồn vào 1 người duy nhất, như vậy siêu thị đó hoạt động vẫn được nhưng không hiệu quả.

* Suy ra: Trong phần mềm cũng vậy, nếu 1 phần mềm không ứng dụng mô hình 3 lớp thì vẫn chạy được, nhưng thường ít hiệu quả.

2. Mô hình 3 lớp trong lập trình là gì ?

Mô hình 3 lớp trong lập trình

(hình ảnh minh họa mô hình 3 lớp trong C#)

Mình ví dụ đơn giản nhất, viết 1 ứng dụng tính tổng 2 số a và b, sau khi tính tổng xong sẽ lưu giá trị a,b, tổng đến Database, thì code ở các tầng làm như thế nào ?

Presentation layer: đặt tên là UI
Businness Logic: đặt tên là BL
Data Access: đặt tên là DA

- Sau khi người dùng nhập số vào a,b click nút tính tổng ở UI, UI gởi giá trị ở ô a và b đến lớp BL (UI đã xong nhiệm vụ(
- Lớp BL nhận được số a,b
   + Sau đó tính toán tong=a+b
   + Gởi a,b,tong sang lớp DA.
- Lớp DA nhận được a,b,tong đồng thời gởi giá trị 3 biến này đến Database. 

 * Câu hỏi ?: 1 ứng dụng nhỏ vậy mà làm sao phải chia nhiều class vậy ?
 * Trả lời: đó là mình ví dụ đơn giản nhất để bạn hiểu được mô hình 3 lớp nhé.
 

3. Vậy lợi ích mang lại từ mô hình 3 lớp khi làm phần mềm là gì ?

Phân chia trách nhiệm rõ ràng

Trách nhiệm rõ ràng giữa những thành viên cùng tham gia dự án hay nếu dự án 1 mình bạn làm thì nó chia nhỏ nghiệp vụ thành các công đoạn riêng giúp tư duy rành mạch dễ dạng code dự án phần mềm đó.

Công đoạn xử lý ở mô hình 3 lớp trong lập trình được chia cụ thể là:
        Giao diện: Xử lý giao diện người dùng (UI) và các tương tác với người dùng.
        Business Logic (BLL): Chứa các logic nghiệp vụ của phần mềm, ví dụ như tính tồn kho, công nợ...
        Data Access Layer (DAL): Chịu trách nhiệm giao tiếp dữ liệu truyền tới từ BLL và gởi chúng đến cơ sở dữ liệu.
       * Ý nghĩa việc chia rõ ràng đó là giúp coder tư duy khâu nào ra khâu đó, tránh chồng chéo nhiệm vụ

Dễ bảo trì và mở rộng phát triển (Maintainability and Scalability)

    Khi các thành phần được tách riêng, bạn có thể sửa đổi hoặc mở rộng một phần mà không ảnh hưởng trực tiếp đến các phần khác.
    Ví dụ: Khi phần mềm xong, khách hàng muốn thay đổi màu sắc, kiểu cách giao diện thì chỉ việc sửa ở tần giao diện.

Dễ dàng kiểm thử (Tester)

    Khi kiểm thử phần mềm chúng ta chỉ cần nạp các tham số đầu vào của tầng Business Logic (BLL), Data Access Layer (DAL).
    Điều này giúp đảm bảo chất lượng phần mềm tốt hơn và giảm thiểu lỗi.
 

 Tái sử dụng mã nguồn

Nhiều giao diện có thể sử dụng 1 chức năng của 1 Business Logic (BLL), giúp trành việc code đi code lại, làm mà nguồn dư thừa nhưng cùng xử lý 1 chức năng.

4. Ví dụ code c# mô hình 3 lớp

Mô hình 3 lớp trong lập trình

Presentation Layer, Business Logic Layer (BLL), và Data Access Layer (DAL).
Ví dụ Mô Hình 3 Lớp 

  class Program
    {
        static void Main(string[] args)
        {
            UI_Tong ui = new UI_Tong();
            ui.XuLy();
            Console.ReadLine();
        }
    }
    //PresentationLayer
    class UI_Tong
    {
        public void XuLy()
        {
            int a, b;
            Console.Write("Nhap a:");
            a = Convert.ToInt16(Console.ReadLine());
            Console.Write("Nhap b:");
            b = Convert.ToInt16(Console.ReadLine());
            //
            BL_Tong BL_obj = new BL_Tong();
            BL_obj.input.a = a;
            BL_obj.input.b = b;
            BL_obj.XuLy();
            Console.Write("Tong: " + BL_obj.input.Tong);
        }
    }

    //BusinessLogicLayer
    class BL_Tong
    {
        public DA_Tong input = new DA_Tong();
        public void XuLy()
        {
            input.Tong = input.a + input.b;
            // save Database
            input.save();

        }
    }
    //DataAccessLayer
    class DA_Tong
    {
        public int a { set; get; }
        public int b { set; get; }
        public int Tong { set; get; }
        private string connectionString = "your_connection_string_here";
        public void save()
        {
            //...
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                 string save_sql ="Insert tbTong(a,b,tong) Values({0},{1},{2})";
                 save_sql =String.Format( save_sql , a,b,tong);
                 SqlCommand querySave = new SqlCommand(save_sql );
                 querySave .ExecuteNonQuery();
            }
        }
    }


Giải Thích

    Data Access Layer (DAL): Xử lý việc kết nối cơ sở dữ liệu và truy vấn dữ liệu.
    Business Logic Layer (BLL): Xử lý logic nghiệp vụ và gọi DAL để lấy dữ liệu.
    Presentation Layer: Lớp giao diện người dùng, có thể là giao diện console, WinForms, hoặc web.

Bạn có thể mở rộng mô hình này để phù hợp với yêu cầu của ứng dụng thực tế, chẳng hạn như sử dụng thêm các phương thức để thêm, cập nhật, hoặc xóa dữ liệu.

Tóm lại: mô hình 3 lớp nó như là 1 kỹ thuật code, bạn vận dung sao cho linh hoạt trong quá trình code nhé.

5. Video về mô hình 3 lớp code bằng C#

Mời bạn tham khảo các danh sách video chia sẽ kinh nghiệm mô hình 3 lớp trong C#

Tìm kiếm: tai sao can dung mo hinh 3 lop trong lap trinh;mo hinh 3 lop trong lap trinh la gi ?;vay loi ich mang lai tu mo hinh 3 lop khi lam phan mem la gi ?;vi du code c# mo hinh 3 lop;video ve mo hinh 3 lop code bang c#;

Mô hình 3 lớp trong C#