Ứ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!
MicroboY said
hình như thiếu cái database thầy :D. QLKHO.mdb <<< ko thấy nó thầy ơi
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”.
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!!
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á.
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à
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
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é:
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!
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!
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
Thuan said
híc, sao lại delete bài của tôi chứ. cho tôi biết lý do với.
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
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!
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
vovanhai said
từ các object em xây dựng lại được đấy
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.
Võ Văn Hải said
Link download MDB ở đây.
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 ạ?
Võ Văn Hải said
Đây đâu phải MVC em.
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.
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
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 ạ ?
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.
blogIT_mrthiT said
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;
}
}
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.
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
Mickey said
Cái demo này của thầy 3 tiers hay là 3 layers thầy nhỉ?
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!
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ứ!
Dat Phat Vo 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???
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!
phamvanlinh2 said
cảm ơn thầy!
Phạm Linh Chi said
em cảm ơn thầy ạ.