Dogevents – VS2017, Nunit, Separacja modelu domenowego
Kolejny raport z pola walki 😈
Dziś kilka słów o nowym Visual Studio 2017, jak porzuciłem (chwilowo) NUnit oraz modelu domenowym, jego strukturze i separacji.
VS2017
NUnit
Separacja modelu domenowego
Mój projekt w głównej mierze polega na danych dostarczonych z Facebook API. Tak pobrane dane są przetwarzane i zapisywane w bazie danych.
Trzy elementy – Facebook API, która zwraca swój model danych, warstwa domeny biznesowej, która je przetwarza oraz warstwa bazy danych, która je utrwala. W swoim projekcie zacząłem od zaprojektowania modelu domenowego (domain model), który jednocześnie stał się modelem bazy danych (persistence model). Co z tego wynikło i jaki są wady i zalety takiego podejścia?
Pierwsze wrażenie
Jednak po kilku testach okazało się, że ta wspólna zależność ma swoje wady. Jakakolwiek zmiana tego modelu „psuje” dostęp do danych – głównie poprzez błędy deserializacji związane z brakiem jakiejś właściwości, która została usunięta czy jej nazwa zmieniona. Musiałem czyścić kolekcje w mongodb i zaczynać od nowa wrzucać dane. W początkowym etapie nie jest to dla mnie problemem ale z czasem może być upierdliwe kiedy dokonujemy sporych zmian. Sam mongodb driver posiada pewne mechanizmy, konwencje, które pozwalają sobie z tym radzić.
Dzielić czy nie dzielić
Po tym etapie rozmyślałem nad wprowadzeniem separacji pomiędzy modelem domenowym i danych. Do mapowania użyć Automappera, czy własnych metod rozszerzających (extension methods). Pytanie czy to miałoby sens, jakie przyniosło by korzyści a jakie wady?
- + Szybki start – jedna klasa, żadnych mapowań
- – Model bazy danych silnie zależny od domenowego.