Dto - stosować czy nie

0

cośtam sobie skrobałem i trafiłem na : https://www.yegor256.com/2016/07/06/data-transfer-object.html
a wy jak myślicie? wiadomo, zalezy od zastosowania

a czy w prostej apce (5 tabel w bazie, MVC, datamodel EF wyklinany z kreatora) stosować DTO, czy walić równo po enjcach (get/update/create) ?

5

Jak masz jeden do jeden odwzorowanie propertiesów Enity na DTO to to jest syf, wstyd, dupa i kamieni kupa.
Zwłaszcza jeśli tak jest co do zasady.
DTO mutowalne to też syf generalnie.

W innych przypadkach może mieć sens - DTO wejściowy, który rozbijam potem w save na jakieś obiekty bazodanowe - ma sens.
DTO wyjściowy, który jest pewnym widokiem na dane z bazy (joiny, agregacje) też git.

W prostej apce wal po encjach, lepsza lekka bieda niż cargo cult patternów bez zrozumienia.
Ma to tę zaletę, że może kiedyś trafisz na jakieś ograniczenie i dowiesz się po co DTO się przydaje. Lepiej tak, niż rypać w 100 tysiącach miejsc bez sensu i nigdy się nie dowiedzieć czemu.

0

W cywilizowanych aplikacjach na ogół to co wystawiasz na zewnątrz nie jest czystym odzwierciedleniem encji, więc tak warto stosowac.Tym bardziej że za encjami w ORMach często siękryje jakas magia z której moga wynikac różne kłopoty ;]

1
pawelek1991 napisał(a):

a czy w prostej apce (5 tabel w bazie, MVC, datamodel EF wyklinany z kreatora) stosować DTO, czy walić równo po enjcach (get/update/create) ?

DTO służą do wymiany danych z zewnętrznymi systemami, np. niezależnego od nas serwisu w sieci. Co w tej aplikacji jest zewnętrzne?

Jeśli pytasz o to, czy persistence modele (czyli te klasy na których operuje ORM) używać w GUI, to niby możesz, ale:

  1. To się nie skaluje, w jakimś PoC albo prostym narzędziu może na krótką metę zadziałać, ale gorzej jeśli aplikacja zacznie się rozwijać z tym długiem technologicznym i w efekcie wyjdzie z tego big ball of mud przy którym będą cierpieli programiści.
  2. W praktyce nigdy nie jest tak, że chcesz pokazywać na widoku dokładnie to, co masz w bazie, a więc i tak potrzebujesz dwóch modeli - jednego do widoku, drugiego do przechowywania. Ale żaden z nich to nie jest DTO.

A autor bloga "wynalazł" active record. Na śmietniku historii, bo już wszyscy dawno zauważyli, że to antywzorzec.

2

Tak dodam tylko, że bez DTO jednak się nie obeszło. Zbyt wiele danych, których menadżer by nie chciał, zbyt wiele powiązań, które w widoku (czyli dla końcowego użytkownika) kompletnie nie miały by wartości.
Jednak dzięki za dyskusje, zawsze staram się po przeczytaniu jakiejś ciekawostki szukać za i przeciw w innych źródłach (tutaj opinie 4programmersów).

1 użytkowników online, w tym zalogowanych: 0, gości: 1