Trwa .NET Conf – Microsoft porządkuje swój najlepszy framework
Na dni 23 do 25 września zaplanowano tegoroczną konferencję .NET Conf, poświęconą najnowszym zmianom w środowisku programistycznym .NET i jego najnowszej implementacji, w postaci .NET Core 3.0. Konferencja jest transmitowana online, a "pytania z sali" są gromadzone przez portal Twitter, za pomocą hasztaga ♯dotNETConf. Ma na niej zostać zaprezentowana również finalna wersja środowiska uruchomieniowego .NET Core w wersji trzeciej, którą na ostatnim HotZlocie przybliżał pokrótce djfoxer.
Nowości prezentowane w ramach premiery .NET Core 3.0 powinny ucieszyć programistów chcących wykorzystywać najnowsze trendy i technologie – zdanie to brzmi jak pozbawiony treści banał. Któż wszak promowałby swoje środowisko jako nieprzystające do nowoczesnych realiów? Okazuje się, że w przypadku .NET powyższe stwierdzenie to po prostu prawda. Wynika to niekoniecznie z samych rozwiązań dostępnych w 3.0, a z powszechnych oczekiwań względem .NET, wciąż żyjących stereotypów oraz nieaktualnych i błędnych opinii, głoszonych przez ludzi nieobytych z Visual Studio.
Nie te czasy
Programowanie w .NET od dawna bowiem nie wymaga już ciężkich, drogich i nieprzenośnych środowisk IDE, tworząc przy okazji otyły, "korporacyjny" kod, zdolny do właściwej współpracy tylko z jakimiś nudnymi aplikacjami bankowymi lub portalami nieszczęśliwie zależnymi od rozwiązań Microsoftu. Język C♯ 8.0 to chyba najnowocześniejszy klasyczny język obiektowy na świecie (spróbujemy to ocenić). Xamarin umożliwia szybkie i tanie tworzenie mobilnych aplikacji napisanych w .NET. Framework Blazor ułatwia pisanie web-aplikacji bez konieczności nurkowania w PHP i bez żadnych wyrzeczeń z tym związanych. Współpraca z Azure i Kubernetesem także jest na wyciągnięcie ręki. Podobnie uczenie maszynowe, za pomocą języka R i ML.NET. Nawet Entity Framework dojrzał (o tym wszystkim poniżej). Dzisiejszy programista .NET nie jest jakimś odmrożonym z lodowca dziwakiem, który nie ma szans sprzedać swojego kodu poza dedykowane, nudne rozwiązania bez wyjścia na internet. Języka C♯ naprawdę warto się uczyć.
Inną kwestią, której kompletnie nie należy się spodziewać po nowym .NET jest... Windows. Tak jest. UWP nie żyje. Niektórzy programiści będą uparcie twierdzić, że UWP ma się doskonale, bo od teraz da się wpuścić kontrolki UWP w aplikacje WPF i da się konteneryzować także programy Win32. Uparcie jednak pozostanę przy poglądzie, który głosi Rich Woods twierdząc, że Microsoft nie będzie inwestować w UWP. Ostatecznie podważa to argument stanowiący, że .NET wymaga systemu Windows.
Nowości w języku
Zacznijmy od nowości w samym języku programowania (choć nie jest to najciekawsza część). Pierwszą kwestią godną uwagi jest rozszerzony mechanizm dopasowywania wzorców. Kolejną – bardzo ciekawa deklaracja using, umożliwiająca automatyczne zniszczenie obiektów, gdy kończy się ich zasięg. Innymi słowy, zamiast pilnować użycia metody Dispose(), można wyznaczyć zakres istotności obiektu za pomocą dyrektywy using:
[code=csharp]public static void example(){ using (var reader = new System.IO.StreamReader(fh)); while (!reader.EndOfStream) { // ... }}[/code]
Uważne oko c-sharpowca dostrzeże, że od teraz nie trzeba wyrażać zakresu jawnie klamerkami. Roslyn ma sobie z tym radzić sam. Oczywiście deklaracja using, jak dawniejsze wyrażenie "klamerkowe", woła destruktor.
Nullable i przyjaciele
Inną kwestią, która prawdopodobnie pozwoli uniknąć tworzenia paskudnego kodu w postaci chałupniczych wrapperów nullable, jest typ-referencja z cechą "nullowalności". Zapis typu "string? var1" nie powinien być obcy np. ludziom zajmującym się Entity Framework. Jego rola w C♯ wzrosła. Zresztą, jak już jesteśmy przy nullach, nalezy wspomnieć o nowym operatorze przypisania ?==. Oznacza on "przypisz wartość, jeżeli zmienna docelowa jest jeszcze pusta" i strasznie mi się on podoba.
Wdrożenia i framework
Zmian jest oczywiście więcej, bo przecież .NET to nie tylko C♯. Dlatego zapoznajmy się z notami wydawniczymi .NET Core 3.0, by odnaleźć w nich najbardziej interesujące usprawnienia. Nie chodzi już teraz o kwestie językowe, a o platformę. Na przykład kilka prezentów dla wdrożeniowców: narzędzie "dotnet publish" pozwala na wyprodukowanie projektu jako jeden wielki plik EXE, z bibliotekami, zasobami, ale także całym .NETem. Jednoplikowe produkty ułatwiają wdrożenia. Wie o tym każdy, kto natknął się na brak Frameworka na Windows.
Nowy .NET, podobnie jak nowy PowerShell przestał brnąć jedynie w stronę wieloplatformowości i zaczął też oferować rozwiązania specyficzne dla Windows. To konieczne: bez tego .NET Core pozostawałby niszowy dla desktopu, a programiści trwaliby w swych przyzwyczajeniach i używali .NET Framework. Dlatego możliwe jest dziś (ponownie!) tworzenie projektów WPF i Windows Forms. Fanów Windows Forms, czyli osoby tak leniwe jak ja, ostrzegam. Projektant form jeszcze nie działa w pełni! Nie znaczy to, że WinForms nie działa. Przeciwnie: możliwe stało się np. stosowanie trybu wysokiej rozdzielczości dla form.
Nie zabrakło też kilku nowości dla Linuksa. Są rzeczy małe, jak możliwość odwoływania się do portów szeregowych przez System.IO.Ports.SerialPort i czytania strumieni bajtów. Oraz rzeczy duże, jak kompilacja do kodu ARM64 na Linuksie. Niestety jeszcze nie dla kodu ogólnego przeznaczenia, ale to i tak imponująca zmiana.
Co z Entity Framework?
Pozostaje jeszcze wspomnieć o Entity Framework Core. Był to jeden z tych elementów, który najbardziej ucierpiał na konwersji do postaci "Core". Jego klasyczna wersja była bowiem właśnie takim korpo-rozwiązaniem, pełnym klikanych kreatorów, diagramów, przepływów code first i wielu, wielu innych zabawek, działających wyłącznie pod Visual Studio. Ktokolwiek więc używał Entity Framework, migrację na Core rozważał... niechętnie. Czy jest lepiej, przekonamy się już wkrótce. Na pewno jest "zgodniej". Nowe projekty, pisane w C♯ i pod ASP.NET, należy obudowywać w Entity Framework Core. Jeżeli jednak utrzymujemy stare projekty, celujące w .NET Framework, odłożyłbym migrację, bo dzięki EF na pewno się wydłuży. W takim przypadku bezpieczniej jest podbić się do klasycznego Entity Framework, wydanego w wersji 6.3, oraz do .NET FX 4.8. Tutaj cuda się nie zdarzają. Czytelników zainteresowanych tematyką entity Framework zapraszamy do hałasowania w komentarzach! Być może napiszemy o nim coś więcej.
Konferencja .NET Conf trwa do środy (25 września). Dowiemy się na niej jeszcze między innymi o Blazor, DevOps z Azure, F♯ i testach automatycznych. Nie jest to tylko kampania reklamowa: prezentacje są rzetelne, a prelegenci odpowiadają na pytania. Są tam zresztą znane i lubiane nazwiska. Jeżeli ktoś chce się pobawić nowym .NET, należy zainstalować Visual Studio. Nowości z konferencji niedługo przejdą do głownego kanału. Można też wymusić przejście na kanał Preview. Czeka tam na nas wersja 16.4.0.