Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

Ứng dụng mô hình 3-tiers trong C#

Giới thiệu:

Mô hình phát triển ứng dụng n-tiers, đặc biệt là 3-tiers được ứng dụng rộng rãi trong nghành công nghiệp phát triển phần mềm những năm gần đây. Tài liệu nghiên cứu về mô hình này đặc biệt rất nhiều. Ở đây tôi chỉ đưa ra 1 ví dụ ứng dụng nó vào 1 bài toán nhỏ, đơn giản về nhập xuất kho.

Ví dụ này bao gồm chi tiết tất cả các thành phần của 1 ứng dụng, kể cả phần triển khai.

Source code: 3Tiers_StandardSolution

Chúc các bạn may mắn!

33 Responses to “Ứng dụng mô hình 3-tiers trong C#”

  1. MicroboY said

    hình như thiếu cái database thầy :D. QLKHO.mdb <<< ko thấy nó thầy ơi

  2. meomap said

    Troi, xem cai mo hinh thoi chu, doi ca database la chi.
    nhin vao do ap dung cho nhung cai khac, dau the cung ngac nhu vay dc.
    Ban that la “ngoc”.

  3. dinh cong duan said

    em chào thầy ạh.thầy cho em hỏi cái fullsql.exe có kết nối được với sql2005 không ạh.em kết nối vào nó báo không kết nối được xin thầy chỉ giúp em ạh.Cảm ơn thầy trứơc ạh!!

  4. kallich said

    oái. Đây là Thầy Giáo à. Hình như hôm trước mình lỡ đắc tội. hì hì. Thầy giỏi quá.

  5. kallich said

    Tại sao phải cài BusinessLogicLayer, cái này chẳng qua cũng là “copy” của cái DataAccessLayer thôi. bỏ lên cho thằng Presentation làm luôn cũng được mà

  6. Van Doan said

    Thầy Hải oi! cho em xin cai db QLKHO.mdb trong 3Tiers_StandardSolution duoc ko ah? Em dang rat cần nó để tự học C# theo mô hình 3 tiers. Cố gắng giúp em nhe. Cảm ơn thầy rất nhiều! Thày gửi cho em theo dia chỉ này nhé: anhdoan2003@yahoo.com OR doanpv@edtech.com.vn

  7. xin database said

    Thầy Hải oi! cho em xin cai db QLKHO.mdb trong 3Tiers_StandardSolution duoc ko ah? Em dang rat cần nó để tự học C# theo mô hình 3 tiers. Cố gắng giúp em nhe. Cảm ơn thầy rất nhiều! Thày gửi cho em theo dia chỉ này nhé:

  8. xin thầy database QLKHO.mdb said

    Thầy ơi! Thầy có thể cho em xin cái db QLKHO.mdb trong 3Tiers_StandardSolution được không ạ? Em đang học C# và đang nghiên cứu cái cấu trúc này. Nếu được thì thấy giúp em với! Em cảm ơn thầy rất nhiều! Gmail của em là: huynguyenvan1011@gmail.com. Em rất mong nhận được hồi âm sớm nhất của thầy!

  9. Cho mình hỏi 1 chút? said

    Theo mình biết thì đây là 4-Tiers(DAL, ENT, BAL, PRESEN) chứ không phải là 3-Tiers(DAL, BAL, PRES). Các bạn có thể tham khảo 2 bài viết rất hay sau:
    http://www.dotnetfunda.com/articles/article18.aspx
    http://www.dotnetfunda.com/articles/article71.aspx
    Chúc các bạn thành công!

  10. Thuan said

    anh có thể chỉ cho em lỗi này được không.
    em làm theo project của anh mà nó hiển ra lỗi này.
    Error 1 Program ‘C:\Users\Thuan\Documents\Visual Studio 2008\Projects\qlbh\Entetities\obj\Debug\Entetities.exe’ does not contain a static ‘Main’ method suitable for an entry point Entetities

  11. Thuan said

    híc, sao lại delete bài của tôi chứ. cho tôi biết lý do với.

  12. vovanhai said

    Build lại đi bạn. nếu cần thiết thì xóa các thư mục bin, realease, obj đi và build lại

  13. vovanhai said

    Đâu thấy comment bị xóa nào đâu? Bạn gửi lại đi!
    Sorry vì sự bất tiện!

  14. Lan said

    em chào thầy!
    thầy ạ, thày có thể gửi cho cơ sở dữ liệu trong SQL của thầy được không ạ.
    Em mới tìm hiểu và học về cái này. Em rất cần xem để tham khảo.
    EM mong thầy giúp đỡ cho em.
    Em cảm ơn thầy nhiều.
    Mail của em là: maixanh88@gmail.com

  15. vovanhai said

    từ các object em xây dựng lại được đấy

  16. chucuoiit said

    Thầy cho em xin cái Database QLKHO.mdb với. Mail em là:chaulaode1257@yahoo.com.Cảm ơn Thầy nhiều.

  17. Võ Văn Hải said

    Link download MDB ở đây.

  18. hanh said

    Thưa thầy. Ở ví dụ này thì phần Controller và View đều nằm ở phần form phải ko ạ?

  19. Võ Văn Hải said

    Đây đâu phải MVC em.

  20. lehuyvan said

    Cái này hơi bị lẫn lộn giữa BusinessLogicLayer và DataAccessLayer.
    Đôi khi các function đặt không đúng chỗ giữ các tầng này. Chủ yếu tôi thấy hay bị nhầm trên lớp Business. Lớp Business chủ yếu xử lý các nghiệp vụ, các function [GetBy…] có thể đưa trực tiếp vào Business hoặc đưa vào Util class thì đúng hơn là để cả dưới DataAccess.

  21. califax said

    thầy ơi cho em hỏi trong mo hình 3 tier em muốn thêm dư liệu vào một view sao nó cứ báo lỗi là khóa của bạn ko đúng thầy giải thich cho em đoạn này đc không . Em cảm ơn thầy

  22. Hoàng Thị Nga said

    Thầy ơi, khi e dow bài trên của thầy về chạy visual studio 2010 thì nó ra mấy lỗi này ở trên khai báo thư viện, nó kéo theo lỗi rất nhiều ở trong bài như report…..
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Shared;

    E đã cố gắng Add Reference mà tìm hoài ko có thư viện nào hợp lý hết. Thầy có thể chỉ giúp chi tiết cho e được ko ạ ?

  23. Võ Văn Hải said

    Trong VS 2010 bạn phải download thêm cái gói Crystal riêng để cài đặt rồi mới chạy được. Để đơn giản bạn tạo 1 win app bình thường, sau đó thêm vào 1 crystal report. Nếu máy bạn chưa cài CR, nó sẽ hiện lên 1 trang web bảo bạn download. down về cài là OK.

  24. Thầy ơi cho em hỏi làm sao để xử lý lỗi tràn mảng này thầy!
    Code này là em viết cho xuất file excel từ storeprocedure, nếu 8 row thì nó chạy ok nhưng hơn thì nó bị báo lỗi” Index was outside the bounds of the array” ngay chỗ ItemArray[j] đó thầy nếu j=9 thì nó báo lỗi đó thầy. Mong thầy giúp đỡ! Xin cảm ơn thầy!

    if (m_dtbDL.Rows.Count > 0)
    {

    for (i = 0; i <= m_dtbDL.Rows.Count – 1; i++)
    {
    for (j = 0; j <= m_dtbDL.Rows.Count – 1; j++)
    {
    data = m_dtbDL.Rows[i].ItemArray[j].ToString();
    xlWorkSheet.Cells[i + 1, j + 1] = data;
    }
    }

  25. Võ Văn Hải said

    Try/catch nó là cách bèo nhất nhưng hữu hiệu nhất. Cách tốt hơn tý là kiểm tra độ lớn của mảng. Cách cuối cùng là khi code đảm bảo không bao giờ có việc tràn.

  26. Hà Thanh Mỹ said

    cảm ơn thầy hải rất nhiều với bài demo nay. em đã tìm hiểu rất nhiều về mô hình này nhưng em thấy của thầy rất dễ hiểu và em thấy hợp lý nhât.cảm ơn thầy rất nhiều

  27. Mickey said

    Cái demo này của thầy 3 tiers hay là 3 layers thầy nhỉ?

  28. UPhuong said

    Thầy cho em hỏi,thực hiện kết nối động với database: khi chép chương trình qua vị trí thư mục khác thì không phải xác
    lập lại đường dẫn thư mục file MS Access là như thế nào thưa thầy? Em rất cám ơn!

  29. Tiến Quang said

    Ơ, mình thấy các bạn có vẻ nhầm giữa 3-tiers và 3-layers nhỉ!? nếu viết theo 3 tầng DAL, BLL, PL(GUI) thì phải là 3-layers chứ!

  30. Lớp BLL thấy có vẻ thừa quá thầy ơi? Thầy giải thích chỗ này dùm em???

  31. Võ Văn Hải said

    “Lớp BLL thấy có vẻ thừa quá thầy ơi? Thầy giải thích chỗ này dùm em???”
    Không thừa đâu em. CHẳng qua do không biết cái nghiệp vụ chi bỏ vào cho nó đúng bản chất nó nên em thấy nó thừa.
    Trong kiến trúc 3-tiers của ms nó cho phép từ client gửi thẳng yêu cầu xuống DAL luôn đó.
    Chúc vui!

  32. phamvanlinh2 said

    cảm ơn thầy!

  33. Phạm Linh Chi said

    em cảm ơn thầy ạ.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.