Jest to ostatni wpis dotyczący wprowadzenia do programowania w języku C#. Ta cześć jest kontynuacją wpisu C# - następne kroki, który pojawił się po zakończeniu pierwszej części kursu.

Pora zagłębić się nieco bardziej w szczegóły. C#, jako język programowania, jest składową platformy .NET. Pozwala na tworzenie wielu różnych projektów, zaliczamy do nich m.in:

  • Console applications;
  • Windows Forms applications;
  • Web Forms applications;
  • ASP.NET MVC applications;
  • WPF (Windows Presentation Foundation);
  • WCF (Windows Communication Foundation);
  • UWP (Universal Windows Platform).

I tutaj tak naprawdę zaczyna się cała zabawa. Osobiście uważam, że zanim zdecydujesz się na konkretną specjalizację (bądź też pozostaniesz tzw. full-stack developerem), warto zaznajomić się z każdym rodzajem projektu (powyższa lista zawiera najpopularniejsze).

W większości przypadków nauka zaczyna się od aplikacji konsolowej. Projekt i pierwsze linie kodu utworzymy/zaimplementujemy bardzo szybko. Kiedy już przejdziemy przez postawy zwykle trafiamy na nasz pierwszy projekt z interfejsem graficznym, kalkulator. Tutaj pojawiają się aplikacje typu Windows Forms. Jesteśmy w stanie tworzyć swój własny interfejs używając do tego tzw. designera. Na tym etapie nie mamy żadnych dodatkowych komplikacji.

Idąc tym tokiem rozumowania możemy utworzyć aplikację typu WCF (jest to usługa sieciowa, która działa niezależnie od naszej aplikacji). Taka usługa sieciowa może być cześcią wspólną rodziny naszych aplikacji, np. aplikacji desktopowej i aplikacji webowej. Odmiennym typem projektu jest WebAPI które stanowi rozwinięcie WCF ale ze zmianą niektórych koncepcji.

Niestety, nie jesteśmy zachwyceni z designu naszych aplikacji desktopwych, chcemy spróbować czegoś więcej, przygotować aplikację na tableta bądź dopasować się do Metro UI występującego w Windows 8 oraz Windows 10. Pojawa się kolejny typ projektu, WPF. Dochodzi nam jednak do nauki nowy język, XAML (Extensible Application Markup Langauge). Oparty jest na XML'u, a pozwala na tworzenie dużo bardziej zaawanowanego interfejsu użytkownika. Tutaj, chodź zdania są podzielone, warto skorzystać z narzędzia jakim jest Microsoft Blend. Jest to edytor XAML, którego możemy używać bez znajomości tego języka. Na sam początek wystarczy. Każda Twoja zmiana w edytorze będzie wprowadzona do języka XAML a Ty będziesz mógł lepiej zaznajomić się z jego składnią.

Najbardziej zaawansowanym typem tego rodzaju projektów jest Universal Windows Platform. Spójrzcie na poniższy zrzut ekranu a zobaczycie prawdziwy potencjał jaki kryje sie pod UWP:
Universal application platform guide

Uff...przenosimy się teraz do aplikacji webowych. Niezwykle popularnym typem projektów w wielkich korporacjach czy bankach jest nieco przestrzała technologia: Web Forms. Z pozoru podobna do naszych aplikacji okienkowych, z tą różnicą, że aplikacje uruchamiane są w przeglądarce. Możemy korzystać z podobnego designera jak w desktopowym typie aplikacji ale wszystko się zmienia jeżeli chodzi o stronę klienta. Tutaj pojawia się wiele nowości z którymi musimy się zaprzyjaźnić: HTML, CSS, JavaScript czy JQuery.

Niezwykle popularnym typem projektów webowych jest ASP.NET MVC. Jedną z różnic (jak w przypadku aplikacji desktopowych) jest odmiennne podejście do interfejsu użytkownika i kontroli programisty nad całym procesem. Warto poznać sekrety Bootstrap - pozwala nam na tworzenie responsywnego interfejsu użytkownika. Użytkownik nie będzie skazany na komfortowe przeglądanie naszej witryny jedynie na ekranie komputera. Przy użyciu tej biblioteki można z powodzeniem przygotować odmienny interfejs na telefony komórkowe, tablety czy monitory z różnymi rozdzielczościami.

Dodatkowo dochodzi nam ewolucja całej platformy. Możemy się poruszać w środowisku .NET Framework oraz .NET Core. Tak jak wcześniej wspomniałem, wiele zależy od firmy do której traficie. Z doświadczenia wiem, że obie te platformy będą się przeplatały i warto mieć rozeznanie w każdej z nich.

Starałem się przekazać jedynie główne, podstawowe informacje dotyczące kolejnych kroków na drodze do bycia lepszym programistą. Tak jak wspomniałem w poprzedniej części artykułu, korzystam głównie z materiałów w języku angielskim. Nie oznacza to, że nie znajdziemy niczego wartościowego w języku polskim. W poniższej sekcji znajdzie książki, które przybliżą Wam pojęcie klasy, obiektu, dziedziczenia czy hermetyzacji. Wiedza zostanie rozszerzona o technologię WPF, język XAML i pisanie aplikacji desktopowych pod system Windows 8 oraz Windows 10. Jeżeli chcecie spróbować wykorzystać język C# do pisania gier warto zwrócić się w kierunku środowiska Unity. Nieocenione w codziennej pracy są również testy jednostkowe oraz sama znajomość głównego narzędzia, Visual Studio.

HTML jest językiem pozwalającym opisać strukturę informacji zawartych na stronie internetowej. Jeżeli chcecie uniknać błędów takich jak brak opisu dla obrazka, tworzenie listy za pomocą znaku kolejnej linii, umieszczanie stylu w selektorze HTML czy zapominanie o deklaracji dokumentu DOCTYPE warto zajrzeć do poniższych książek:

CSS są to tzw. kaskadowe arkusze stylów, które występują nierozłącznie z HTML'em. Pozwalają na opisanie sposobu w jaki nasza strona ma zostać wyświetlona, np. rodzaj czcionek, kolor tekstu, marginesy, odstępy pomiędzy różnymi elementami czy ustawienie obramowania. Wszystkiego dowiedzie się z poniższych książek:

Bootstrap jest jednym z najlepszych frameworków do tworzenia stron i aplikacji internetowych. Warto jednak przed rozpoczęciem pracy zapoznać się z HTML i CSS, gdyż one stanowią trzon tej biblioteki. Z poniższych książek dowiesz się jak utworzyć odpowiednią strukturę, w jaki sposób rozłożyć poszczególne panele na stronie oraz jak powinna wyglądać poprawnie przygotowana nawigacja:

JavaScript jeszcze jakiś czas temu używany był głównie do tworzenia stron internetowych. Obecnie, pozwala na pisanie aplikacji mobilnych czy desktopowych. Przygotowałeś strukturę dokumentu, wszystko opisałeś za pomocą CSS, możesz wyświetlić stronę na swoim telefonie komórkowym ale czegoś Ci brakuje... nie możesz dokonać wstępnej walidacji danych użytkownika rejestrującego się w Twojej aplikacji, nie możesz ukryć niektórych przycisków czy wysłać danych z formularza - w tym pomoże Ci JavaScript:

JQuery to szybki, lekki, bogaty w funkcje framework JavaScript działający po stronie klienta. Dostarczył on bardzo potrzebnego wsparcia dla JavaScript. Przed udostępenieniem JQuery kod JavaScript był dużo dłuższy, cięższy, nawet w przypadku mniejszej funkcjonalności. JQuery pozwala na szybkie i efektywne zarządzanie strukturą dokumentu, ułatwia asynchroniczne przesyłanie danych (AJAX) oraz pozwala tworzyć podstawowe animacje bez większych problemów:

Wisienka na torcie pozostała na sam koniec: ASP.NET MVC oraz ASP.NET Core. Dodatkowo została wymieniona jedna książka związana z ASP.NET Web Forms ponieważ ten projekt wciąż jest spotykany u wielu pracodawców.

ASP.NET MVC oraz ASP.NET Core to projekty w których wykorzystujemy każdy ze wspomnianych wyżej języków oraz bibliotek. C# stanowi trzon, stronę serwera, po stronie klienta napotkamy HTML, CSS, Bootstrap, JavaScript, JQuery i wiele, wiele więcej... tym właśnie charakteryzuje się pozycja Full-Stack Developera - osoba, która sprawnie porusza się po wszystkich warstwach stosu technologicznego.

Nieoceniony źródłem dodatkowej wiedzy będzie ponownie Microsoft Virtual Academy. Oferta kursów jest niezwykle szeroka: Microsoft Virtual Academy
a kilka z nich mogę polecić:

Zapraszam oczywiście do czytania stale rosnącej liczby artykułów oraz niedawno udostępnionego widoku Bloga, który pozwala być na bieżąco ze wszystkimi wpisami.