We wtorek, 10 listopada miała miejsce premiera nowej wersji platformy programistycznej .NET rozwijanej pod skrzydłami giganta z Redmond. Ogłoszenie .NET 5 jest początkiem wdrażania Project Reunion mającego za zadanie uprościć i zunifikować tworzenie oprogramowania na rodzinę produktów od Microsoft oraz ASP.NET i Xamarin. Następny w kolejce jest WinUi 3.
Ale, po kolei…
.NET jest środowiskiem programistycznym, którego początki możemy dojrzeć już w 1990 roku. Tamtego czasu Microsoft zaczął zbierać do jednego worka swoje pomysły na rozwój zestawu narzędzi, które będą godne sprostać rosnącym oczekiwaniom konsumentów i programistów. Pierwsze wersje próbne ukazały się pod koniec 2000 roku, a oficjalna premiera miała miejsce w okolicach sierpnia 2002. Wtedy też ustandaryzowany został język programowania C#.
Przez kolejne lata mogliśmy obserwować rozwój platformy i jej, chcąc nie chcąc – podział. .NET został rozbity na Silverlight, Mono, .NET Framework oraz .NET Core. Z odrębnymi modułami dla WPF, Xamarin, UWP i wielu innych infrastruktur. Obecnie kluczową decyzją jest wybór platformy, na której chcemy opublikować swój produkt. Zestawy bibliotek dla ASP.NET, Android, iOS, MacOS, Windows, XBOX i Linux różnią się, co zmusza do ograniczeń i kompromisów.
Nowa wersja ma to odmienić, Microsoft zachęca by przerzucić swoje obecne projekty napisane w .NET Framework na .NET 5. Z najnowszej wersji został usunięty dopisek 'Core’ co ma zapowiadać, że wszystkie przyszłe wersje będą po prostu kolejnymi iteracjami tej najnowszej. Wszystkie systemy operacyjne oraz infrastruktury jak ASP.NET czy WPF już wspierają nowe wydanie (UWP ma otrzymać wsparcie wkrótce, a Xamarin od wersji .NET 6).
Co nowego?
Po pierwsze, nowa wersja języka C#. Wszystkie usprawnienia w C# 9 zostały omówione w tym wpisie na blogu Microsoftu. Początkujących programistów na pewno ucieszy fakt, że dodano „Top-level programs”, co oznacza, że możemy napisać prostą aplikację konsolową w starym, dobrym stylu języka C bez używania klas i metod.
using static System.Console;
using System.Threading.Tasks;
WriteLine("Hello 4GEEK.CO");
WriteLine(args[0]);
await Task.Delay(1000);
return 0;
Od momentu kiedy gigant z Redmond kupił GitHuba, stali się znacznie bardziej pro-społeczni i sporą cześć zapowiedzi poświęcili podziękowaniom dla twórców, którzy wysyłali swoje uwagi i sugestie do repozytorium. Może nie jest to jakiś 'news’ ale dobrze wiedzieć, że Microsoft coraz bardziej otwiera się na ludzi (już sam fakt, że cały .NET jest otwarty i na licencji MIT wiele mówi).
GC – Garbage Collection
Garbage Collection i jego usprawnienia w wydajności. Nowoczesne programy napisane dla systemu Windows co jakiś czas próbują pozbyć się z pamięci zbędnych zasobów, ograniczając w ten sposób zużycie powodowane przez aplikację. Mechanizm ten otrzymał kolejny raz zestaw poprawek i usprawnień. Dodatkowo, wątki aplikacji będą teraz w stanie podkradać zasoby z siebie wzajemnie, co ma przyśpieszyć ogólne działanie aplikacji. Poniższa tabelka przedstawia przykładowe testy. Oryginalny tekst znajdziecie na DevBlog’u.
Typ
Środowisko
Czas
Współczynnik
DoubleSorting
.NET FW 4.8
88.88 ns
1.00
DoubleSorting
.NET Core 3.1
73.29 ns
0.83
DoubleSorting
.NET 5.0
35.83 ns
0.40
Int32Sorting
.NET FW 4.8
66.34 ns
1.00
Int32Sorting
.NET Core 3.1
48.47 ns
0.73
Int32Sorting
.NET 5.0
31.07 ns
0.47
StringSorting
.NET FW 4.8
2,193.86 ns
1.00
StringSorting
.NET Core 3.1
1,713.11 ns
0.78
StringSorting
.NET 5.0
1,400.96 ns
0.64
Test wydajności sortowania – devblogs.microsoft.com
Zysk rzędu 50% przy sortowaniu wygląda obiecująco, a to nie koniec ciekawostek.
Just In Time compiling
Aplikacje C# możemy kompilować na dwa sposoby – bezpośrednio do kodu czytanego przez interpreter (R2R – Ready To Run), albo za pomocą JIT. Te drugie rozwiązanie kompiluje kod w trakcie działania aplikacji (Just-In-Time), zwiększa to złożoność obliczeniową naszego produktu, ale za to znacznie zmniejsza rozmiar wynikowych plików. Najnowsza wersja ma usprawniać działanie JIT, a co za tym idzie przyśpieszyć działanie aplikacji przy jednoczesnym ograniczeniu zużywanych zasobów.
Poza tym, poczyniono duże zmiany w wyrażeniach regularnych, przetwarzaniu tekstu, wielowątkowości, kolekcjach czy LINQ. Wszystko znajdziecie na blogu.
Wsparcie i ARM
Nowe SDK będzie wspierane do momentu premiery .NET 6 (i trzy miesiące po tym). Jedną z głównych nowości jest dodanie wsparcia dla Windows ARM64. Na pewno ułatwi to tworzenie aplikacji dla nowych urządzeń Apple, które już niedługo będą dostępne wyłącznie na autorskich rozwiązaniach ARM.
Gdzie zniknęły moje biblioteki?
Jeśli przerzucasz swój projekt z .NET Framework na .NET 5 czy .NET Core 3.1 możesz zauważyć, że brakuje takich elementów jak System.Management. Jest to jedno z założeń przy unifikacji wszystkich platform. Podstawowy zestaw narzędzi ma być taki sam, niezależnie czy tworzysz dla komputerów, telefonów, chmury czy IoT. Dodatkowe biblioteki, jak WebAssembly czy System.Management musimy dodać ręcznie. Wymaga naszej, niewielkiej interakcji ale z drugiej strony znacznie ułatwia tworzenie projektów, bo wszystkie zaczynamy mniej więcej tak samo – niezależnie od platformy. Uniezależniamy się też od systemu operacyjnego, bo wraz z aplikacją możemy dostarczyć wszystkie używane rozszerzenia, nie wymagając od użytkownika instalacji .NET 5 Runtime na swoim komputerze.
Większość brakujących rzeczy znajdziesz, wyszukując je za pomocą NuGet Package Manager.
Manager pakietów NuGet w Visual Studio 2019 – Archiwum 4GEEK.CO
Jak korzystać z .NET 5?
Jeśli Twoja aplikacja jest napisana w .NET Core 3.1 lub podobnej, prawdopodobnie wystarczy zmienić w projekcie wersję na wyższą i powinno działać „z miejsca”. Możliwe, że wymagana będzie aktualizacja części bibliotek. Jeśli tworzysz projekt w .NET Framework koniecznie będzie dodanie brakujących rozszerzeń za pomocą bezpośredniej referencji, bądź z użyciem menedżera NuGet.
Wybór docelowej infrastruktury .NET 5.0 w Visual Studio 2019 – Archiwum 4GEEK.CO
To co, mam portować?
Wydaje mi się, że .NET 5 i jego filozofia jest przyszłością. Nie ma co stawiać oporu przed zmianą i uparcie obstawać przy swoim. Konteneryzacja, wirtualizacja są przyszłością oprogramowania, więc musimy się ich czym prędzej nauczyć. A unifikacja wielu platform do jednego zestawu deweloperskiego i języka na pewno ułatwią podbicie rynku pracy. Znając dobrze C# i aplikacje komputerowe, łatwo będzie w tym samym języku przygotowywać rozwiązania dla ASP.NET czy urządzeń mobilnych. A fanom Windowsa pozostaje czekać na oficjalną premierę WinUi 3.
Student inżynierii programowania, z zamiłowaniami do tworzenia rozwiązań IoT. Niezmordowany gracz w wiedźmińską trylogię i serię Anno. Propagator tworzenia wszelkich rozwiązań w języku C#.
Fan starych samochodów i motocykli Yamaha. Przy tym, zajmuje się zapleczem technicznym i wyglądem strony 4GEEK.CO.
Niestety, nic nie znaleziono. Może spróbuj innej frazy?
Om nom nom...
Któż nie lubi ciasteczek? Cóż, całkiem sporo ludzi... W każdym razie, nasza strona wykorzystuje cookies.
Kiedy 4GEEK (to my!) zbiera informacje o Tobie, nasza Polityka Prywatności opisuje jak przetwarzamy te informacje.
No więc tak, ale właściwie to nie
Brakuje JS...
Ta strona nie działa bez JavaScript. I don't know how to help you with that, maybe try to figure out how to turn it on