Cześć, czytam, czytam i jedni mówią, że lepiej użyć SharedProject, inni, że PCL.
A Wy jak myślicie?
Założenia projektu:
- Obsługa bazy danych (SQLite, MySQL)
- Obsługa plików (zapis na dysk, sprawdzenie, czy plik istnieje)
- Współdzielony projekt (Shared, czy PCL) musi posiadać coś w stylu binarnych zasobów (wiem, że PCL nie może posiadać binarnego zasobu, a SharedProject w ogóle zasobów, ale w PCL można to obejść, nie wiem, czy w SP też)
- Projekt tworzony pod Windows desktop, ale w przyszłości (kilka miesięcy, góra rok) ma też być dostępny na innych urządzeniach, np. na Androidzie.
- Projekt współdzielony musi być testowany (unit testing)
Projekt współdzielony będzie tylko w obrębie solucji, a więc to nie musi być osobna DLLka.
Więc co byście wybrali i dlaczego? Albo czego nie i dlaczego ;)
Próbowałem i SharedProject, i PCL i nadal się miotam. Już wiem, że jeśli chodzi np. o PCL i SQLite, to (mimo, że znalazłem JAKĄŚ bibliotekę SQLite PCL) lepiej by było, żeby każda platforma miała swoją własną implementację SQLite. A sam PCL korzystał tylko z interfejsu. I tu kolejne pytanie - jak dobrze to oprogramować? Tzn. w którym momencie i w jaki sposób najlepiej zarejestrować klasy implementujące interfejsy PCL? Czytałem o czymś takim jak DependencyService, ale zdaje się, że to jest tylko pod Xamarin.Forms.
SharedProject wydaje się prostszy. Nie muszę stosować #ifdef, mogę robić partial classes.
I pytanie, jak to dobrze testować. Bo w przypadku SP, muszę mieć dodatkowy projekt, który tak naprawdę będzie testowany. Czyli mam 3 projekty: SharedProject, TestProject i jakiś dodatkowy projekt, który będzie testowany (nie można przetestować tylko SharedProject). Z drugiej strony w przypadku PCL, też muszę mieć jakiś trzeci projekt, który będzie testowany, bo musi implementować interfejsy. Dobrze myślę?