Domena vs DTO vs ViewModel - Jak i kiedy z nich korzystać?

W projekcie wielowarstwowym z warstwą domeny (DL) / warstwą biznesową (usługa) (BL) / warstwą prezentacji (PL), jakie jest najlepsze podejście do dostarczania elementów do warstwy prezentacji?

DO => Domain Object;
DTO = Domain Transfer Object;
VM => View Model;
V => View;

Opcja 1:

DL => DO => BL => DTO => PL => VM => V

Ta opcja wydaje się być najlepszą praktyką, ale wydaje się ciężka do utrzymania.

Opcja 2:

DL => DO => BL => DTO => PL => V

Ta opcja wydaje się niezbyt dobrą praktyką, ale ponieważ DTO jest prawie identyczne z VM, możemy przekazać ją bezpośrednio do widoku, a implementacja i mantain jest mniej bolesna.

Czy ta opcja jest również niezawodna dla wielu układów, na przykład dla urządzeń mobilnych mogę potrzebować mniej informacji z BL, więc potrzebuję innej maszyny wirtualnej dla tego konkretnego układu?

questionAnswers(4)

yourAnswerToTheQuestion