0

在下面的僞代碼中,我有3層:用於ASP.NET WebForms應用程序的UI,BL和DL。 有人可以給我一些關於爲什麼我需要在這裏使用依賴注入 和Unity的指針嗎?我使用的接口很多(主要用於第三方組件,比如Mail或File Parsers,所以我可以在不更改其他層的情況下根據需要替換它們),但我不明白爲什麼我應該在EF EntityObjects上使用接口。我似乎無法在網絡上找到一個能夠顯示超出理論不真實情況的實際優勢的例子。在我的示例中一般使用Unity應用程序塊或DI的好處是什麼

namespace Sample.ASP.NET.UI 
{ 

    using Sample.ASP.NET.BusinessLayer; 
    using Sample.ASP.NET.DataModel; 

    protected class AspxCodeFile 
    { 
     protected Page_Load() 
     { 
      GridView.DataSource=BusinesLayer.Products.GetProductsAsList(); 
     } 
    } 
} 

namespace Sample.ASP.NET.BusinessLayer 
{ 
    using Sample.ASP.NET.DataModel; 

    protected class Products 
    { 
    public static List<Product> GetProductsAsList() 
    { 
     EdmxEntities DB=new EdmxEntities(); 
     return DB.Products.ToList<Product>(); 
    } 
    } 
} 

namespace Sample.ASP.NET.DataLayer 
{ 
    // wrapper namespace for Entity Framework designer 
    // generated code off SQL Server 2008 database 
    // where one of the tables is called Products 
    // and designer created Product EntityObject 
    // this Product entity is referenced in both 
    // UI and BL. 
} 

回答

0

在你的情況下,你顯然不需要它。當需要注入依賴關係並將其替換爲其他實現時,人們使用依賴注入 - 最常見的原因是自動測試和模仿/僞造/存根依賴。另一個原因是動態行爲。

0

除了拉吉斯拉夫提出的幾點,有幾個人: -

  1. 您可以使用統一裝飾用橫切關注點的方法和類(在Unity這些被稱爲行爲)。你可以在任何地方使用的行爲,但我已經使用這個與EF做的事情,如: -

    • 自動創建/保存/你的對象的清理上下文
    • 的例如自動緩存的方法調用時間參考數據
    • 記錄找上了DAL
  2. 略多於設計相關的性能瓶頸,但使用依賴倒置原則,您可以更加鬆散耦合系統,以便例如您的用戶界面不會引用業務層(並且可能完全根據您如何生成實體來從EF中分離出來)。

相關問題