2010-04-03 35 views
0

我有另一個概念問題。假設我有一個數據層和一個Bussines層。我對例如客戶我的數據基礎,這些客戶有一個指定的供應商:我應該在哪裏排除和選擇BL或DL信息?

Customers(customerID, customerName, customerAddress, vendorID) 
Vendors(vendorID, vendorName, vendorAddress) 

現在假設我的供應商登錄到我的web應用程序,並希望看到他的所有客戶:

一)應該我使用我的數據層方法並在查詢中找到他的客戶?

b)數據層應該返回所有的客戶,並在供應商的Buissnes層過濾器?

B是一個很好的方法,因爲是我想用的....是正確的嗎?

在此先感謝!

回答

3

B是一個很好的方法,因爲是我想用的....是正確的嗎?

如果你想使用這種方法,你可以。

但是,這確實有一個潛在的巨大缺點。通過強制數據層返回所有客戶,並將其傳遞到業務層,您將爲每個客戶加載一個查詢,實質上,這可能只需要少數客戶。

這可能會顯着增加系統的資源使用情況。

如果您提供了一種業務層可以直接爲那些所需客戶查詢數據層的方法,那麼您會將查詢推送到數據庫中,並防止所有客戶在層之間加載和發送。這將更具可擴展性,因爲數據庫可以更好地處理這個查詢,並且不需要傳輸額外的「丟棄」數據。

2

如果你是做一個大的負荷死心塌地,我至少會與像慵懶/需求初始化模式去:

namespace BL 
{ 
    public class Vendor 
    { 
     private Dictionary<CustomerKey, Customer> customers; 
     public Dictionary<CustomerKey, Customer> GetCustomers(bool bDemandRefresh) 
     { 
      if (customers == null || bDemandRefresh == true) customers = DL.Customer.GetCustomersByVendor(vendorKey); 
      return customers; 
     } 
    } 
}