Po wielu latach pracy z frameworkiem .NET przyszedł czas na .NET Core. Co zostało zmienione i dlaczego takie zmiany zostało wprowadzone? Tego dowiemy się z poniższego artykułu.
Po wielu latach pracy z frameworkiem .NET przyszedł czas na .NET Core. Co zostało zmienione i dlaczego takie zmiany zostało wprowadzone? Tego dowiemy się z poniższego artykułu.
Jest to nowy framework, który był opracowywany równolegle do .NET 4.6 (Visual Studio 2015). Poprzednio nosił nazwę .NET 5.0. Takie nazewnictwo było powodem zamieszania wśród programistów oraz tego iż, jest to następca .NET 4.6 - nie była to prawda. Jest to zupełnie nowy framework zbudowany od podstaw:
Wraz z udostępnieniem nowego framework’a pojawiły się nowe rzeczy, takie jak: CoreCLR oraz CoreFx, które zastąpiły tradycyjny CLR oraz FCL, które były przypięte do platformy Windows.
CoreCLR zawiera w sobie m.in. garbare collector, JIT compiler oraz bazowe typy danych platformy .NET oraz wiele klas niskiego poziomu.
Na samym szczycie nowego framework’a pojawia się ASP.NET Core 1.0 oraz ASP.NET Core MVC. Sporo się dzieje...
Dlatego poniżej najbardziej czytelny sposób przedstawienia powyższych informacji:
1. Wieloplatformowość
Jak wiemy, .NET framework działał jedynie na platformie Windows. Co z programistami pracującymi na innych platformach? Używali oni np. Mono Framework’a, które jest dostępne jako wolne oprogramowanie oraz jest kompatybilne z .NET. Nie był to produkt firmy Microsoft a jedynie wspierający ten framework. Wraz z rosnącą liczbą programistów pomiędzy różnymi platformami musiało dojść do rozwoju platformy .NET i uczynienia jej wieloplatformową.
Programiści pracujący na platformie Windows mieli do dyspozycji zintegrowane środowisko programistyczny, tj. Visual Studio. W przypadku programistów używających na codzień Linuxa oraz Mac’a – narzędzie to było niedostępne. Wraz z nadejściem nowego frameworka Visual Studio nie jest już wymagane. Możesz używać dowolnego edytora tekstowego a program może być wykonany przy użyciu konsoli.
Aby tak napisane programy mogły działać na każdej platformie, Microsoft zaprezentował nowe środowisko uruchomieniowe oraz biblioteki nazwane CoreCLR oraz CoreFX, które pozwolą na kompilację programów na każdej platformie.
Czyniąc .NET Core frameworkiem mulitiplatformowym, Microsoft usunął referencje ściśle związaną z IIS - System.Web a przygotował nową: Microsoft.AspNetCore, która będzie działała na wszystkich platformach hostingowych.
2. Otwarte oprogramowanie
Wraz z udostępnianiem oprogramowania jako otwartego, Microsoft również zdecydował się podążać tym krokiem. Ponadto, kod źródłowy jest dostępny na rozproszonym systemie kontroli wersji - GIT. Możesz w łatwy sposób dopasować go do swoich potrzeb.
3. Optymalizacja bibliotek i środowiska uruchomieniowego
Wraz z tą zmianą, Microsoft wprowadził zmiany w swoich bibliotekach, które są dostępne w Global Assembly Cache (GAC) w momencie instalacji .NET Framework.
Jednym z przykładów jest biblioteka System.
Biblioteka ta zawiera w sobie wiele bibliotek takich jak: System.IO, System.NET, System.Configuration, etc., które są ładowane do pamięci za każdym razem kiedy chcemy używać bibioteki System. Ale czy koniecznym jest ładowanie całej biblioteki, gdy tak naprawdę potrzebujemy tylko niektórych elementów? Załóżmy, że potrzebujmy jedynie System.IO - wówczas projekt powinien odnosić się tylko do niej. Aby biblioteki uczynić lżejszymi oraz zoptymalizowanym .NET Core wspiera teraz nugget packages dla każdej składowej dużej biblioteki oraz nie odnosi się więcej do GAC - dostępnej tylko na platformie Windows.
4. Wprowadzenie do CLI
.NET Core przedstawia aplikację konsolową zwaną dotnet.exe.
Aplikacja ta pozwala nam na:
5. Modularna budowa
Za każdym razem gdy dodawnana była nowa funkcjonalność do framework’a – nowa wersja była wydawana przez Microsoft. Możemy spojrzeć na przykład ASP.NET MVC.
W wersji 4 mieliśmy przedstawioną koncepcję routingu (Visual Studio 2012 i .NET Framework 4.5. Przy wersji ASP.NET MVC 5 przedstawiono routing na bazie atrybutów (Attribute level routing) – Visual Studio 2013 i .NET Framework 4.5.1. Takie zmiany dotychczas prowadziły do wydania nowej wersji framework’a. Od nowej wersji takie wprowadzanie zmian znika. Wraz z .NET Core wszystko dostępne jest jako nugget package. Od teraz dokonanie aktualizacji będzie niezwykle proste ponieważ pojawi się nowa paczka a nie caly framework. Taka zmiana czyni framework modularnym.
6. Środowisko gotowe na chmurę
Przy użyciu .NET Core możemy budować aplikacje w oparciu o aplikacje podłączone do chmury takie jak: Web Apps czy IOT apps.
Udaj się na stronę: http://www.dot.net
Pobierz oraz wykonaj wszystkie kroki instalacji.
Framework ten nie jest domyślnie zintegrowany z Visual Studio. Dodaje się go przez oddzielną instalację, która wymaga Visual Studio 2015 Update 3 lub możesz pobrać oddzielnie .NET Core SDK. W kolejnej wersji proces ten prawdopodobnie będzie zintegorwany z procesem instalacji Visual Studio.
Przed konsolą lini poleceń dotnet w framework’u .NET Core RC1 oraz ASP.NET Core RC1, mieliśmy narzędzie dnx do przygotowywania i uruchamiania aplikacji. Narzędzie to składało się z 3 części:
Ustawienia początkowe
Kiedy instalacja .NET Core zostanie ukończona możemy przejść do przetestowania wpisując komendę dotnet:
Krok 1 - otwórz okno linii poleceń i przejdź do lokalizacji gdzie chcesz przechowywać pliki związane z projektem:
Krok 2 - wprowadź polecenie pozwalające na przygotowanie aplikacji konsolowej:
dotnet new –-lang C#
Wyjaśnienie
Polecenie do utworzenia aplikacji webowej:
dotnet new –-lang C# -t web
Adnotacja:
W obecnej wersji .NET Core możemy tworzyć aplikację konsolowe oraz webowe. Na dzień dzisiejszy, tworzenie aplikacji okienkowych nie jest możliwe.
Folder wynikowy
Folder ten zawiera poniższe pliki:
Krok 3 - nie będę robił żadnych zmian w kodzie oraz użyje linii poleceń by dodać wszystkie zależności do projektu:
dotnet restore
Polecenie to przywróci wszystkie zależności dodane do projektu project.json, tzn. rozpakuj wszystkie biblioteki zależne w obrębie pakietu nugget.
Polecenie to następnie utworzy plik project.lock.json, który zawiera nazwy bibliotek zależnych i ich wersji.
Krok 5 - dokonaj kompilacji projektu przy użyciu polecenia:
dotnet build
Krok 6 - uruchomienie aplikacji
dotnet run
Polecenie to pozwoli nam na hosting aplikacji konsolowej na serwerze oraz dostarczy port na którym można uruchomić aplikację. Możemy teraz otworzyć naszą aplikację webową na podanym adresie http://localhost:5000