Wprowadzenie

Po kilkumiesięcznej przerwie związanej z arykułami dotyczącymi Angulara wracamy do naszej docelowej technologii. Najwyższa pora zagłębić się w aktualizacje firmy Microsoft celem sprawdzenia jaka jest przyszłość platformy .NET oraz czego możemy spodziewać się w najbliższej przyszłości. Ta zapowiada się niezwykle ciekawie z uwagi na informacje dotyczące dostarczenia technologii, która pozwoli na tworzenie wszelkiej maści aplikacji na platformy takie take Windows, Linux, Android czy nawet watchOS.

Zanim jednak zagłębimy się dalej we wszelkie nowości "ujednoliconej platformy" powinniśmy na chwilę zatrzymać się przy .NET Core...

.NET Core vs Przyszłość

W momencie pisania artykułu zalecaną wersją frameworka .NET Core jest wersja 3.1, która ma zapewnione wsparcie przez dłuższy okres – jest to tzw. LTS (long-term support). Jeżeli chcecie zerknąć bardziej szczegółowo w historię odsyłam do adresu: https://dotnet.microsoft.com/download/dotnet-core lub poniższego zrzutu ekranu: Wsparcie .NET Core

.NET Core jest obecnie dojrzałą i stabilną platformą gotową na zaawanansowane implementacje wymagane przez oprogramowanie biznesowe. Oczywiście świetnie nadaje się do również do naszych własnych projektów. Rozmawiając o platformie .NET Core warto wiedzieć, że:

  • obsługuje większość rzeczy, których używamy w technologii .NET Framework;
  • obsługuje WinForms oraz WPF (osobiście nie przetestowałem tego rozwiązania ponieważ od kilku lat mamy trend przenoszenia aplikacji do przeglądarek internetowych zamiast tworzenia dedykowanych aplikacji desktopowych);
  • posiada pakiet zgodności z systemem Windows. Paczka ta jest niezwykle przydatna przy dokonywaniu migracji starszych projektów do platformy .NET Core, odsyłam do źródła: https://devblogs.microsoft.com/dotnet/announcing-the-windows-compatibility-pack-for-net-core/

Powyższe punkty są równie istotne jak to, czego .NET Core nie wspiera i nie ma zamiaru wspierać w przyszłości. Mówimy tutaj o:

  • ASP.NET Web Forms;
  • ASP.NET MVC;
  • Serwisy WCF;
  • Windows Workflow;
  • AppDomains;
  • Code Access Security (CAS)

Jest to o tyle istotne, że .NET Core nadal będzie ulepszany/modyfikowany/aktualizowany o nowe (przydatne) funkcjonalności w przyszłości. Spójrzmy na tzw. roadmap: .NET Roadmap

W listopadzie 2020 roku wrócimy ponownie do nazewnictwa .NET. Obecnie możemy wyróżnić dwie wersje frameworka .NET, tzn. .NET Framework oraz .NET Core. Celem .NET 5 jest "zebranie wszystkiego co najlepsze" z .NET Framework, .NET Core, Xamarin oraz Mono celem dostarczenia bibliotek, interfejsów API oraz środowiska uruchomieniowego w jednej, ujednoliconej platformie, ktora pozwoli na tworzenie różnego typu aplikacji dostępnych na wielu systemach.

.NET – ujednolicona platforma

.NET 5 - ujednolicona platforma

.NET 5 dostarczy nam biblioteki, narzędzia, interfejsy API do budowania, testowania, uruchamiania i wdrażania oprogramowania przeznaczonego na wiele platform do których możemy zaliczyć Windows, Linux, MacOS, iOS, Android, watchOS, WebAssembly oraz szereg urządzeń tj. komputery, przeglądarki internetowe, urządzenia IoT, tablety, telefony i wiele, wiele więcej.

Niebywałą zaletą jest fakt, że ujednolicona platforma będzie zawierała w sobie wszelkie niezbędne komponenty uruchomieniowe, biblioteki wysokiego i niskiego poziomu, kompilatory, języki i narzędzia. Nie mogę doczekać się utworzenia swojej pierwszej aplikacji mobilnej na system Android bazując na moim ostatnim projekcie o którym więcej możecie przeczytać tutaj: Projekty - ŁapKsiążke.pl

O przyszłości już nieco wspomieliśmy, więcej informacji można uzyskać patrząc na zamieszczony powyżej roadmap. Najciekawszy jest fakt, że wszystkie kolejne wersje zostały zapowiedziane na listopad. Czekamy...

.NET 5 – kluczowe cechy

Lista kluczowych cech jest obszerna, poniżej wymienimy te najważniejsze:

  • ujednolicona platforma ‘do wszystkiego’: Windows, Linux, Web Development, Mobile Development, IoT, Cloud, Machine Learning, Data Science, Gaming
  • szerokie wsparcie społeczności oraz firmy Microsoft;
  • wieloplatformowość oraz dostępność na każdym urządzeniu w dowolnej chwili;
  • obsługa wszystkich głównych możliwości platform .NET Framework, .NET Core, Xamarin;
  • skalowalność, szybkość i wydajność;
  • mała objętność plików projektu;
  • wsparcie najlepszych środowisk programistycznych do których możemy zaliczyć Visual Studio, VS Code, VS dla Mac oraz CLI (interfejs wiersza poleceń).

Języki i środowiska uruchomieniowe

Xamarin jest używany do tworzenia aplikacji międzyplatformowych. Mono jest jego środowiskiem uruchomieniowym – siłą rzeczy jest to jego cześć. Z kolei w przypadku .NET Core środowiskiem uruchomieniowym jest CoreCLR. Wraz z udostępnieniem .NET 5 oba środowiska będą wspierane oraz aktualizowane – najbardziej istotne jest jednak ich współdziałanie.

.NET 5 będzie wspierał główne kompilatory oraz języki działające w obecnych frameworkach. Mówimy tutaj o C#, F# oraz VB.NET. Również język służący do opisu interfejsów graficznych, tj. XAML, będzie wspierany.

Aplikacje desktopowe

.NET 5 będzie wspierał wszystkie główne biblioteki pozwalające na tworzenie aplikacji desktopowych. Mówimy tutaj o Windows Forms, WPF, UWP oraz Xamarin.

Myślę, że powyższe typy aplikacji są znane dla każdego z Was i nie będziemy dodatkować zagłębiać się w ten temat (na tym etapie). Ja niestety przez ostatnie kilka lat nie miałem wielkiej styczności z aplikacjami desktopowymi dlatego nie jestem w stanie podać interesujących ciekawostek. Jedyny okres to pisanie aplikacji desktopowych w oparciu o WPF na tablety działające pod kontrolą systemu Windows.

Najważniejsze dla nas (w przypadku ewentualnych projektów desktopowych) jest wsparcie przez .NET 5 bibliotek Entity Framework, ADO.NET czy GDI+ - ta ostatnia odpowiedzialna jest za przedstawienie obiektów grficznych oraz sformatowanego tekstu na urządzeniach takich jak monitory czy drukarki. Jeżeli drukarki są dla Was zaskoczeniem – biblioteka pomaga np. w przygotowaniu paragonów fiskalnych.

Aplikacje webowe

Budowa aplikacji webowych oraz chmurowych będzie możliwa w oparciu o szeroko używane technologie, tj. ASP.NET Core oraz Web API. Pamiętajcie, że .NET 5 nie jest w pełni nową technologią. Obecnie dojrzałe oraz wciąż rozwijane frameworki będą stanowiły o silne nadchodzącego .NET 5.

Przypomnijmy sobie zatem jakie są główne cechy ASP.NET (Core i Web API):

  • ASP.NET dostarcza framework pozwalający na przetwarzanie żądań internetowych po stronie serwera WWW;
  • składnia szablonów stron internetowych potocznie zwanych jako Razor - służy do budowania dynamiczych stron internetowych przy użyciu języka C#;
  • biblioteki popularnych wzorców projektowych takich jak MVC (Model-Widok-Kontroler);
  • System uwierzytelniania zawierający biblioteki, bazę danych i szablony stron obsługi logowania;
  • Możliwość wykorzystania istniejącego kodu logiki biznesowej napisanej w języku C#;
  • Obsługa REST API;
  • Pisanie apilikacji działających w czasie rzeczywistym przy wykorzystaniu SignalR;
  • Obsługa mikroserwisów i wysoka skalowalność;
  • Wsparcie TypeScript przy budowie skalowalnych i obiektowych aplikacji;
  • Pozwala na budowanie dynamicznych stron internetowych przy wykorzystaniu połączenia C#, HTML, CSS oraz JavaScript ze wsparciem wspomianego powyżej silnika Razor;
  • Współpraca z bibliotekami Angular czy React.

Zagadnienie aplikacji webowych jest naprawdę szerokie oraz niezywykle popularne w dzisiejszych czasach. Jest to jeden z głównych powodów dlaczego na bloku zamieściłem wprowadzenie do Angulara oraz połączenie tej technologii z .NET Core. Po więcej informacji odsyłam tutaj: Angular - poradnik tworzenia aplikacji

Aplikacje mobilne

Programowanie mobilne jest niezwykle ciekawym zagadanieniem, którego się jeszcze nie podjąłem na tym bloku. Jeżeli bylibyście zainteresowani takim cyklem podzielcie się ze mną taką informacją wykorzystując przygotowany formularz kontaktowy. Miałem wielokrotnie plany wykorzystać Xamarin, aby zbudować wieloplatformową aplikację mobilną działającą na systemach iOS oraz Android ale zawsze brakowało mi czasu. Wraz z nadejściem .NET 5 możemy poruszyć ten temat.

W przypadku Xamarina posługujemy się językiem XAML do opisu interfejsu użytkownika. Znajomość WPF będzie tutaj dodatkowym atutem. Logikę biznesową piszemy przy wykorzystaniu języka C#.

Xamarin jest odpowiedzialny za kompilację kodu C# oraz XAML do natywnych binarek systemu iOS oraz Android zanim zostaną one uruchomione na tych urządzeniach.

Aplikacje działające w chmurze

.NET 5 stawia sobie rozwój aplikacji Azure jako jedną z głównych funkcjonalności fremeworka. Rozwój aplikacji w chmurze Azure obejmuje połączenie frameworków i narzędzi do których możemy zaliczyć ASP.NET, Web API, idei takich jak serverless computing, architektura mikroserwisów, kontenery, DevOps i wiele więcej.

Tworzenie gier

Z ręką na sercu muszę przyznać, że jednym z powodów tumaczenia sobie czemu kupuje Xboxa jest chęć napisania własnej gry i przetestowanie jej na konsoli. Konsole posiadam ale przez ostatnich pare lat nie powróciłem do tego tematu...

Jednakże, 7 lat temu, kiedy szukałem swojej drogi w programowaniu, brałem udział w warsztatach twórców Wiedźmina. Były to niezwykle ciekawe zajęcia pokazujące proces tworzenia gier. Jeżeli kiedyś zastanawialiście się po co na studiach uczyliśmy się np. całek...tak, ich użycie jest powszechne przy tworzeniu silników gier. Jednym z takich przykładów są animacje ognia. Udało mi się odnaleźć nawet moje konkursowe video...

To było 7 lat temu, proszę nie oceniać efektów a jedynie chęci.

Wróćmy jednak do .NET 5. Unity jest integralną częścią platformy .NET, będzie obsługiwane przez .NET 5 oraz Visual Studio 2019. Pozwoli na tworzenie gier na konsole Xbox, urządzenia mobilne oraz inne platformy do gier. Odżyły moje wspomnienia – może spróbujemy w przyszłości zrobić prostą grę? Czekam na wszelkie sugestie interesujących Was zagadnień.

Uczenie maszynowe

W temacie uczenia maszynowego jestem kompletnie zielony. Mogę jedynie powołać się na suche fakty dotyczące tego zagadnienia na platformie .NET. 7 maja 2018 roku Microsoft udostępnił platformę uczenia maszynowego o nazwie ML.NET. Uczenie maszynowe pozwala na realizację wielu scenariuszy takich jak przewidywanie cen, rekomendacja produktów, wykrywanie obiektów i wiele, wiele więcej. Jeżeli checie zagłębić się w szczegóły platformy zacznijcie od tej witryny: https://dotnet.microsoft.com/learn/ml-dotnet/what-is-mldotnet

Wraz z pojawieniem się .NET 5 chciałbym poruszyć wiele nowych tematów a wprowadzenie do uczenia maszynowego jest jednym z nich.

Internet rzeczy (IoT)

Zgodnie z definicją z wikipedii: "koncepcja, wedle której jednoznacznie identyfikowalne przedmioty mogą pośrednio albo bezpośrednio gromadzić, przetwarzać lub wymieniać dane za pośrednictwem inteligentnej instalacji elektrycznej KNX lub sieci komputerowej."

Pojęcie o tyle ciekawe, że może znacznie zmienić naszą przyszłość. Najprostsze przykłady to inteligentne domy czy miasta. Niezależne sterowanie kaloryferów, włączanie światła w domu wraz z wykryciem telefonu właściciela w domowej sieci WiFi, zamknięcie bramy garażowej po oddaleniu się samochodu z posesji – takie rozwiązania są już możliwe w realizacji przy użyciu urządzeń typu Rasberry Pi. Z drugiej strony wielkie korporacje jak Audi testują obecnie rozwiązania informujące o światłach drogowych na trasie naszego przejazdu. To ciekawy krok zmierzający w kierunku tworzenia inteligentnych miast. Wyobraźcie sobie sytuację w której kierowca karetki trafią na tzw. zieloną fale – nie ma dodatkowego ryzyka wypadku na skrzyżowaniach. Wiem, że to nie jest najbliższa przyszłość ale zapotrzebowanie na twórców takich rozwiązań będzie stopniowo rosło.

.NET 5 wychodzi nam na przeciw. Będzie obsługiwał wszelkie urządzenia z systemem Windows IoT. Architektura będzie skierowana do procesorów ARM32 oraz ARM64. Dzięki technologii UWP możemy również tworzyć aplikacje IoT działajace na urządzeniach takich jak Rasberry Pi czy MinnowBoard Max.

Interoperacyjność

Interoperacyjnojść jest niezwykle ciekawym zagadanieniem ponieważ interfejsy systemu przygotowane są w taki sposób, aby były w stanie współpracować z innymi produktami lub systemami bez żadnych ograniczeń implementacji.

W przypadku .NET 5 jest to niezwykle istotne ponieważ framework będzie kontynuował współpracę z innymi językami i bibliotekami takimi jak Angular, React oraz innymi bibliotekami JS, którę są/będą wspierane przez Visual Studio. Nic nie stoi na przeszkodzie w pełnej integracji z projektami .NET. Pełna integracja będzie możliwa przy wykorzystaniu projektu Blazor, który pozwoli na pisanie front-endu przy pomocy języku C# oraz wywoływanie przy jego pomocy bibliotek JavaScript.

Platforma będzie również oferowała interoperacyjność z Javą, Objectiv-C oraz Swift. Oznacza to, iż z poziomu kodu C# będziemy w stanie wywołać metody i klasy Javy oraz innych języków.

Podsumowanie

Wprowadzenie do nowej wersji platformy uważam za wystarczające. Na datę premiery jeszcze trochę poczekamy ale z pełną świadomością czego możemy się spodziewać i jak ciekawe rozwiązania są przed nami. W ramach swojego rodzaju przygotowań przeorganizowałem nieco widok, który możecie znaleźć w tym miejscu - jest to zakładka Wybranych Artykułów. Wydzieliłem kolejną sekcję dla Angulara oraz przygotowałem specjalną zakładką dla tego i kolejnych artykułów związanych z .NET 5.