2017-01-09 37 views
1

我一直在試圖更多地瞭解鮑勃叔叔的乾淨架構從博客,文章和視頻。清潔架構:順序流在框架

如果我在這個架構中使用一個數據庫,那麼又該UI(作爲一個框架,如網頁或表格)瞭解數據庫?或者更一般地說,數據應該如何在同一層中的兩個或多個部分/部分之間流動?

例如,UI會跟我的適配器(一個或多個)/網關(S)與業務實體交互。對於讀/寫,我可以看到UI可以調用任何可以訪問數據庫的類/類,並傳入適配器/網關,以便它可以與業務實體交互。

public class SomeUI 
    { 
     public static void Main(string[] args) 
     { 
      SomeAdapter adapter = new SomeAdapter(); 
      SomeDataAccess db = new SomeDataAccess(); 
      db.Save(adapter); 
     } 
    } 

    public class SomeDataAccess 
    { 
     public void Save(SomeAdapter adapter) 
     { 
      //Interact with database 
     } 
    } 

    public class SomeAdapter 
    { 
     //properties 
    } 

許多文章幾乎沒有改變過這個(https://subvisual.co/blog/posts/20-clean-architecture)的。我還沒有找到一篇很好的文章,介紹了同一層中的圖片應該如何相互協作。所以,提及這些的文章將是一個可以接受的答案。

這似乎並沒有違反相關規則,但感覺就像我沒有做正確的事情,因爲我讓我的用戶界面和數據庫之間的依賴關係。我相信我可能會過度思考這個概念,我相信它可能會從學習3層架構(UI - > BLL - > DAL)中汲取靈感。

回答

1

我一直在對乾淨架構的其他例子進行更多的研究。

architecture design http://retromocha.com/assets/images/obvious-architecture-e3b86eaa.pngsource)。

從上面的圖表中,它看起來像應用程序(業務實體和用例)會談來回交貨(外部對象:UI)。交付用於與外部交流(外部:DAL)。

交貨是您實現您的應用程序本身的傳送機制。交付是您的應用程序與外部數據源集成並顯示給用戶的地方。這意味着最簡單的用戶界面,但它也意味着創建外部對象的具體版本,如數據插孔,並且還調用應用程序本身的操作。 -Retro摩卡

所以,這使我相信這是在頂部的代碼示例是有效的,但我還是開聽到的話,任何人有更多的提供答案。