簡體   English   中英

MVVM和業務層架構

[英]MVVM and business layer architecture

我正在開發一個剛完成的應用程序:

  • 領域層-以領域驅動設計的方式制作,所以這里有一些邏輯
  • 數據訪問層-具有nhibernate和UnitOfWork-存儲庫模式
  • UI層-帶有Caliburn.Micro的MVVM

現在的問題是:我把邏輯放在哪里?

根據

https://softwareengineering.stackexchange.com/questions/185448/mvvm-clarification

我必須將應用程序邏輯與域邏輯分開,但我做了一個簡單的示例:

我有一個ViewModel,只能從數據庫中收取費用並允許更改,然后我將有3種方法(僅保留示例):

LoadPerson ( id )
SavePerson (Person )
CanEditPerson ( id )

前2個必須調用我的UoW的相應方法,但必須直接調用嗎?

在一個用asp.net制作的較早的應用程序中,我為每個頁面創建了一個帶有外觀的businessLayer,因此該頁面調用外觀的LoadPerson ,然后BL調用數據訪問層的LoadPerson

這是我可以使用的正確方法嗎?

但是在那種情況下,頁面非常復雜並且可以處理多種對象:對於基於大約100個項目的應用程序,我只有6頁(充滿制表符和手風琴)。

在這里,我知道視圖必須非常簡單,並且可以在單個對象上工作,然后對於每個ViewModel ,我應該在BL中有一個外觀。

CanEditPerson必須是一種驗證建立的規則的方法,以確定當前用戶是否可以更改此人。 似乎非常合乎邏輯的領域(購買者必須建立pemessi)擁有版權,但是我不知道如何在DomainLayer處理此事情,在BusinessLayer使用該方法會更自然

您也可以在此處創建一個模型,並在其中聲明屬性和方法。 喜歡

 public class Person
    {
   //Declare your property

     LoadPerson ( id )
     {

      }
     SavePerson (Person )
     { 

      }
     CanEditPerson ( id )
     {

      }
    }

現在,您只需要在ViewModel中創建Person類的Property,就可以輕松訪問其Property和Methods。

private Person _PersonDetails;

public Person PersonDetails
{
    get { return _PersonDetails??(_PersonDetails=new Person());}
    set { _PersonDetails = value;}
}

暫無
暫無

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

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