Zacząłem niedawno tworzyć nowy projekt (w zamyśle spory), i oczywiście ładnie wydzieliłem w nim 3 warstwy - prezentacji, 'biznesową', oraz dostępu do danych.
O ile z połączeniem PL/BL sobie jakoś radzę, nie wiem jak dobrze napisać interfejs BL/DAL - pierwsza rzecz, czyli czytanie pliku.
Muszę z niego odczytać pewne dane, powiedzmy, listę obiektów. Te obiekty są óżnych klas i łączy je dość mętne powiązanie, implementują wszystkie interfejs, for ex. IObiekt.
I są to obiekty zdecydowanie biznesowe - warstwa dostępu do danych nic o nich nie wie. I teraz jak przeczytać i przekazać tą listę?
Wpadłem na kilka pomysłów, z czego żaden nie wydaje mi się dobry :)
- Stworzenie pasywnych (bez żadnych metod) odpowiedników obiektów biznesowych i wczytywanie/przekazywanie ich. Tak zacząłem, ale ilość typów obiektów do serializacji rośnie i nie wiem czy podążam właściwą drogą.
- zalety: wygląda na czyste 'akademicko' rozwiązanie.
- wady: wygląda na czysto 'akademickie' rozwiązanie, dużo nadmiarowego kodu...
- Wyrzucenie obiektów biznesowych do DAL
- zalety: zero pisania
- wady: brzydki kod :/
- Stworzenie ogólnej klasy
Data
z kilkoma polami danych i polem ElementType (który wskazywałby na co skonwertować po stronie BL) która służyłaby do zapisywania wszystkich pól.
- zalety: brak?
- wady: brzydki kod, dużo pisania, podatne na błędy.
Ogólnie nie wiem co z tym zrobić... Na pewno dużo osób tutaj pisało takie aplikacje, w jaki sposób radzi się z takimi problememi?
I jeśli już przy odczytywaniu jestem - jak powinien wyglądać interfejs do odczytywania informacji? Ja stworzyłem statyczną klasę TypWczytywanegoObiektuDataLoader z metodą Load(string filename) i też nie jestem pewnie właściwości takiego rozwiązania
PS. Uprzedzając pytanie po co warstwa danych jeśli nie korzystam z bazy danych - nie wiem :). Ale jestem zdeterminowany.