Praca zawodowa - programowanie.

Jestem projektantem, programistą, pasjonatem aplikacji komputerowych. Zaczynałem od pisania w asemblerze na mikroprocesory 8-bitowe. Przez prawie całą karierę zawodową pracowałem w firmie telekomunikacyjnej, uczestnicząc wraz z nią w całym procesie rewolucji technologicznej jaka dokonała się w ostatnich kilkudziesięciu latach. Zajmując się sprzętem telekomunikacyjnym, jako główną domenę mojej działalności zawodowej, równolegle zawsze tworzyłem aplikacje, które ułatwiały jego konfigurację i obsługę, automatyzowały wiele procesów biznesowych i technologicznych.

Pierwszym wysokopoziomowym językiem programowania był C, wywodzący się jeszcze z zainteresowań mikrokontrolerami, następnie C++ i środowisko programistyczne C++Builder rozwijane przez ówczesną firmę Borland, twórcę także równoległego bardzo popularnego środowiska dla języka Pascal Delphi. Obydwa znakomite środowiska programistyczne oparte na filozofii programowania komponentowego. Duża ilość bibliotek na stronie np. www.torry.net umożliwia tworzenie zaawansowanych aplikacji. Najbardziej produktywne w swoim czasie (od połowy lat 90. ubiegłego wieku). Obecnie dalej rozwijane przez firmę Embarcadero i niezwykle ciekawe szczególnie w obszarze opracowań aplikacji mobilnych i desktopowych pracujących pod kontrolą Android, Linux iOS, Windows

Szybki rozwój technologii webowych w firmach technologicznych po roku 2000, wymusił poszukiwanie nowych rozwiązań, nowych środowisk programistycznych, wysokiej produktywności. Mój wybór padł na środowisko programowania Visual Studio. Jego filozofia chyba nieco wzorowana na poprzedniku i stworzony od podstaw nowy język programowania C#, dziedziczący najlepsze praktyki z Javy i C++, umożliwiły mi szybką adaptację do pracy w tym środowisku. Na początku pojawiła się technologia WinForms przeznaczona tworzenia aplikacji desktopowych oraz WebForms do tworzenia aplikacji webowych. Technologia ta stanowiła właściwą odpowiedź na wyzwania tamtego czasu. Kolejnymi etapami mojej ścieżki rozwojowej to:
Pozwala na efektywne budowanie GUI aplikacji webowych komponentowo metodą przeciągnij i upuść, stylizację oraz natychmiastową wizualizację GUI. Zestaw komponentów zgodny z architekturą "właściwości-metody-zdarzenia" oraz rozdzielenie kodu html i C# do osobnych plików, wprowadzał prostotę i świetną organizację projektu aplikacji. Następnie pojawiły się efektywne szablony do budowy usług sieciowych, na początek WebService, potem WCF z asynchronicznym wykonywaniem zadań REST. Potężny zestaw bibliotek microsoft tzw.Framework oraz dostęp do zbioru bibliotek dostawców zewnętrznych NuGet, technologię zapytań do baz danych Linq, współpraca z pakietem Office. To pozwalało na bycie w pełni, fullstack developerem. Praca we wzorcu MVC pozwalała też na efektywną współpracę zespołom programistów, poprzez podział zadań na frontend, backend, bazy danych, testowanie. Jedynym ograniczeniem jest platforma Windows, dla której to rozwiązanie jest dedykowane, nie pozwalając na jej wykorzystanie dla innych systemów operacyjnych. Naturalne więc było opracowanie przez Microsoft środowiska programowania wieloplatformowego .Net Core dla Windows, Linux, macOS.


Jest to wieloplatformowym następcą .NET Framework dla Windows. Ceną za wieloplatformowość była ograniczona ilość bibliotek, brak wsparcia przy budowie GUI aplikacji webowych. Nastąpiła natomiast otwartość na społeczność tworzącą oprogramowanie w konwencji open source. Zaczęły szybko powstawać nowe projekty, biblioteki. Wymienię tu, chociażby biblioteki firm Radzen, Syncfusion, Telerik, DevExpress. Aplikacje w tym środowisku powstawały głównie we wzorcu MVC jako Web, okienkowe Desktop, usługi REST, gRPC. Wszystko to, efektywnie wspierane przez środowisko programistyczne Visual Studio microsoft.


Kolejny krok rozwojowy platformy .NET Core. Blazor jest to model programowania komponentowego i umożliwia za pomocą jednego języka np. C# oprogramowanie całego stosu technologicznego aplikacji, od modelowania po backend i frontend. Pozwala jednym kodem wytworzyć aplikację webową, okienkową, a także mobilną. Umożliwia wiele modeli hostowania:
  • Blazor Server
  • działa po stronie serwera, dzięki temu kod aplikacji w C# ma dostęp do wszystkich zasobów potrzebnych logice biznesowej bez konieczności uwierzytelniania się. Interfejs html renderowany jest na serwerze hostingowym.
  • Blazor WebAssembly
  • działa po stronie klienta, dzięki temu kod aplikacji w C# wykonywany jest na zasobach przeglądarki i musi wysyłać żądania http api, aby pobierać dane z serwera hostingowego. Interfejs html renderowany jest w przeglądarce.
  • .NET MAUI Blazor App
  • działa jako aplikacja okienkowa na dowolnym urządzeniu. Dzięki .NET jest wieloplatformowa, a interfejs GUI jest generowany z widgetów html. Jest to szczególnie atrakcyjne rozwiązanie przy produkcji aplikacji mobilnych. Technologia ta jest silnie wspierana przez środowisko programistyczne Radzen Blazor Studio, jak i Visual Studio microsoft.
    Jako przykład ilustracji tej technologi zamieszczam tutaj link do własnego kodu źródłowego w repozytorium GitHub, komunikatora tekstowego zrealizowanego na usłudze gRPC oraz klienta tej usługi, zrealizowanego w technologi Blazor webassembly. Bardziej zaawansowana wersja jest wykorzystywana własnie w tym serwisie. Hosting wykonany w chmurze Azure. Wersję eksperymentalną można też przetestować pod linkiem: komunikator grpc Blazor. Opinie mile widziane.


    Jest to język programowania, który w ostatnim czasie zdobywa coraz większą popularność, szczególnie w obszarach związanych ze sztuczną inteligencją. Dedykowane środowisko programowania to: PyCharm firmy Jet Brains. Niniejszy serwis jest wygenerowany własnie w technologi Flask Python przy użyciu środowiska programowania PyCharm. Ten projekt można także zrealizować w środowisku programowania Visual Studio, który posiada także szablon dla realizacji takich projektów.

    Jeszcze parę zdań na temat hostowania aplikacji.
    Aktualnie dominuje hosting na serwerach w sieci internet lub wydzielonych sieciach wewnętrznych intranet. W internecie dominują hostingi Linuksowe. W sieciach wewnętrznych Linux i Windows. Utworzenie platformy hostingowej w oparciu o Windows wiąże się z poniesieniem większych kosztów, ale czasochłonność produkcji aplikacji jest mniejsza, na pewno przy użyciu Visual Studio i technologi WebForms. Pewnie bardzo dobrym wyborem będzie też hosting w chmurze. W swojej działalności używam Azure Microsoft oraz Google Cloud Platform. Zwrócę uwagę na kilka usług Azure:
  • App Service
  • usługa do hostowania aplikacji potrzebujących pamięci i czasu procesora do przetwarzania danych. W podstawowym planie B1 płatna ok. 13 Euro/m-c za zasoby linuxowe.
  • App static
  • Usługa do hostowania aplikacji nieangażujących pamięci i czasu procesora na serwerze chmurowym. Przetwarzanie może wykonywać się po stronie komputera klienta. Zaletą jest darmowy hosting, natomiast obsługiwane technologie ograniczone są do statycznych stron html, wzbogacanych Java script lub webassembly.
  • App function
  • Usługa do hostowania usługi api. Proste i łatwe w opracowaniu usługi REST. Płatne za wywołanie. Darmowa w określonym limicie wywołań.
  • Azure Storage
  • Magazyn do przechowywania dowolnych plików, darmowo do określonej pojemności.
  • AzureCosmosDB
  • Nierelacyjna baza danych. Darmowa w określonym limicie wywołań.
  • Wiele innych...

  • Ciąg dalszy nastąpi...