PDA

View Full Version : Mọi người tư vấn giúp e sử dụng exception trong mô hình 3 lớp



thanhan1
28-04-2014, 16:46
Chào mọi người,

E đang code 1 project theo mô hình 3 lớp.E có vấn đề thế này

Trong form nhập liệu e bắt các lỗi như: trống dữ liệu, trùng dữ liệu ... ngay trên tầng giao diện( đưa ra các messageBox).Nhưng thầy e bảo làm thế ko đúng với ý nghĩ mô hình 3 lớp

Nếu làm trong 1 team mỗi người đưa ra 1 câu thông báo # nhau thì sao.Nên xử lý ở tầng business.E thấy cũng đúng

Nhưng e chưa biết thể hiện ở tầng BUL thế nào và khi lên form gọi exception đấy kiểu j

Mọi người có kinh nghiệm hoặc đoạn code ném ra exception sau đó gọi trong form giúp e với ạ.thanks mọi người !

nguyentupham
05-05-2014, 17:00
Bạn nên tham khảo mô hình này

View
Controller
Model


Controller se handle tất cả exception

single86
29-05-2014, 10:54
Bạn viết 1 function trong tầng bussiness thông báo lỗi. Khi gặp lỗi thì gọi hàm này ra. Mọi người đều gọi hàm này thì thông báo sẽ giống nhau thôi.

bienca101
31-05-2014, 09:55
Theo tinh thần mô hình 3 lớp thì business layer chứa business logic (làm gì, ở đâu, như thế nào), do đó business rules dĩ nhiên sẽ rơi phần lớn trong layer này. Validation thuộc về business rules vì lý do security và ... validation (đảm bảo cho dữ liệu của 1 business object hợp lệ, và tuân theo các business rules). Với những rules đơn giản như not empty, required, min, max,... thì tầng UI đã dư sức để validate, nhưng khi đi đến rule phức tạp (như người hút thuốc thì phải dùng gói bảo hiểm abc chẳng hạn) thì rõ ràng UI layer không phù hợp.

Khi mới bắt đầu, bạn có thể làm ở tầng business layer đơn giản như sau:



public abstract class BusinessObject
{
public abstract bool Validate();
}

public class Customer
{
public string Name {get;set;}
public DateTime DOB {get;set;}

public override bool Validate()
{
if (string.IsNullOrEmpty(Name)) throw new NullOrEmptyException("Name");
else if (DOB < MinAge || DOB > MaxAge) throw new InvalidAgeRange("DOB");
return true;
}
}


Trong đoạn code trên, BusinessObject là base class cho mọi business objects (entities), còn Customer là một entity ví dụ. Method Validate() dùng để kiểm tra mọi business rules liên quan tới business entity đó, nếu có rule nào không phù hợp thì quăng lỗi tương ứng.

Lưu ý đây chỉ là 1 ví dụ đơn giản và cơ bản. Khi bạn đi sâu hơn nữa, bạn sẽ thấy cách viết rules, exceptions cho business objects có rất nhiều vấn đề cần phải bàn và cũng có nhiều cách để thiết kế cho phù hợp.

Để tìm hiểu kỹ hơn, bạn có thể google "business object c#"

TuanAnh6869
13-06-2014, 09:11
E cũng đang nghĩ mô hình nầy thế nào ý