Programowanie .NET - kurs zaawansowany
LICZBA DNI: 4 (32h)
KOD KURSU: NET/ADV
Weź udział w szkoleniu
Termin
Lokalizacja
Trener
Cena / os
24
maja
Zdalne,
Termin
24
maja
Lokalizacja
Zdalne,
Trener
Cena / os
Powiadom
o kolejnych terminach
O szkoleniu
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
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
- Lock (Monitor)
- Semaphore
- ReaderWriterLock
- WaitEventHandle
- 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
