Zarządzanie obiektami, klasami w WebApi obiekty DB, DTO jak to poprawnie ogarnąć

0

Cześć,
Pytanie jak w temacie, jak poprawnie zarządzać obiektami w backendzie aplikacji webowej? Zrobiłem póki co scaffold z bazy danych, mam wygenerowane klasy odpowiedniki tabel z DB. Nie wiem czy idę w dobrym kierunku, ale chciałbym żeby te klasy to była taka najniższa warstwa, nieedytowalna, nierozszerzalna, chce żeby to byłą czysta relacja 1:1 z bazą danych. Do takich obiektów chce przygotować repository z CRUD.
W samym api zapewne potrzebowałbym teraz jakąś warstwę pośrednią dla tych klas w której bym mógł dodać jakieś dodatkowe pola czy interfejsy, a na sam koniec żeby zwracać tylko to co jest potrzebne frontendowi to jeszcze jakieś DTO.
Moje pytanie czy takie podejście jest dobre, a jeśli tak to jak teraz mapować te obiekty w jedną stronę i w drugą bo tak naprawdę musiałbym teraz mieć mapowanie przy GET: DB -> BO -> DTO, a przy save DTO -> BO -> DB lub DTO -> DB i ominąć jedną warstwę.

Może są jakieś wzorce projektowe, albo macie jakieś dobre artykuły które opisują tego typu rozwiązania? Może jednak powinienem zmienić podejście?

A drugie pytanie jeszcze poboczne jeśli będę używał DTO to tak naprawdę o ile dobrze rozumiem każda część aplikacji webowej będzie musiała mieć wystawioną dedykowaną metodę która zwróci jeden dedykowany obiekt? Co mam na myśli, wyświetlamy w dwóch miejscach w aplikacji informacje o użytkowniku (GetOperator), ale w jednym potrzebujemy tylko jego imię i nazwisko, a w drugim imie, nazwisko, adres itp. to powinienem zrobić dwie osobne metody które zwrócą dwa różne DTO?

0
blane napisał(a):

Moje pytanie czy takie podejście jest dobre

Zdefiniuj dobro. ;)
Jest to jakieś podejście, jest całkiem popularne, w zależności od rodzaju i poziomu złożoności aplikacji znajdą się za nim argumenty techniczne.

, a jeśli tak to jak teraz mapować te obiekty w jedną stronę i w drugą bo tak naprawdę musiałbym teraz mieć mapowanie przy GET: DB -> BO -> DTO, a przy save DTO -> BO -> DB lub DTO -> DB i ominąć jedną warstwę.

Możesz np. użyć biblioteki takiej jak AutoMapper.

A drugie pytanie jeszcze poboczne jeśli będę używał DTO to tak naprawdę o ile dobrze rozumiem każda część aplikacji webowej będzie musiała mieć wystawioną dedykowaną metodę która zwróci jeden dedykowany obiekt? Co mam na myśli, wyświetlamy w dwóch miejscach w aplikacji informacje o użytkowniku (GetOperator), ale w jednym potrzebujemy tylko jego imię i nazwisko, a w drugim imie, nazwisko, adres itp. to powinienem zrobić dwie osobne metody które zwrócą dwa różne DTO?

Tak, oddzielne metody to oddzielne DTO. (Nie musisz ich nikomu dedykować.)

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