Zrozumieć środowisko uruchomieniowe ASP.NET 5

Tematem tego artykułu będzie zrozumienie zagadnień związanych z nowym środowiskiem uruchomieniowym. Poznamy relację pomiędzy .NET Version Manager (DNVM), .NET Execution Environment (DNX) oraz .NET Development Utilities (DNU). W dalszej cześci artykułu skupimy się na instalacji i użyciu DNVM, DNX i DNU oraz nowych poleceń.

ASP.NET 5 prezentuje nowy model środowiska uruchomieniowego dla platformy .NET pozwalający na budowę aplikacji z tych komponentów, które aktualnie są potrzebne, bez konieczności polegania na centralnej bibliotece obecnej na komputerze hosta.

Ten nowy model pozwala nam również na zarządzanie wersjami, bibliotekami oraz środowiskiem wykonawczym bez konieczności uruchamiania Visual Studio. Możliwe jest również przygotowywanie aplikacji ASP.NET na różne platformy przy użyciu edytora tekstu oraz linii poleceń (CMD lub Powershell na systemie Windows) bez uruchamiania wspomnianego wcześniej środowiska.


DNVM - .NET Version Manager

DNVM jest narzędziem do zarządzania wersjami przy użyciu linii poleceń. Jak wskazuje nazwa, narzędzie dostarcza funkcjonalność pozwalającą na konfigurację środowiska uruchomieniowego .NET. Możemy użyć DNVM do wskazania wersji środowiska (.NET Execution Environment) na poziomie procesu, użytkownika oraz maszyny.


DNX - .NET Execution Environment

Czym jest DNX? Zgodnie z oficjalną dokumentacją:
.NET Execution Environment (DNX) jest zestawem narzędzi dla programistów (SDK) oraz środowiskiem uruchomieniowym, które posiada wszystko co niezbędne do budowania aplikacji dla Windowsa, MAC’a oraz Linuxa. DNX został zbudowany do uruchamiania multiplatformowych aplikacji ASP.NET, zarówno webowych jak i np. konsolowych.”

Ogólnie rzecz biorąc, dostępne są różne wersje DNX, które odzwierciedlają wybór związany z platformą .NET dla konkretnej aplikacji. Możemy wyróżnić podstawowy podział:

  • .NET Framework – znana i lubiana platforma;
  • .NET Core – podzbiór platformy .NET, który zawiera modułowe środowisko uruchomieniowe oraz implementację bibliotek zarządzany przez Nuget. .NET Core jest wieloplatformowym, otwartym oprogramowaniem;
  • Mono - użycie Mono pozwala na przygotowanie aplikacji ASP.NET, które będą się kompilowały i uruchamiały na maszynych z zainstalowanym system OS X oraz Linux.
Możemy użyć menadżera wersji aby wybrać, której wersji DNX chcemy używać w naszej aplikacji.


DNU - .NET Development Utilities

DNU jest narzędziem linii poleceń, które oferuje szereg funkcjonalności pozwalających na rozwój aplikacji ASP.NET. Przeważnie jednak jest używany do instalacji i zarządzania bibliotekami w naszej aplikacji i/lub do publikowania naszych aplikacji.

DNU wykorzystuje Nuget do opisanych powyżej czynności, tj. zarządzania i publikowania.


Wprowadzenie – instalacja DNVM

Jeżeli masz zainstalowane Visual Studio 2015 masz dostęp do .NET Version Manager.

Jeżeli chcesz dokonać aktualizacji do najnowszej wersji DNVM lub chesz pracować z ASP.NET ale nie chcesz instalować Visual Studio, możesz pobrać DNVM przy użyciu jednej z poniższych komend (CMD lub Powershell).
Instalacja lub aktualizacja przy użyciu CMD:

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "&{$Branch='dev';iex 
((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}"
Instalacja lub aktualizacja przy użyciu Powershell:
&{$Branch='dev';iex ((new-object net.webclient).
DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}
Jak tylko DNVM jest dostępne na naszej maszynie możemy uruchomić linię poleceń, aby rozpocząć pracę.

W wierszu poleceń (lub oknie Powershell) należy wykonać poniższe czynności, aby zobaczyć czy instalacja przebiegła pomyślnie.
Uruchamiamy DNVM bez parametrów:

>dnvm
Jeżeli wszystko zostało zrobione poprawnie powinieneś zobaczyć poniższy ekran:

Konfiguracja DNVM widoczna w wierszu poleceń

Teraz, gdy DNVM został poprawnie zainstalowany i uruchomiony, sprawdźmy, które wersję są dostępne oraz jak zainstalować inną w razie potrzeby.


DNVM – lista dostępnych wersji

Aby wyświetlić listę należy w wierszu poleceń wpisać:

>dnvm list
Visual Studio 2015 został zainstalowany wcześniej na moim komputerze dlatego poniższa lista zawiera kilka elementów:

Wiersz poleceń prezentujący obecnie zainstalowane wersje frameworka

Jeżeli jednak nie masz zainstalowanego Visual Studio 2015 poniższa lista będzie pusta. Nie należy się tym przejmować, w kolejnym kroku omówimy dokładnie sposób instalacji.


DNVM – instalacja różnych wersji

Domyślnie, DNVM będzie pracował z podstawową wersją platformy .NET, załóżmy, że będzie to architektura x86. Dla przykładu, jeżeli wykonasz poniższe polecenie:

>dnvm install latest
DNVM zainstaluje ostatnią, stabilną wersję platformy dla architektury x86.

Jeżeli jednak chciałbyś dokładnie wskazać środowisko uruchomieniowe (np. CoreCLR zamiast .NET Framework lub/i wskazać wersję x64) należy odpowiednio zmienieć/dodać parametry:

>dnvm install latest -r coreclr -arch x64
Gdybyś teraz chciał zainstalować wskazaną przez siebie wersję należy odpowiednio wykonać poniższe polcenie:
>dnvm install 1.0.0-beta5


DNVM Upgrade vs DNVM Install

Polecenie aktualizacji zachowuje się nieco inaczej niż polecenie instalacji.

Polecenie instalacji pobiera określoną wersję oraz ustawią ją jako aktualnie używaną – poprzez dodanie jej do procesu ścieżek systemowych. Wybór jest aktywny tylko na czas trwania sesji terminala. Jak tylko sesja terminala zostanie zamknięte, aktywny wybór zostanie ustawiony na wartość pustą (brak zaznaczenia) lub do wartości domyślnej o ile ta została ustawiona w ścieżkach systemowych.

Polecenie aktualizacji wykonuje praktycznie to samo z tym, że dodaje również zmienną do zmiennych użytkownika jako domyślna aktywna wersja i dokonuje aktualizacji dla tego aliasu. Dla przykładu, jeżeli użyjemy polecenia do aktualizacji najnowszej wersji x64:

>dnvm upgrade -r clr -arch x64
Dostaniemy informację, że ostatnia wersja dnx-clr-win-x64 została dodana nie tylko do bieżącej ścieżki procesu ale również ścieżki użytkownika.

Warto jeszcze nadmienić, że w powyższych przypadkach pobieramy zawsze ostatnią, stabilną wersję. Gdybyśmy jednak chcieli pobrać ostatnią wersję (nie stabilną – w fazie developmentu) należy użyć poniższego polecenia:

>dnvm upgrade -u


DNVM – wybór i zmiana aktywnego środowiska DNX

Możemy przełączać się pomiędzy różnymi środowiskami DNX przy użyciu komendy dnvm use. W poniższym przykładzie rozważymy wybór wersji 1.0.0-rc1-update1 we wskazanej architekturze. Należy wykonać poniższe polecenie:

>dnvm use 1.0.0-rc1-update1 -arch x64
Jeżeli wykonamy powyższe polecenie a następnie wywołamy dnvm list możemy zauważyć:

Wybór wersji frameworka przy pomocy DNVM

Po wykonaniu powyższego polecenia nowa wersja została dodana do ścieżki procesu. Wybór ten będzie jednak zapamiętany tylko o obrębie bieżącej sesji konsoli. Po zamknięciu i ponownym otwarciu zostanie zaznaczony wybór wskazany w ścieżce użytkownika.

Jeżeli jednak chcemy nasz wybór oznaczyć jako domyślny dla użytkownika należy przekazać dodatkowy parametr -p (-persistent), który sprawi, że wybór zostanie dodany również do ścieżki użytkownika.

>dnvm use 1.0.0-rc1-update1 -arch x64 -p


DNVM – wybór i zmiana aktywnego środowiska DNX

Jeżeli chcemy usunąć wszystkie referencje ze ścieżek procesu (innymi słowy, powrót do stanu, gdzie nie mamy żadnego wyboru) należy wykonać poniższe polecenie:

>dnvm use none
Jeżeli chcemy usunąć wszystkie referencje w zmiennych ścieżkach użytkownika należy wykonać poniższe polecenie:
>dnvm use none -p


DNU restore

Polecenie dnu jest używane do zarządzania paczkami w projekcie. dnu restore pobiera wszystkie paczki, które są wymienione w pliku project.json. Polecenie to używa Nuget wewnętrznie do pobrania paczek a tym samym domyślnie wskazuje na adres: https://www.nuget.org/api/v2/.

Pakiety używanych bibliotek przywracamy przez proste wywołanie poniższego polecenia:

>dnu restore


Podsumowanie

W artykule skupiliśmy się na zrozumieniu podstaw dotyczących .NET Version Manager, .NET Development Utility oraz .NET Execution Environment.

DNU, DNX oraz DNVM są w fazie ciągłego rozwoju dlatego miej oko na repozytorium ASP.NET 5 oraz na aktualizacje tego i kolejnych artykułów związanych z tym cyklem.