Niestety prace nad projektem nie idą tak jakbym sobie tego życzył. Zamiast kodować, spędziłem bardzo, bardzoo, bardzooo dużo czasu czytając znalezione w Internecie blogi i artykuły związane z wzorcami projektowymi i architektonicznymi. Tu coś o podejściu DDD, gdzie indziej o architekturze warstwowej, a jeszcze gdzieś dalej o wzorcu repozytorium. Ze względu na brak doświadczenia komercyjnego w mojej głowie powstał niemały mętlik, który nie przyczynił sie do postępu prac. Z związku z tym status projektu będzie krótki.
Moja własna architektura
W katalogu głównym projektu utworzyłem folder Models. A w nim pojawiły się następujące klasy:
- Database - klasa reprezentująca bazę danych, której “zdrowie” będzie badane przez aplikację
- Engine - klasa reprezentująca silnik bazy danych, myślę, że w początkowej fazie projektu pozostanę tylko przy MS SQL Server (MVP przede wszystkim)
- User - klasa reprezentująca użytkownika, muszę coś wymyślić w kwestii przechowywania hasła, bo string nie jest dobrym pomysłem ;-)
- IDatabaseRepository - klasa reprezentująca operację CRUD na obiekcie Database
- IUserRepository - klasa reprezentująca operację CRUD na obiekcie User
- MockUserRepository
- MockDatabaseRepository
Nie zaprezentowałem ciała klas “mockujących”, żeby nie zakłócić czytelności. Implementują one interfejsy odpowiednio IUserRepository oraz IMockRepository.
W założeniu aplikacja powinna dodatkowo zbierać historyczne dane o stanie bazy danych, ale w tym momencie funkcjonalność ta nie znajduje się w obrębie MVP ;-)
Po spędzeniu wielu godzin z “architekturą” niestety nie wymyśliłem nic ciekawszego. Myślę, że wraz z postępem w projekcie nadejdzie potrzeba refaktoryzacji. Jeżeli macie pomysły na poprawę powyższego stanu rzeczy czekam na komentarze :-)