2011-01-09 17 views
6

Wiem, że DTO to obiekt przesyłania danych, a obiekt biznesowy to obiekt biznesowy. Ale co to właściwie znaczy? Kiedy powinienem wybrać jeden nad drugim? Z tego, co rozumiem, DTO służy tylko do przesyłania danych i nie ma logiki biznesowej. Czy to oznacza, że ​​DTO nie ma żadnych właściwości tylko dla metody (getter i setter)? Ale nadal ma właściwości BO. Czy ktoś może mi wyjaśnić? Dzięki.Co to jest DTO i BO? Jaka jest różnica?

+8

@Mitch Wheat: Powiedziałem już to, co wiem. Przychodzę do stackoverflow nie dlatego, że nie mogę znaleźć odpowiedzi w Internecie. Przychodzę tutaj, ponieważ są eksperci, którzy naprawdę dobrze rozumieją temat i odpowiadają na pytania w prosty i przejrzysty sposób. Czy możesz mi pozwolić (i innym) wiedzieć, dlaczego zadałeś to pytanie? – Sandbox

+0

@Sandbox : Zadałem to pytanie, ponieważ po wyszukiwaniu tych terminów w Internecie otrzymuję prawidłowe odpowiedzi. –

+1

@Mitch Wheat: Dotyczy to większości pytań na temat SO lub powiązanych witryn wymiany stosu. Znajdziesz odpowiedź na blogu lub na forum. Czy po raz pierwszy na SO ktoś zadał pytanie, którego nie można wyszukać w Internecie? – Sandbox

Odpowiedz

11

DTO służy do przesyłania danych między warstwami/warstwami. W tym celu nie potrzebuje żadnych meto, a czasem nawet nie powinno mieć żadnych metod - na przykład, gdy DTO jest wyeksponowane przez serwis internetowy.

Obiekt biznesowy to sprytny obiekt, który zawiera dane i metody, które wykonują operacje (zmień dane) na tym obiekcie. Kiedy wystawiasz BO na wyższą warstwę, może on wywoływać publiczne metody twojego obiektu. Czasem nie chcesz tego i dlatego tworzysz DTO, które oferuje tylko dane, ale nie metody.

DTO nie musi transportować wszystkich danych BO. Gdy stosujesz ścisłe podejście DTO, tworzysz określone DTO dla każdej operacji wyeksponowanej na twojej warstwie biznesowej. Na przykład, jeśli obiekt ma dane audytu, takie jak CreatedBy, ModifiedBy, CreatedDate itp. I tworzysz metodę aktualizacji, Twój przychodzący DTO (z zaktualizowanym obiektem) nie musi mieć tych właściwości, ponieważ wyższa warstwa nie może ich modyfikować - tylko logika biznesowa może .

+0

Więc DTO są ZAWSZE używane do komunikowania się z warstwy BO do warstwy dostępu do danych? – Sandbox

+0

Brak DTO to ogólna koncepcja, która może być używana między dowolnymi warstwami. Najczęstszym zastosowaniem DTO jest warstwa Prezentacja i Biznes. Innym typowym zastosowaniem są warstwy (granica fizyczna). –

+0

Widzę, że rozumiesz .net (z poprzednich odpowiedzi). Tak więc, jeśli używam wzorca MVVM w WPF z architekturą 3-warstwową, to czy są to moje wirtualne maszyny wirtualne? czy będę używał VM tylko do wyświetlania i używania DTO do przesyłania danych z VM do Modelu i Modelu do mojej usługi? – Sandbox

1

Ogólnie rzecz biorąc, DTO ma względne dane statyczne dla tego momentu przed rozpoczęciem poziomu, ale BO może dynamicznie zachować wartość flagi stanu i przepływu; a BO może również samoistnie zawierać potwierdzenie lub logiczną reorganizację lub osąd niektórych logiki biznesowej; ale zmiana DTO zależy od zmiany poziomu danych, która minęła ... Ale zmiany BO mają szerszy zakres, na przykład zależą od bardziej dynamicznej aktualizacji ze stanem przepływu biznesowego, zmianą flagi, nawet tożsamość może być zmienione w czasie rzeczywistym, na przykład te, które mają być przechwytywane i działały w celu odzwierciedlenia z BO, na przykład, np. saldo od 200 USD staje się zerowe, lub równowaga od 2000 USD do 5000 USD, wtedy tożsamość/status transakcji/handlu ulegnie zmianie ... to jest duża różnica między DTO i BO.

Powiązane problemy