ASP.NET 5 + Raspberry Pi
Dzisiejszy odcinek jest sponsorowany przez problem zarządzania prywatnymi finansami. Wpadłem na pomysł zrobienia usługi + aplikacji klienckich (Web i Windows Phone) do zbierania danych o moich wydatkach. Mogłem oczywiście sprawę rozwiązać Excelem. Przeklikiwanie arkusza na telefonie nie należy jednak do najprzyjemniejszych rzeczy.
Rozważałem napisanie usługi w pythonie, jednak chciałem sprawdzić nowości na platformie firmy Microsoft. Ostatecznie wybór padł na ASP.NET vNext. Nowa wersja ASP.NET ma ogromną zaletę - łączy usługi Web API ze stronami WWW frameworka MVC. Dzięki temu, jestem w stanie napisać usługę REST i aplikację WWW opartą o Angular.js w jednym projekcie. Aplikacja będzie działała w trybie self-hosted na Raspberry Pi.
Czym jest ASP.NET 5?
W dużym skrócie, ASP.NET 5 (vNext) jest:
- przyszłą, pisaną od nowa, wersją ASP.NET MVC (6),
- połączeniem ASP.NET MVC, ASP.NET Web API i ASP.NET Web Pages,
- otwartym kawałkiem kodu, który możemy dowolnie edytować.
Jedną z większych zalet ASP.NET 5 jest wieloplatformowość - aplikacje mogą być uruchamiane zarówno na Windowsie, jak i systemach GNU/Linux czy Mac OS X. Co istotne, wszystkie platformy są oficjalnie wspierane przez Microsoft.
Dlaczego Raspberry Pi?
Raspberry Pi było akurat pod ręką. Miniaturowy komputer leżał nieużywany w szafie i czekał aż z niego skorzystam. Miał służyć jako multimedialny hub, ostatecznie jednak postawiłem na usługi zewnętrzne (Spotify).
Instalacja pakietów
Zanim rozpoczniemy właściwą instalację, potrzebujemy kilkunastu pakietów. Większość z nich to zależności mono.
UWAGA: Moje Raspberry Pi działa pod kontrolą Raspbiana. Jeżeli posiadasz inny system operacyjny (np. Pidora), być może będziesz musiał/a skorzystać z innego managera pakietów (yum, pacman etc.).
- Logujemy się przez SSH na Raspberry Pi.
- Aktualizujemy repozytorium pakietów:
- Pobieramy niezbędne pakiety:
GNU Screen
Kompilacja mono trwa kilka godzin. W razie zerwania sesji SSH, proces zostanie przerwany. Rozwiązaniem jest wykonywanie poleceń w sesji screen. GNU Screen jest programem utrzymującym uruchomione zadania po wylogowaniu użytkownika. Posiada też inne zastosowania (podobno ktoś z nich korzysta). Uruchomienie nowej sesji sprowadza się do wykonania:
Odłączamy się od sesji za pomocą skrótu CTRL + A, D. Po tej operacji możemy bez problemu się wylogować. Aby przywrócić odpiętą sesję, wystarczy wpisać:
Voila. Możemy spokojnie odłączyć się od RPi w trakcie kompilacji.
Instalacja mono
Wszystko gotowe, czas zainstalować środowisko uruchomieniowe
- Ściągamy najnowsze źródła mono:
- Przechodzimy do repozytorium:
- Uruchamiamy konfigurator autogen:
Plotki mówią, że zamiast parametru -prefix/-enable-nls, konieczne może być użycie .prefix/.enable-nls.
- Ściągamy binarkę mini-kompilatora C# monolite (część mono jest napisana w C#; żeby skompilować mono, musimy najpierw posiadać mono ;-))
- Kompilujemy mono:
- Instalujemy mono:
- Sprawdzamy, czy wszystko poszło zgodnie z planem...
Super; możemy odpalić pierwszy program!
- Uruchamiamy testowy program:
Jak widać, wszystko przebiegło pomyślnie. Możemy kompilować programy przeznaczone na platformę .NET 4.5 i niższe.
Instalacja ASP.NET vNext
Centralnym punktem frameworka ASP.NET vNext jest menedżer wersji kvm (K Version Manager). Za jego pomocą instalujemy różne wersje frameworka, a także przełączamy się między nimi.
- Instalujemy kvm:
- Przechodzimy do repozytorium:
- Instalujemy najnowsze kre:
Wielki test
W celu sprawdzenia konfiguracji naszego nowego serwera ASP.NET vNext, uruchomimy prostą aplikację.
- Ściągamy repozytorium:
- Dodajemy certyfikaty (są niezbędne do pobrania zależności):
- Uzupełniamy zależności projektu:
- Uruchamiamy projekt:
Działa! Możemy wejść do aplikacji: http://[ip]:5004/Users.
Do aplikacji można się dostać również poprzez przeglądarkę Lynx, bezpośrednio na Raspberry Pi:
W następnym wpisie napiszę o samym ASP.NET vNext: zmianach, nowościach i niespodziankach, które zaserwował Microsoft.