Mam aplikację wielowarstwową i oddzieliłem modele domenowe(staram się DDD) oraz modele DTO do trasnferu między warstwami.
Moje DTO:
- Jest zdefiniowane w projekcie Core wraz z modelami domenowymi
- Wychodzi i wchodzi do repozytorium
- Jest przekształcane na modele domenowe w projekcie Services gdzie są operacje na domene
- Wychodzi jaki response z WebAPI
I teraz się zastanawiam czy ze względu na punkt 4 moje DTO powinno być płaskie skoro idzie do klientów(angular, mobile) - A może to zła praktyka wypuszczać DTO, które chodzi po warstwach poza aplikacje?
Płaskie:
public class CashCase
{
public string Id;
public string Title;
public DateTime Opened;
public decimal DifferenceAmount;
public decimal DifferenceOriginalAmount;
public decimal DifferenceOriginalFcyAmount;
public CashCaseDifferenceCurrency DifferenceCurrency;
public CashCaseDifferenceSource DifferenceSource;
public CashCaseDifferenceType DifferenceType;
}
public enum CashCaseDifferenceCurrency
{
PLN
}
public enum CashCaseDifferenceSource
{
ATM,
[EnumMember(Value = "ATM Offsite")]
ATMOffsite,
Cash
}
public enum CashCaseDifferenceType
{
Surplus, Deficiency
}
Zorganizowane:
public class CashCase
{
public string Id;
public string Title;
public DateTime Opened;
public CashCaseDifference Difference;
}
public class CashCaseDifference
{
public decimal Amount { get; set; }
public decimal OriginalAmount;
public decimal OriginalFcyAmount;
public CashCaseDifferenceCurrency Currency { get; set; }
public CashCaseDifferenceSource Source { get; set; }
public CashCaseDifferenceType Type { get; set; }
}
public enum CashCaseDifferenceCurrency
{
PLN
}
public enum CashCaseDifferenceSource
{
ATM,
[EnumMember(Value = "ATM Offsite")]
ATMOffsite,
Cash
}
public enum CashCaseDifferenceType
{
Surplus,
Deficiency
}