.NET 5 – czy Microsoft buduje krętą drogę do sukcesu?

.NET 5 – czy Microsoft buduje krętą drogę do sukcesu?12.07.2019 14:51

Konferencja Build 2019 to jedna z najważniejszych imprez spod znaku .NET. To właśnie tutaj pokazywane są najważniejsze nowości i plany na przyszłość związane z technologiami od giganta z Redmond. Nie inaczej było w tym roku. Zostały przedstawione zmiany powiązane z Azurem, DevOpsem, AI, a nawet film pokazujący nową konsolę systemową. Jednakże jednym z bardziej kluczowych momentów było zaprezentowanie nowej platformy programistycznej - .NET 5.

Nowy, lepszy świat z .NET Core 1.x

Programiści technologii .NET nie mają łatwego życia od roku 2016. To wówczas wypuszczono pierwsze wydanie .NET Core - nowego frameworku od Microsoftu, który to podczas premiery mocno namieszał w dość zamkniętym świecie .Net. Sam Core był wyjątkowy, pozwalał na pisanie multiplatformowych aplikacji. Kod w .NET mógł zatem powstawać i być uruchamiany na systemie Windows, a także Linux czy mac OS. Sama platforma stała się także znacznie lżejsza, co automatycznie zwiększyło wydajność tworzonych aplikacji, a źródła .NET Core trafiły na GitHuba.

Zalety niosły ze sobą wyrzeczenia. .NET Core nie był w linii prostej kompatybilny z klasycznym .NET Frameworkiem. Tworzenie aplikacji w nowym frameworku wymagało stworzenia projektu na nowo. Oczywiście czysty kod napisany w C# można było spokojnie przenieść do Core, ale specyficznie biblioteki musiały być zgodne z .NET Core lub chociażby z .NET Standardem.

W roku wydania .NET Core 1.0 wielu deweloperów pod wpływem znanej i bardzo popularnej metodyki Hype Driven Development (czyli śmieszkowa nazwa na rzucanie się na wszystko co nowe) zaczęło portować istniejące projekty (lub tworzyć nowe) na świeżą platformę programistyczną od Microsoftu. Niestety okazało się to sporym błędem.

.NET Core 2.x – czas na przesiadkę

Wydana ponad rok później wersja 2.0 niosła ze sobą bardzo wiele nowości i usprawnień, ale kosztem kompatybilności wstecznej. Duża ilość newralgicznych zmian w samym .NET Core powodowała, że podbicie wersji z gałęzi 1.x do nowej 2.x było miejscami olbrzymim wyzwaniem. To przez chwilę ostudziło pęd ku nowej platformie, ale tylko na chwilę.

.NET Core stawał się jednak coraz bardziej przyjazny i dopracowany. Gałąź 2.x rozwijała się stabilnie i bez już większych niespodzianek. Kolejne wersje przynosiły nowe usprawnienia i ficzery, a także przenosiły bazowe rozwiązania ze starego .NET Frameworka na .NET Core. Przy okazji multiplatformowej modzie w Microsofcie zyskaliśmy bardzo dobre narzędzia. Visual Studio Code stał się niezmiernie ciekawym i lekkim edytorem (lub jak kto woli IDE) na wiele systemów. Nie konkuruje on z Visual Studio na Windowsa, ale jest ciekawym multiplatformowym narzędziem dla programistów. Z tej okazji zyskali również posiadacze systemu z jabłuszkiem, gdyż Visual Studio na mac OS (czyli Xamarin Studio po rebrandingu, które było rozwinięciem MonoDevelop) otrzymało wiele potrzebnej troski od Microsoftu i stało się dość potężnym IDE.

Stabilizacja z .NET Core 3

Na wrzesień tego roku zaplanowano prezentację nowej wersji .NET Core z linii 3.x. Ewidentnie ta gałąź będzie skupiała się na stabilizacji i próbie dogonienia w kwestii przenoszenia rozwiązań z klasycznego .NET Frameworku. Zatem można będzie pisać w Core 3.0 aplikacje desktopowe z wykorzystaniem WPF i Windows Forms. Wynikowe pliki mają być mniejsze, a aplikacje znacznie lżejsze w czasie działania. Pozwoli to na przeniesienie kolejnych projektów ze starego frameworka na nowego Cora. Uzyskamy również możliwość wykorzystania nowej wersji języka C# w wydaniu 8.0.

Niestety tutaj następuje lekki zgrzyt (niejedyny, o czym dalej), który swego czasu mocno podzielił środowisko .NET podczas pierwszych planów co do Core 3. Otóż nowa wersja oznaczone numerkiem 3.0 będzie miała wsparcie dla tworzenia aplikacji desktopowych tylko na Windowsa. Pytaniem jest zatem jak można traktować multiplatformowość .NET Core skoro część frameworku będzie dostępna jedynie na system z okienkami.

Kolejnym nieoczekiwanym dodatkiem (a raczej brakiem) w .NET Core 3.0 będzie zatrzymanie dalszego przenoszenia rozwiązań znanych z .NET Framework. Do tej pory kolejne wydania Core przynosiły porty technologii znanych z klasycznego .NET. W tym momencie jawnie zostało ogłoszone, iż zarówno Web Forms, jak i WCF, nie będą portowane do nowego Cora. Wiąże się to z tym, iż osoby piszące w któreś z tych technologii nie będą mogły przejść z kodem na .NET Core. O ile jeszcze w przypadku Web Forms jest to zrozumiałe, gdyż samo rozwiązanie jest mocno archaiczne, a utrzymywanie takich systemów jest wyzwaniem godnym najwyższych odznaczeń. Problemem jest jednak WCF, który nie jest przestarzały, a jego duża elastyczność sprawia, że nadal jest wykorzystywany w wielu firmach jako chociażby zewnętrzne API do komunikacji. Widać to było szczególnie w komentarzach na oficjalnym blogu Microsoftu, gdzie ogłoszono plany odnośnie .NET Core 3.

Microsoft w przypadku Web Formsów zaleca przesiadkę na Blazora. Jest to niby duchowy spadkobierca Web Formsów, oparty na WebAssembly, jednakże mam wrażenie, że nie jest to jeszcze kod, który można użyć na produkcji. W przypadku WCF alternatywą jest Web API. Wygląda na to, że nie wszyscy będą mogli w miarę bezboleśnie przejść na nowego Cora, aczkolwiek i tu jeszcze nie jest wszystko jasne, o czym za chwilę…

.NET 5 – the one to rule them all

Jeśli ktoś po przeczytaniu czym jest .NET Core i jakie niesie zmiany, dostał bólu głowy, to teraz proszony jest o wzięcie tabletek przeciwbólowych, najlepiej dwóch ;) Pod koniec roku 2020 Microsoft zamierza wydać nowe dziecko związane z platformą programistyczną i będzie to .NET 5 (pominięto w numerowaniu 4, aby nikt nie czuł się zagubiony, jednakże powoli już zaczyna się robić całkiem sporo tych wersji .NET).

Ma być to połączone najlepszych rozwiązań znanych z .NET Core, .NET Framework, Xamarina i Mono (a założyłbym się, że jakiś czas temu to .NET Core miał to wszystko posiadać, ok koniec złośliwości). Ważnym założeniem są tu środowiska uruchomieniowe. .NET 5 posiadać będzie CoreCLR (z .NET Core) i Mono (a jakże, z Mono), gdzie kod będzie mógł przełączać się z jednego środowiska uruchomieniowego na drugie.

Samo Mono ma być używane chociażby do programowania pod iOS i Blazora, gdyż zarówno kod pisany na smartfony od Apple i Web Assembly wymagają kompilacji AOT (ahead-of-time). AOT w obu tych rozwiązanych jest mocno związane z Mono i to właśnie na tym środowisku będą one odpalane. Pamiętajmy jednak, ze również.NET Native jest kompilacją AOT, ale tylko w przypadku Windowsowego UWP.

.NET 5 obiecuje także skupienie się na niezawodności i szybkości CoreCLR oraz redukcji rozmiarów Mono AOT. Zatem połączenie tych środowisk wygląda na chęć rozszerzenia multiplatformowych możliwości .NET na jeszcze większą ilość urządzeń, przy jak najmniejszej ilości frameworków i różnych rozwiązań systemowych. Połączenie Mono i .NET Core to znak, iż Microsoft ma zamiar na stworzenie jednego uniwersalnego pełnego środowiska developerskiego skierowanego na różne urządzenia docelowe.

Jak żyć?

Nowy .NET 5 i jego przyległe technologie są jeszcze w fazie tworzenia koncepcyjnego. W momencie promowania .NET Core podkreślana była często duża rola .NET Standard. Można określić to jako zbiór bazowych interfejsów, jakie muszą być zaimplementowane przez wszystkie implementacje .NET (Core, Classic .NET, Mono, Xamarin). W momencie prezentacji .NET 5 jego istnienie już nie jest takie oczywiste, skoro .NET 5 zbiera wszystkie technologie pod jednymi skrzydłami. Microsoft sam jeszcze do końca nie wie jaką rolę odegra .NET Standard w .NET 5. Czas pokaże.

Microsoft jasno daje do zrozumienie, że przyszłością obecnie jest .NET Core. Nowe projekty już warto tworzyć w Corze. Z drugiej strony w niedalekiej aż tak bardzo przyszłości .NET Core dostanie aktualizację do .NET 5. Będzie to zatem ewolucja, a nie rewolucja jaka miała miejsce w przypadku przejścia z klasycznego .NET do wersji Core. Oczywiście szczegóły zapewne będziemy poznawać przez najbliższe miesiąca (oby nie lata).

Sam rozwój .NET Framework zostanie zatrzymany na wersji 4.8, ale z aktualizacjami bezpieczeństwa i tymi pod kątem wydajności. Zatem już można oficjalnie odtrąbić, iż .NET Framework został już odstawiony na boczny tor, a przyszłością jest .NET Core.

Będąc w tym wątku warto dodać o brakach .NET Core 3. WCF oraz Web Forms w tym momencie zatrzymują się w kwestii rozwoju (aczkolwiek ten ostatni to już chyba od dawna stał w miejscu), aczkolwiek… chyba nie do końca? Microsoft nie zamierza przenosić tych rozwiązań do .NET Core i .NET 5. Zatem zostaną one w najbliższym czasie zapomnianą technologią w klasycznym .NET, tylko czy aby na pewno? WCF i Web Formsy zostały przeniesione przecież… na Mono, więc może będzie jeszcze jakaś luka, aby móc chociaż na multiplatformowym i uniwersalnym .NET 5 postawić w ramach kompatybilności wstecznej, którąś ze starszych technologii. Kolejne pytania bez odpowiedzi.

Pracy nie zabraknie

Podsumowanie może być tylko jedno – .NET (jako grupa technologii) rozwija się bardzo dynamicznie w ostatnich latach, a Microsoft wcale nie zwalnia tempa. Stopniowe wygaszanie .NET Frameworka już jest faktem. Nowy Core szykowany był powoli jako główny bazowy framework do prac deweloperskich. Microsoft nie zrobił tego w jednym, krótkim przedziale czasowym, ale rozłożył to na lata i strategia ewidentnie poskutkowała. Deweloperzy mieli czas na zaznajomienie się z nowym Corem, jednocześnie próbując migrować obecne rozwiązania na nowe.

Nowy .NET 5 jest już bardziej tajemniczym projektem. Pomimo jasnych założeń co do multiplatformowości pod jednymi skrzydłami, jest tu jeszcze wiele szczegółów, o których nawet sam Microsoft nie do końca wie w jakim kierunku będą rozwijane (lub zostaną zastopowane). Na plus trzeba potraktować to, iż .NET Core został otwarty, jak i inne „sąsiednie” projekty (np. Entity Framework Core) . Jest to o tyle zaskakujące, że w momencie kiedy Microsoft otwiera się z kodem do deweloperów, Oracle w tym samym czasie niszczy Java EE. Co więcej, Eclipse Foundation jest zmuszane do używania tylko jednej wersji środowiska uruchomieniowego od Oracle, zatem Eclipse Foundation nie będzie już neutralnym bytem, co może spowodować cofnięcie ulg podatkowych, a finalnie nawet zamknięcie projektu. Miejmy nadzieję, że tak się jednak nie stanie i dalej .NET i Java będą mogły bezproblemowo konkurować na polu najlepszych języków dla deweloperów. W tym wyścigu Microsoft zyskał znaczną przewagę i raczej nic nie wskazuje na to aby oddał palmę pierwszeństwa konkurencji.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.