2012-01-05 20 views
6

Tôi đã có thiết kế truy cập dữ liệu phân lớp hoạt động tốt. Nhưng tôi không biết nếu nó là thực hiện phù hợp nhất hay không.
tôi chỉ đơn giản muốn biết rằng các lớp BLL hoặc methots nên tĩnh hoặc họ nên được concreate các lớp học mà chỉ có một ví dụ?
Trong thời gian đó, tôi không cần phải tuần tự hóa các lớp BLL để sử dụng nó trong một thiết kế SOA như vậy. Nhưng tôi không biết những gì các tính năng sẽ mang lại.
Nhìn vào các tùy chọn sau:
đánh dấu các lớp BLL là tĩnh hay không?

  1. lớp BLL và methots là tĩnh lớp
  2. BLL không tĩnh nhưng methots của nó là tĩnh
  3. lớp BLL không tĩnh cũng không methots của nó. Ứng dụng nên tạo ra các lớp BLL inorder mọi lúc để truy cập vào các methots của nó.
  4. Các lớp học BLL không phải là tĩnh cũng như các loại methots của nó. Nhưng chỉ có một trường hợp của mỗi lớp BLL. Và ứng dụng sử dụng các trường hợp tĩnh này để sử dụng các methyl BLL.

Cái nào hiệu quả nhất trong hiệu suất và desing?

EDIT:

OPTION1

public static class BllCustomer 
{ 
    public static List<ModelCustomer> GetCustomers() 
    { 

    } 
} 

// usage 
BllCustomer.GetCustomers(); 

OPTION2

public class BllCustomer 
{ 
    public static List<ModelCustomer> GetCustomers() 
    { 

    } 
} 

// usage 
BllCustomer.GetCustomers(); 

Option3

public class BllCustomer 
{ 
    public List<ModelCustomer> GetCustomers() 
    { 

    } 
} 

// usage 
BllCustomer bllCustomer = new BllCustomer(); 
bllCustomer.GetCustomers(); 

Option4

public class BllCustomer 
{ 
    public List<ModelCustomer> GetCustomer() 
    { 

    } 
} 

// usage 
public static BllCustomer s_BllCustomer = new BllCustomer(); 
// whenever needed 
s_BllCustomer.GetCustomer(); 
+0

Tại sao mọi người nên khăng khăng không đưa ra ý kiến ​​cho vấn đề này, tôi đơn giản là không thể hiểu được. có thể, họ không thể nhìn thấy chủ đề này trong nhiều câu hỏi khác. vâng tôi đang nói chuyện với chính mình. – Fer

Trả lời

1

Serializing lớp Domain/BusinessLogicLayer của bạn có vẻ hơi bất thường như lớp miền của bạn thường giữ bạn quy tắc kinh doanh và logic xử lý phức tạp. Thông thường bạn sẽ muốn tuần tự hóa các lớp DataTransformation/POCO của bạn.

Sẽ có chênh lệch performance chênh lệch giữa các lớp/phương pháp tĩnh hoặc cụ thể. Tôi sẽ tránh xa các lớp và phương thức tĩnh cho bạn logic kinh doanh chính vì chúng có thể khó khăn để thử nghiệm/thử nghiệm đơn vị, cộng với không làm việc với các thùng chứa IoC. Vì vậy, với điều này trong tâm trí tôi sẽ khuyên bạn nên lựa chọn 3 như bạn đã giải thích nó. Ngoài ra còn có một số câu trả lời cực kỳ hữu ích được đăng here.

+0

cảm ơn ý kiến ​​của bạn. Bạn nghĩ gì về phương án 4? – Fer

+0

Khi đọc câu hỏi, điều đầu tiên tôi nghĩ đến là vấn đề với chế nhạo. Upvoted cho rằng và các thông tin về container IoC – Mike

0

Để có hiệu suất và dễ sử dụng, tùy chọn hai có ý nghĩa nhất. Tôi đang sử dụng tùy chọn 2 ngay bây giờ và không gặp phải bất kỳ sự cố nào. Hầu hết trong số họ chỉ chứa một dòng mà các cuộc gọi đến DAL và sau đó một dòng khác mà bản ghi với log4net. Hầu hết trong số họ không có nhiều logic kinh doanh trong họ.

Tôi đang sử dụng tính năng này với ASP.NET.

+0

bạn nói rằng bạn sẽ chọn tùy chọn 2. bạn nghĩ gì về sự khác biệt giữa tùy chọn 1 và lựa chọn 2? cả hai đều dễ sử dụng và tĩnh. tại sao không chọn tùy chọn 1 sau đó? – Fer

+0

Tôi không sử dụng tùy chọn 1 vì nó quá cứng nhắc. Với một lớp tĩnh, tất cả các thành viên của bạn phải tĩnh. Nó là điển hình hơn để có một lớp không tĩnh với các thành viên tĩnh hơn một lớp tĩnh. Bạn vẫn có thể tạo một cá thể với tùy chọn 2, nhưng bạn bị mắc kẹt với một lớp tĩnh với tùy chọn 1. Đi với những gì là dễ nhất. Ngoài ra, tùy chọn 1/2 không lý tưởng cho thử nghiệm đơn vị, nhưng nếu bạn không có nhiều trong các phương pháp đó, thì kiểm tra đơn vị là không cần thiết. Hầu hết logic của tôi là trong các thủ tục lưu trữ, phụ thuộc. –

0

Tôi đã xây dựng hệ thống cá nhân bằng nhiều kỹ thuật này. Cuối cùng tôi đã nhận ra rằng tôi đã quá thông minh bởi vì kỹ thuật đơn giản nhất thực sự là linh hoạt nhất.Nếu bạn bị cám dỗ để làm cho mọi thứ tĩnh bởi vì nó cảm thấy như công việc ít hơn và do đó 'hiệu quả hơn' sau đó bạn đang làm nó vì những lý do sai.

Tôi đề xuất KHÔNG làm cho lớp hoặc phương thức tĩnh. Lý do là tôi đã đi tìm các mẫu như DDD cùng với Dependency Injection (IoC) rất có giá trị. Ví dụ: bạn sẽ kiểm tra một số trang web hoặc mã ứng dụng tiêu thụ BLL này như thế nào? Thông thường, bạn sẽ muốn 'giả' BLL của bạn để nó trả về kết quả dự đoán được. Bạn sẽ có một thời gian khó làm điều này với các lớp tĩnh.

Các vấn đề liên quan