簡體   English   中英

具有多重表示層的3層架構

[英]3-Tier Architecture with multiples presentation layer

我正在嘗試構建一個新的應用程序,並遇到麻煩使其變得干凈。

這樣做的想法是:

  • WebSite1(演示層)
    • XAML頁面
    • 頁面后面的代碼
    • 我們所謂的PageViewModel(代表頁面模型的對象)
  • WebSite2(演示層)
    • 與網站1相同
  • WebSiteX(表示層)

    • 與網站1相同
  • 商業項目

    • 服務(將通過頁面后面的代碼調用,將DAL對象轉換為網站可讀的ViewModel)
    • ViewModel(代表實際對象可以在多個頁面/網站中使用)
  • DAL項目

    • 管理器(通過服務調用,返回DAL對象)
    • DAL(訪問數據庫或其他來源)

我的ViewModels存儲在一個單獨的項目中,如果需要,可以在各種網站中使用。

我對表示規則(例如,應該是數字或必需的)將存儲到業務層(ViewModels內部的屬性)的事實感到不滿。 兩個網站也可能使用相同的對象,但具有不同的展示規則(一種情況下要求,另一種情況下要求)。

我看到的唯一另一種方法是將Services和ViewModels放在每個網站中,但是如果它們使用相似的對象,則代碼將被復制。

你會怎么做?

謝謝閱讀。

我認為演示文稿規則可以在PageViewModel中,也可以在從PageViewModel轉換為BusinessObjects(您將它們稱為“視圖模型”)時具有驗證規則。

另外,您已經提到的內容也可以使用

我看到的唯一另一種方法是將Services和ViewModels放在每個網站中,但是如果它們使用相似的對象,則代碼將被復制。

我將保留重復的ViewModels而不是Services。 是的,代碼是重復的,但這給了我自由,盡管具有相同的基礎業務模型,但也可以用於單獨維護單獨的網站。

我認為這可能是繼承的好例子。 創建您的PageVM類的基本實例,並覆蓋不同站點中的行為。

嘗試將諸如“ requiredness”之類的內容分離為可以被覆蓋的單獨方法,可能在基本實例中將其聲明為抽象,從而迫使您在實現版本中定義該邏輯。

棘手的部分將是PageVM對象的構造,為此,您可能希望研究Factory或Builder模式,以使UI項目創建自定義PageVM對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM