2009-02-27 39 views
2

比方說,我有一個這樣的方法在我的業務層:哪個層應該說域模型?

// This is in the business layer 
public Result DeleteSomeDomainObject(????) 
{ 
    //Enforce business logic here. 

    //Delete records in the database 
    DAL. DeleteSomeDomainObject(???) 
} 


// This is in the data access layer 
public Result DeleteSomeDomainObject(????) 
{ 
    // Delete records from the database.  
} 

如果這些方法都將域模型的實例或者只是主鍵?

回答

2

我經常與此糾纏。我通常說你的業務/服務層應該將域對象作爲參數。

如果我們在說網絡,你的網絡層將有ID。它可能會從服務層實例化或檢索對象的一個​​實例。所以把它傳遞給你的服務層是有意義的。

但是,通常有時候你最終會重複檢索對象。有時候你的服務會加載一個對象,因爲一些額外的數據沒有被捕獲到web層中。我甚至有時候數據訪問層必須加載依賴對象。緩存可以解決其中一些問題,重新構建數據/模型可以修復其他問題。當然。但有時候,考慮到性能或其他問題,傳遞身份證只是更有意義。

總而言之,更願意將域對象傳遞給業務層。但是要意識到,由於其他原因,您最好傳遞身份證,而且不幸的是,您的規則需要例外。

1

凡是合理的地方,將策略與實施分離是合理的。我會說,如果你打算使用某種ORM,傳遞你的業務對象的實例。

相關問題