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

Popularne posty z tego bloga

Connect to Azure from command line on Windows

When working with Azure we could go two ways: 1) using Azure portal and work in UI from your web browser 2) Connect to Azure from command line and run commands by typing in text in CMD. I already wrote about option 1 but today I'll show you how to start with option 2 which is Command line. First we need to download MSI installer from Microsoft website After sucessfull instalation you're ready to test az command. Open CMD and type in 'az' Now let's log in with your Azure credentials. Just type in "az login" in cmd. You should be redirected from command line to web browser and prompted for username and account in web browser. When you confirm your identity you'll be presented the screen like this in command line:

Learning e24cloud.com API

Today I'll show you how to use API in order to create virtual server in the cloud directly from your code. We're going write a script in PHP language and use Amazon SDK API to connect with e24cloud.com, which is the biggest and most modern hosting provider in Poland. First we need to install Amazon SDK http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/installation.html One important note: We can use the latest version of amazon SDK but we also need to do one trick. We'll use signatureV2 instead ov Signaturev4 as e24cloud doesn't support SitnatureV4 yet. You can download it here: https://github.com/aws/aws-sdk-php-v3-bridge We need to download SDK and the bridge which allows us to use Signaturev2 to the same folder, so that require instruction work seamlessly in the form that I provided in the example below. Then go to your admin panel in e24cloud.com to find two values: a key and a secret. In the following code you need to paste those 2 values. ...

Aplikacja 'Perfect Life' - planowanie funkcjonalności

W poprzednim wpisie przedstawiłem budowę historii użytkownika(ang. User Story). Dzisiaj korzystając z tego narzędzia zaplanujemy kilka funkcjonalności. Czas na zaplanowanie funkcjonalności aplikacji mobilnej Perfect Life. Aplikacja jest tworzona w oparciu o technologię Xamarin.Forms. Póki co jednak abstrahując od rozwiązań technologicznych skupimy się na funkcjonalnościach. Dobre planowanie swojej pracy to podstawa sukcesu każdego projektu programistycznego. US1: Jako użytkownik aplikacji mobilnej chcę ekran logowania aby mieć możliwość zapisywania swoich postępów US2: Jako użytkownik aplikacji mobilnej chcę mieć kalkulator wskaźnika BMI aby móc mierzyć poziom swojej kondycji US3: Jako użytkownik aplikacji mobilnej chcę widzieć wykresy aby móc wizualnie interpretować swoje postępy US4: Jako użytkownik aplikacji mobilnej chcę mieć możliwość rozwiązania quizu, żeby zbadać wskaźnik Body Age US5: Jako użytkownik aplikacji mobilnej chcę pobierać pliki PDF aby mieć dostęp do planó...