Przejdź do głównej zawartości

Postępy prac - usluga sieciowa w ASP.NET Core

W ostatnim tygodniu osiągnąłem kilka kluczowych celów:
1. Stworzenie serwisu internetowego w ASP.NET Core
2. Stworzenie testów jednostkowych dla serwisu
3. Wdrożenie aplikacji na serwerze produkcyjnym (C# działa oczywiście na Linuxie)
4. Stworzenie definicji builda na serwerze Visual Studio Team Services
5. Zdobyłem praktykę w łączeniu projektów ASP.NET 4.5 i .NET Core
6. Utworzenie na serwerze Apache reverse proxy do serwera Kestrel

A teraz najciekawsze: zobaczmy kod.


Kontroler naszego serwisu w ASP.NET Core prezentuje się następująco:


Repozytorium, które wstrzykujemy do kontrolera i wykorzystujemy w testach odwołuje się do kolekcji przechowywanej w pamięci serwera.
Jest to świetny sposób do wykorzystania w testach - zamiast łączyć się z bazą trzymamy wszystkie dane w pamięci fizycznej. Technikę tę wykorzystać można również do cache'owania danych, ale o tym kiedy indziej. Oto kod repozytorium:


Zauważmy, że repozytorium powinno korzystać ze statycznych właściwości, abyśmy mogli przechowywać pewien stan danych między różnymi żądaniami pochodzącymi od jednego bądź wielu użytkowników. Dzięki temu, że korzystamy z wbudowanego w ASP.NET Core kontenera możemy uzyskać zachowanie podobne do klas, czy właściwości statycznych za pomocą jednej linii kodu. Bardzo wygodne rozwiązanie(jeśli nie korzystałeś z kontenerów to niektóre z nich, które powinieneś poznać: Ninject, Autofac). Oto kod klasy Startup:




I oczywiście na koniec test(chociaż ja stosuję podejście TDD i napisałem go zanim powstał działający kod kontrolera), bez którego aplikacja nie byłaby kompletna.
Zawsze jeśli jest to możliwe, testuje swój kod za pomocą testów jednostkowych i integracyjnych(czasami również funkcjonalnych).


Plan na najbliższy czas jest taki aby w projekcie Xamarin stworzyć i przetestować automatycznie klasę klienta, która połączy się z usługą.

Komentarze