Programowanie .NET - kurs zaawansowany
Czas trwania szkolenia:4 dni (32h)
Kod kursu:NET/ADV
Poziom zaawansowania:
O szkoleniu Programowanie .NET - kurs zaawansowany
W cenie otrzymasz:
- Materiały szkoleniowe
- Certyfikat ukończenia szkolenia
- W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Dla kogo?
- Szkolenie kierowane jest do programistów chcących pogłębić swoją wiedzę z zakresu platformy .NET i języka C# oraz osób programujących dotychczas w innych językach chcących rozpocząć pracę ze środowiskiem .NET
Wymagania
- Umiejętność posługiwania się środowiskiem Visual Studio
- Znajomość założeń programowania obiektowego
- Podstawowa znajomość języka C#
Zalety
- Zajęcia ukierunkowane jest na poznanie zaawansowanych zagadnień związanych z językiem C# oraz zdobycie praktycznych umiejętności z zakresu programowania współbieżnego i sieciowego
- Zakres szkolenia obejmuje najważniejsze tematy oraz biblioteki, których znajomość konieczna jest do sprawnej i wydajnej pracy z platformą .NET
- Uczestnicy szkolenia stawią czoła najczęściej pojawiającym się w codziennej pracy problemom i zadaniom
- Dzięki skupieniu się na zagadnieniach specyficznych dla platformy .NET, szkolenie pozwala na wsparcie procesu migracji programistów z innych technologii
- Bardzo duży nacisk na praktyczną stronę programowania
- Program szkolenia dopasowany do najnowszych trendów rynkowych
- Poza samą technologią .NET omówione zostaną najpopularniejsze biblioteki używane w większości komercyjnych projektów
- Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
- Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
- Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
Cele szkolenia
- Zdobycie wiedzy na temat zaawansowanych aspektów platformy .NET oraz języka C#
- Przygotowanie uczestników do efektywnej i wydajnej pracy z platformą .NET
- Przekazanie wiedzy z zakresu dobrych praktyk w procesie wytwarzania oprogramowania z użyciem języka C#
- Zaznajomienie uczestników z najpopularniejszymi bibliotekami używanymi w pracy ze środowiskiem .NET
Program
Kolekcje
- Podstawowe kolekcje: listy, słowniki
- Kolejki, stosy
- Kolekcje współbieżne - ConcurrentBag, ConcurrentQueue, ConcurrentDictionary
- Definiowanie własnych kolekcji
Typy generyczne
- Tworzenie klas generycznych
- Definiowanie metod generycznych
Kowariancja i Kontrawariancja
Typy anonimowe
- Delegaty
- Wyrażenia lambda
- Anonimowe delegaty i domknięcia w C#
- Tworzenie anonimowych obiektów
- Func/Action
Typ dynamic i Dynamic Language Runtime
Metody rozszerzające
Method Chaining
- Wprowadzenie do wzorca Method Chaining
- Definiowanie własnych interfejsów Fluent
- Omówienie zalet interfejsów Fluent i przypadków zastosowania
LINQ
- Czym jest LINQ
- Przegląd podstawowych operatorów LINQ
- LINQ to Objects
- Łączenie wyrażeń LINQ z wykorzystaniem Method Chaining
- Operatory projekcji
- Agregacja
- Grupowanie
- Złączenia
- Zalety stosowania LINQ
- Własne operatory i rozszerzenia
Mechanizm refleksji
- Idea stosowania refleksji
- Pobieranie informacji o składowych typów
- Tworzenie obiektów z wykorzystaniem mechanizmu refleksji
- Wykorzystanie atrybutów
Wielowątkowość
- Zastosowanie wielowątkowości w aplikacjach
- Zarządzanie cyklem życia wątku - tworzenie, usypianie, kończenie
- Synchronizacja wątków
- Zakleszczenia
- Pule wątków
- Dobre praktyki związane z wielowątkowością
Metody asynchroniczne
- Wykorzystanie Task Parallel Library
- Użycie async, await
Wprowadzenie do przetwarzania współbieżnego
- Idea przetwarzania współbieżnego
- Instrukcje Parallel LINQ
- Pętle współbieżne
- Wydajność przetwarzania współbieżnego
Wprowadzenie do programowania sieciowego
- Gniazda sieciowe
- Wykorzystanie klas TcpClient i TcpListener do komunikacji sieciowej
- Wykorzystanie wielowątkowości w programowaniu sieciowym
Komunikacja HTTP
- Wykorzystanie komunikacji HTTP w usługach sieciowych
- Użycie HTTPWebRequest/HTTPWebResponse
- Zastosowanie uproszczonego interfejsu obsługi HTTP - WebClient
Programowanie aspektowe (PostSharp)
- Idea i zalety programowania aspektowego
- Wprowadzenie do biblioteki PostSharp
- Definiowanie własnych aspektów
Kontener IoC (opcjonalne)
- Wzorzec Inversion of Control
- Wprowadzenie do kontenera Autofac
- Rejestrowanie składowych kontenera
- Rozwiązywanie zależności
- Automatyczne wstrzykiwanie zależności
- Zalety i przypadki użycia wzorca IoC
Testy jednostkowe (opcjonalne)
- Idea testów jednostkowych i ich wpływ na niezawodność kodu
- Porównanie najpopularniejszych bibliotek do testów jednostkowych dostępnych w środowisku .NET - MS Test, NUnit, XUnit
- Tworzenie testów jednostkowych, klasa Assert
- Uruchamianie testów jednostkowych, wprowadzenie do Test Explorer
- Użycia rozszerzeń FluentAssertions
- Wprowadzenie do metodyki Test-driven development
Biblioteka logująca NLog (opcjonalne)
- Znaczenie modułu logowania w systemach produkcyjnych
- Poziomy logowania
- Tworzenie pliku konfiguracyjnego NLog
- Definiowanie celów oraz reguł logowania
- Formatowanie wyjściowe logów