Jak zaprojektować strukturę projektu

0

Cześć
chcę zacząć pisać aplikację WindowsForms i chciałbym jakoś sensownie podzielić aplikacje na warstwy. Trochę o tym poczytałem, Trochę o tym poczytałem, ale przeważnie napotykam artykuły gdzie ktoś pisze jak to powinno poprawnie wyglądać, a w komentarzach inni jednak twierdzą ze to nie tak.

Dodałem sobie do Solucji 4 projekty:

  • Domain
  • Infrastructure
  • Services
  • Views

Teraz pytania:

  1. co powinno się znaleźć w każdym z tych projektów:
  • gdzie wrzucić model bazodanowy,
  • gdzie model biznesowy,
  • gdzie logowanie zdarzeń,
  • gdzie repozytoria
  • używam Simple.Data, gdzie wrzucić jego obsługę
  • gdzie implementacje repozyctoriów
  • itp...
  1. jak powinny wyglądać powiązania miedzy projektami, który powinien korzystać z którego?
0

Ja bym użył przede wszystkim Model View Presenter, bo w przypadku WinForms daje to większe korzyści niż podział na warstwy rodem z weba.
View - okienka i kontrolki implementujące interfejsy widoków.
Presenter - logika prezentacji, czyli pobieramy dane z widoku, i przesyłamy dalej albo pobieramy skądś i przesyłamy na widok. Klasy Presenterów operują na interfejsach widoków i przesyłają żądania/pobierają dane z serwisów.
I teraz są dwie drogi do napisania Modelu:
Pierwsza:
a) Domain - anemiczne klasy modeli bazodanowych.
b) Services - używane przez Prezentery, korzystają bezpośrednio z Simple.Data, wykonują całą logikę operując na klasach z Domain.
Zalety - możliwość napisania w skończonym czasie, dobrze się sprawdza dla crudów, nie przeszkadza w dalszym rozwoju aplikacji. I nie potrzebuje bezużytecznych tworów w rodzaju repozytoriów.
Druga:
DDD z oddzielnym modelem biznesowym i bazodanowym, repozytoriami i całą resztą. Ale nad tym wszystkim i tak muszą być jakieś serwisy orkiestrujące procesy i komunikujące się z Prezenterami. A więc implementując pierwszą drogę, można ją później zmienić na DDD, jeśli ma się taki fetysz.

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