Zrozumieć Microsoft .NET 5

Jeden z kluczowych tematów strategii deweloperskiej firmy Microsoft na rok 2020 jest prawdopodobnie najlepiej postrzegany jako przejście między pokoleniami. Jest to stosunkowo płynne przekazanie, sformułowane jako połączenie starych i nowych sposobów pracy. Ale ostatecznie, niezależnie od tego, czy jest to Project Reunion, WinUI 3, czy uruchomienie .NET 5, nowa technologia posuwa się naprzód, pozostawiając za sobą starą.

To nie jest złe. Opracowujemy nowe sposoby robienia rzeczy z wielu powodów, ale często łączą się one wokół jednego kluczowego punktu: nowy sposób jest lepszy. Rozwiązuje problemy, których nie mogły dawać stare narzędzia, i odpowiada na nowe pytania, których nie zadano podczas definiowania oryginalnego rozwiązania.

Nowa platforma .NET dla nowego świata

Wszystkie te przyczyny łączą się w czasie przejścia z .NET Framework na .NET 5. Dwadzieścia kilka lat temu, kiedy definiowano oryginalny .NET Framework, budowaliśmy monolityczne aplikacje klient-serwer w ściśle określonych środowiskach IT. Teraz tworzymy połączenie lekkich, rozproszonych mikrousług i wieloplatformowych aplikacji mobilnych, korzystając z szybko zmieniającej się infrastruktury. To wbrew stereotypowi zupełnie nowy świat.

Platforma .NET Core została zaprojektowana z myślą o tym sposobie pracy; wieloplatformowe od wczesnych lat jego życia i przeznaczone do obsługi nowych aplikacji mobilnych w pierwszej kolejności w chmurze, a także tradycyjnych wzorców i praktyk programistycznych .NET. Wykorzystał coraz więcej interfejsów API w trzech głównych wersjach, a kiedy biblioteki .NET Standard zaczęły oferować wspólny cel dla kodu, który ułatwił współdzielenie projektów w nim, platformy .NET Framework i platformy Xamarin.

.NET 5: ścieżka do przyszłego rozwoju

Z technicznego punktu widzenia ta nowa wersja powinna być .NET Core 4, ale firma Microsoft pomija numer wersji, aby uniknąć nieporozumień z obecną wersją platformy .NET Framework. Jednocześnie przejście na wyższy numer wersji i usunięcie Core z nazwy wskazuje, że jest to kolejny krok dla całego rozwoju .NET. Dwa projekty nadal zachowują nazwę Core: ASP.NET Core 5,0 i Entity Framework Core 5, ponieważ starsze projekty o tych samych numerach wersji nadal istnieją.

To ważny kamień milowy, oznaczający moment, w którym należy rozważyć rozpoczęcie wszystkich nowych projektów w .NET 5 i przeniesienie istniejącego kodu z .NET Framework. Chociaż firma Microsoft nie usuwa wsparcia z .NET Framework, jest w trybie konserwacji i nie otrzyma żadnych nowych funkcji w przyszłych wydaniach punktowych. Wszystkie nowe interfejsy API i rozwój społeczności będą dostępne w .NET 5 (i długoterminowym wsparciu .NET 6 w 2021 r.).

Niektóre znane technologie, takie jak Web Forms i Windows Communication Foundation, są przestarzałe w .NET 5. Jeśli nadal ich używasz, najlepiej pozostać na razie przy .NET Framework 4 i zaplanować migrację do nowszych, obsługiwanych technologii, takich jak jako Razor Pages platformy ASP.NET lub gRPC. Istnieją plany wsparcia społeczności dla alternatywnych platform, które będą oferować podobne interfejsy API, ale praca z nowszymi podejściami pomoże w przyszłości kodować i ułatwi pracę na wielu platformach.

Jednym z nieco mylących aspektów .NET 5 jest sposób, w jaki działa z bibliotekami .NET Standard. Nie znikają, chociaż kod .NET 5 nie musi odwoływać się do nich bezpośrednio, ponieważ jest teraz podzbiorem nazwy docelowej platformy .NET 5 (TFM). Ten nowy TFM zastępuje stary TFM netcoreapp i netstandard TFM, ale jeśli piszesz kod, który musi być współużytkowany między platformami, nadal możesz używać TFM .NET Standard 2.0 w celu zapewnienia zgodności. Jednak w większości przypadków prawdopodobnie będziesz pracować tylko w środowisku .NET 5, więc możesz bezpiecznie trzymać się net5.0deklaracji TFM.

Pierwsze kroki z .NET 5

NET 5.0 nadal obsługuje ten sam znany zestaw języków, w tym nowe wersje języków C # i F #. Dodają one wiele nowych funkcji i są częścią programu Visual Studio 16.8 lub ze zaktualizowanym rozszerzeniem C # Visual Studio Code. Firma Microsoft przeniosła platformę i wszystkie jej implementacje, podobnie jak większość Mono, do jednego repozytorium GitHub, konsolidując rozwój i zapewniając, że wszystkie wersje mają te same podstawowe funkcje. Gdy Microsoft przechodzi na .NET 6, wprowadzi inne implementacje wyższego poziomu, w tym Xamarin.

Nowa platforma .NET pozostaje oparta na technikach kompilacji just-in-time opracowanych dla oryginalnego środowiska uruchomieniowego języka Common Language Runtime. Nowy CoreCLR nadal poprawia wydajność, pracując na wielu architekturach procesorów. Wraz z pojawieniem się procesorów Apple opartych na M1 ARM, kod napisany w .NET dla macOS będzie działał jako natywne pliki binarne zarówno na sprzęcie z procesorem Intel, jak i ARM, więc kod nie będzie musiał przechodzić przez drugą warstwę emulacji. Wsparcie dla ARM64 pozwoli aplikacjom .NET 5 na natywne działanie w systemie Windows na sprzęcie ARM, korzystając z funkcji własnych procesorów SQ1 i SQ2 firmy Microsoft.

Niektóre scenariusze, takie jak Web Assembly i mobilne systemy operacyjne, wymagają prekompilowanego kodu, a .NET 5 oferuje kompilator z wyprzedzeniem wraz z narzędziami JIT. Kompilator AOT jest teraz dostępny dla każdego środowiska programistycznego, a zespół platformy Uno już odnotowuje znaczny wzrost szybkości obsługi Web Assembly, rzędu 7 do 15 razy w porównaniu do poprzedniego interpretera języka Web Assembly.

Istnieją plany udostępnienia kompilatora AOT jako opcji dla aplikacji, które wymagają szybkiego uruchamiania i zajmują mniej pamięci, na przykład w przypadku zegarków smartwatche o ograniczonych zasobach i sprzętu IoT. Inną opcją są wdrożenia z jednym plikiem. Wszystko, co jest potrzebne dla aplikacji (w tym środowisko wykonawcze), jest zawarte w jednym pakiecie, co ułatwia wdrażanie aplikacji .NET w kontenerach lub w systemach innych niż Windows.

Nowy .NET nie powinien być postrzegany w izolacji. Ważne są również dodatkowe zmiany dotyczące zestawu Web Assembly z Blazor i wieloplatformowego tworzenia interfejsu użytkownika z MAUI (wieloplatformowy interfejs aplikacji). Korzystając z kombinacji tych technologii, bardzo niewiele nie może być ukierunkowanych na platformę .NET 5, od sprzętu klasy Raspberry Pi, przez telefony z systemem Android, po kontenery hostowane przez Kubernetes działające na platformach AWS i Azure.

Do .NET 6 w 2021 roku

Ważną kwestią jest to, że jest to jeszcze tylko jeden krok w procesie. .NET 5 jest kluczową technologią służącą do oddzielenia interfejsów API systemu Windows od systemu operacyjnego, połączenia interfejsów API WinRT i Win32 w ramach projektu Reunion oraz przejścia do WinUI 3 i MAUI jako warstw interfejsu użytkownika. Wiele z tych prac jest kontynuowanych wraz z wydaniem w 2021 r. Platformy .NET 6 - celu wielu z tych projektów. Nie musisz czekać na rozpoczęcie migracji .NET 6. Im szybciej zaczniesz, tym lepiej, dając Ci czas na rozwiązanie wszelkich problemów, które mogą się pojawić.

Powinieneś zobaczyć .NET 5 jako pierwszy krok w kolejnym etapie podróży .NET, w którym powinieneś zacząć pobierać cały stary kod i zdecydować, co jest konieczne do przeniesienia i aktualizacji, a co należy całkowicie zastąpić. . Gdy rok 2020 dobiega końca, prawdopodobnie będziesz planować swój harmonogram rozwoju na 2021 rok. Mając to na uwadze, platforma .NET 5 powinna być obiektywem, który pomoże Ci skupić się na tym, co należy zrobić, aby Twoje oprogramowanie było gotowe na znacznie szybszą przyszłość, która nie jest już związana z wersjami systemu Windows - lub w ogóle z systemem Windows.