Szczegóły ebooka

Zostań ekspertem .NET 8. Dobre praktyki, wzorce projektowe, debugowanie i testowanie aplikacji

Zostań ekspertem .NET 8. Dobre praktyki, wzorce projektowe, debugowanie i testowanie aplikacji

Mark J. Price

Ebook

Większość książek programistycznych obejmuje jedynie wybrane tematy, takie jak bezpieczeństwo, testowanie aplikacji czy wdrażanie w chmurze. Inne koncentrują się na architekturze aplikacji, wzorcach projektowych albo przygotowaniu się do rozmów kwalifikacyjnych. Trudno jednak znaleźć przystępny przewodnik, który pozwoliłby krok po kroku przyswoić wszystkie umiejętności zawodowego programisty .NET.

Dzięki temu podręcznikowi odblokujesz swój potencjał i otworzysz drogę do kariery. Nauczysz się zarządzania kodem źródłowym przy użyciu Gita i skutecznego nawigowania po projektach. Odkryjesz zaawansowane techniki debugowania i dokumentowania kodu, co poprawi jego czytelność i ułatwi utrzymanie projektów. Zgłębisz też tajniki kryptografii, by zapewnić poufność i spójność danych na każdym etapie cyklu życia aplikacji. W książce nie zabrakło wnikliwego spojrzenia na nowoczesne zagadnienia, takie jak budowanie inteligentnych aplikacji korzystających z modeli LLM, wstrzykiwanie zależności, testowanie czy konteneryzacja za pomocą Dockera. Dzięki wskazówkom dotyczącym najlepszych praktyk architektury oprogramowania zaczniesz tworzyć solidne, skalowalne i łatwe w utrzymaniu aplikacje!

W książce:

  • zaawansowane techniki debugowania
  • ochrona danych i aplikacji przy użyciu kryptografii
  • zastosowanie modeli LLM i programowanie chmurowe z .NET Aspire
  • wstrzykiwanie zależności
  • optymalizacja wydajności poprzez benchmarking i testowanie
  • przygotowanie się do rozmowy kwalifikacyjnej

Od juniora do eksperta. Wszystko, co musisz wiedzieć o .NET!

O autorze

O recenzentach

Wstęp

Rozdział 1. Wprowadzenie do narzędzi i umiejętności dla .NET

  • Wprowadzenie do tej książki i jej zawartości
    • Dodatkowe książki jako podstawa do nauki
    • Odbiorcy tej książki
    • Narzędzia
    • Umiejętności
    • Testowanie
    • Projektowanie systemów i rozwój kariery
  • Konfigurowanie środowiska programistycznego
    • Wybór odpowiedniego narzędzia i typu aplikacji do nauki
    • Jakiego sprzętu i oprogramowania używałem?
    • Wdrażanie wieloplatformowe
    • Pobieranie i instalowanie Visual Studio
    • Pobieranie i instalowanie Visual Studio Code
    • Pobieranie i instalowanie Ridera
    • Inne narzędzia firmy JetBrains
    • Narzędzia AI w Chrome
  • Wykorzystywanie repozytorium GitHuba dla tej książki
    • Pobieranie kodu rozwiązań z repozytorium GitHuba
  • Gdzie szukać pomocy?
    • Dokumentacja Microsoft Learn
    • Uzyskiwanie pomocy do narzędzia dotnet
    • Modele językowe, takie jak ChatGPT
    • Uzyskiwanie pomocy na Discordzie i innych forach
  • Konfigurowanie bazy danych i projektów na potrzeby tej książki
    • Używanie przykładowej relacyjnej bazy danych
    • Konfigurowanie SQL Server i bazy danych Northwind
    • Tworzenie biblioteki klas dla modeli encji przy użyciu serwera SQL Server
    • Tworzenie biblioteki klas dla kontekstu danych używanego w SQL Server
    • Tworzenie projektu testowego w celu sprawdzenia integracji bibliotek klas
    • Uruchamianie testów
  • Używanie .NET 9 w pracach z tą książką
  • Ćwiczenie i dalsza nauka
    • Ćwiczenie 1.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 1.2. Ćwiczenia praktyczne
    • Ćwiczenie 1.3. Sprawdź swoją wiedzę
    • Ćwiczenie 1.4. Eksploracja tematów
  • Podsumowanie

Rozdział 2. Pełne wykorzystanie edytora kodu

  • Wprowadzenie do powszechnie używanych narzędzi i funkcji
    • Funkcje refaktoryzacji
    • Wycinki kodu
    • Konfiguracja edytora
    • Asystenci AI
  • Narzędzia w Visual Studio 2022
    • Funkcje refaktoryzacji
    • Wycinki kodu
    • Konfiguracja edytora
    • Asystenci AI - GitHub Copilot
    • Nawigowanie w Visual Studio
    • Funkcje usprawniające edycję
  • Narzędzia w Visual Studio Code
    • Funkcje refaktoryzacji
    • Fragmenty kodu
  • Dekompilowanie zestawów .NET
    • Tworzenie aplikacji konsoli do zdekompilowania
    • Dekompilacja za pomocą rozszerzenia ILSpy dla Visual Studio
    • Przeglądanie kodu źródłowego za pomocą Visual Studio
    • Nie, nie można zapobiec dekompilacji
    • Obniżanie poziomu kodu C#
  • Własne szablony projektów i elementów
    • Tworzenie projektu dla szablonu
    • Testowanie szablonu projektu
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 2.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 2.2. Ćwiczenia praktyczne
    • Ćwiczenie 2.3. Sprawdź swoją wiedzę
  • Podsumowanie

Rozdział 3. Zarządzanie kodem źródłowym za pomocą Gita

  • Wprowadzenie do zarządzania kodem źródłowym
    • Funkcje zarządzania kodem źródłowym
    • Rodzaje systemów SCM
    • Popularne systemy SCM
  • Wprowadzenie do Gita
    • Funkcje Gita
    • Dlaczego nauka Gita jest trudna?
    • Role w zespole korzystającym z Gita
    • Pobieranie najnowszej wersji Gita
    • Integracja Gita z Visual Studio
    • Konfiguracja tożsamości w Gicie
    • Wymuszanie podpisów SSH w Gicie
    • Konfiguracja domyślnej gałęzi w Gicie
    • Uzyskiwanie pomocy dla poleceń Gita
  • Praca z Gitem
    • Rozpoczynanie pracy z repozytorium Gita
    • Tworzenie i dodawanie plików do repozytorium Gita - teoria
    • Śledzenie zmian w Gicie
    • Tworzenie repozytorium Gita - praktyka
    • Tworzenie nowego projektu
    • Umieszczanie plików w repozytorium
    • Cofanie commitów w Gicie
    • Czyszczenie commitu
    • Przechowalnia
    • Ignorowanie plików
  • Przeglądanie repozytoriów Gita
    • Wyświetlanie różnic w plikach
    • Wyświetlanie historii commitów
    • Filtrowanie historii commitów
  • Zarządzanie zdalnymi repozytoriami
  • Rozgałęzianie i scalanie
    • Przykład rozgałęziania i scalania
    • Usuwanie gałęzi i wyświetlanie ich listy
    • Podsumowanie najczęściej używanych poleceń Gita
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 3.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 3.2. Ćwiczenia praktyczne
    • Ćwiczenie 3.3. Sprawdź swoją wiedzę
    • Ćwiczenie 3.4. Dalsza nauka
  • Podsumowanie

Rozdział 4. Debugowanie i rozwiązywanie problemów z pamięcią

  • Strategie debugowania
    • Wprowadzenie do strategii debugowania
    • Zrozumieć problem
    • Jak rozpocząć debugowanie?
    • Kiedy przestać debugować?
  • Interaktywne debugowanie w Visual Studio
    • Tworzenie kodu do debugowania
    • Ustalanie punktu przerwania i rozpoczęcie debugowania
    • Pasek narzędzi debugowania
    • Okna debugowania
    • Kontrolowanie danych wyświetlanych w panelach debugowania
    • Debugowanie projektów testowych
    • Proszenie usługi GitHub Copilot Chat o pomoc w debugowaniu
  • Pamięć stosu i sterty
    • Jak typy referencyjne i typy wartości są przechowywane w pamięci
    • Czym jest niebezpieczny kod?
    • Wskaźniki
    • Czym jest boxing?
    • Mechanizm oczyszczania pamięci
    • Zarządzanie zasobami za pomocą interfejsu IDisposable
  • Narzędzia do analizy pamięci
    • Popularne narzędzia i umiejętności analizy pamięci
    • Narzędzia Visual Studio
    • Korzystanie z narzędzia do analizy pamięci w Visual Studio
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 4.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 4.2. Ćwiczenia praktyczne
    • Ćwiczenie 4.3. Sprawdź swoją wiedzę
    • Ćwiczenie 4.4. Dalsza nauka
  • Podsumowanie

Rozdział 5. Protokołowanie, śledzenie i metryki obserwowalności

  • Protokołowanie i śledzenie w .NET
    • Interfejs ILogger w .NET
    • Jak używać interfejsu ILogger?
  • Tworzenie usługi sieciowej do protokołowania
    • Testowanie podstawowych funkcji usługi sieciowej
  • Monitorowanie za pomocą metryk w .NET
    • Pojęcia dotyczące metryk i alertów
    • Implementowanie metryk
    • Wyświetlanie metryk
  • OpenTelemetry
    • Obsługiwane pakiety
    • Instrumentacja projektu ASP.NET Core
    • Przeglądanie danych telemetrii
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 5.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 5.2. Ćwiczenia praktyczne
    • Ćwiczenie 5.3. Sprawdź swoją wiedzę
    • Ćwiczenie 5.4. Dalsza nauka
  • Podsumowanie

Rozdział 6. Dokumentowanie kodu, API i serwisów

  • Wprowadzenie do dokumentacji
    • Korzyści z dokumentacji
    • Kiedy nie dokumentować?
  • Dokumentowanie kodu źródłowego
    • Kiedy należy dokumentować kod źródłowy?
    • Dobre praktyki komentowania kodu źródłowego
  • Dokumentowanie publicznych API w bibliotekach klas
    • Dokumentowanie za pomocą komentarzy XML-a
    • Generowanie dokumentacji przy użyciu DocFX
    • Dodawanie własnych treści do dokumentacji
    • Język znaczników Markdown
  • Dokumentowanie usług
    • Kluczowe kwestie przy dokumentowaniu usług
    • Narzędzia do dokumentowania usług
    • Poznawanie specyfikacji OpenAPI (OAS)
    • Wykorzystanie OpenAPI do dokumentowania usługi Minimal API
  • Dokumentowanie wizualne za pomocą diagramów Mermaid
    • Rysowanie diagramów Mermaid
    • Schematy blokowe
    • Diagramy klas
    • Zapisywanie diagramów Mermaid w formacie SVG
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 6.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 6.2. Ćwiczenia praktyczne
    • Ćwiczenie 6.3. Sprawdź swoją wiedzę
    • Ćwiczenie 6.4. Dalsza nauka
  • Podsumowanie

Rozdział 7. Obserwowanie kodu i dynamiczne wpływanie na jego wykonanie

  • Praca z refleksją i atrybutami
    • Metadane w zestawach .NET
    • Dynamiczne ładowanie zestawów i wykonywanie metod
    • Ostrzeżenie dotyczące refleksji i natywnego AOT
    • Ulepszenia refleksji w .NET 9
    • Więcej możliwości z refleksją
  • Praca z drzewami wyrażeń
    • Elementy drzewa wyrażeń
    • Wykonywanie najprostszego drzewa wyrażeń
  • Tworzenie generatorów kodu źródłowego
    • Implementacja najprostszego generatora źródeł
  • Praktyka i dalsza nauka
    • Ćwiczenie 7.1. Materiał dostępny wyłącznie online
    • Ćwiczenie 7.2. Ćwiczenia praktyczne
    • Ćwiczenie 7.3. Sprawdź swoją wiedzę
    • Ćwiczenie 7.4. Dalsza nauka
  • Podsumowanie

Rozdział 8. Ochrona danych i aplikacji za pomocą kryptografii

  • Terminologia związana z ochroną danych
    • Techniki ochrony danych
    • Klucze i ich rozmiary
    • Wektory inicjujące i rozmiary bloków
    • Sól
    • Generowanie kluczy i wektorów IV
  • Szyfrowanie i rozszyfrowywanie danych
    • Szyfrowanie symetryczne z użyciem AES
  • Haszowanie danych
    • Haszowanie z użyciem algorytmu SHA-256
  • Podpisywanie danych
    • Podpisywanie z wykorzystaniem SHA-256 i RSA
  • Generowanie liczb losowych na potrzeby kryptografii
  • Uwierzytelnianie i autoryzacja użytkowników
    • Mechanizmy uwierzytelniania i autoryzacji
    • Implementowanie uwierzytelniania i autoryzacji
    • Ochrona funkcji udostępnianych przez aplikację
    • Uwierzytelnianie i autoryzacja w rzeczywistych zastosowaniach
  • Co nowego w .NET 9?
    • Metoda CryptographicOperations.HashData()
    • Algorytm KMAC
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 8.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 8.2. Ćwiczenia praktyczne
    • Ćwiczenie 8.3. Sprawdź swoją wiedzę
    • Ćwiczenie 8.4. Dalsza nauka
  • Podsumowanie

Rozdział 9. Tworzenie chatu używającego modelu LLM

  • Wprowadzenie do modeli LLM
    • Jak działają modele LLM?
    • Uzyskiwanie dostępu do modelu LLM
  • Używanie Semantic Kernel z modelem OpenAI
    • Czym jest Semantic Kernel?
    • Czym są funkcje?
    • Dodawanie funkcji
    • Dodanie pamięci sesji i włączanie wielu funkcji
    • Strumieniowanie wyników
    • Dodawanie protokołowania i zwiększanie niezawodności
  • Korzystanie z lokalnych modeli LLM
    • Hugging Face
    • Ollama
    • LM Studio
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 9.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 9.2. Ćwiczenia praktyczne
    • Ćwiczenie 9.3. Sprawdź swoją wiedzę
    • Ćwiczenie 9.4. Dalsza lektura
  • Podsumowanie

Rozdział 10. Wstrzykiwanie zależności, kontenery i czas życia serwisów

  • Wprowadzenie do wstrzykiwania zależności
    • Dlaczego warto korzystać z DI?
    • Mechanizmy wstrzykiwania zależności w .NET
    • Przykłady we współczesnym .NET
    • Czas życia rejestrowanych zależności
    • Rejestrowanie wielu implementacji
    • Kiedy rzucane są wyjątki?
    • Najlepsze praktyki wstrzykiwania zależności
  • Implementacja generycznego hosta w .NET
    • Najważniejsze funkcje generycznego hosta .NET
    • Budowanie generycznego hosta .NET
    • Poznawanie usług i zdarzeń hosta
    • Metody rejestrowania usług
    • Grafy zależności i rozwiązywanie usług
    • Usuwanie usług
  • Wstrzykiwanie zależności w ASP.NET Core
    • Rejestrowanie usług dla funkcji za pomocą metod rozszerzających
    • Gdy nie można użyć wstrzykiwania przez konstruktor
    • Rozwiązywanie usług podczas uruchamiania aplikacji
    • Wstrzykiwanie zależności w widokach
    • Wstrzykiwanie do metod akcji i minimalnego API
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 10.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 10.2. Ćwiczenia praktyczne
    • Ćwiczenie 10.3. Sprawdź swoją wiedzę
    • Ćwiczenie 10.4. Dalsza nauka
  • Podsumowanie

Rozdział 11. Testowanie i mockowanie

  • Wprowadzenie do wszystkich rodzajów testów
    • Testy jednostkowe
    • Testy integracyjne, end-to-end i bezpieczeństwa
    • Testy wydajności, obciążenia i wytrzymałości
    • Testy funkcjonalne i testy użyteczności
    • Terminologia testowania
    • Cechy wszystkich dobrych testów
    • Wyniki testów
    • Dublery, mocki i zatyczki
    • Przyjęcie odpowiedniego nastawienia do testowania
  • Zalety i wady TDD
    • Główne zasady TDD
    • Zalety TDD
    • Wady TDD
    • Dobre praktyki TDD
  • Testy jednostkowe
    • Jak bardzo izolowane powinny być testy jednostkowe?
    • Nazewnictwo używane w testach jednostkowych
    • Tworzenie testów jednostkowych za pomocą xUnit
    • Często używane atrybuty xUnit
    • Tworzenie klasy do przetestowania
    • Pisanie prostych testów jednostkowych
    • Metody testujące z parametrami
    • Pozytywne i negatywne wyniki testów
    • Sygnały ostrzegawcze w testach jednostkowych
    • Wyświetlanie wyników podczas wykonywania testów
    • Przygotowanie i czyszczenie środowiska testowego
    • Kontrola przygotowania testów
  • Mockowanie w testach
    • Biblioteki do mockowania
    • Wykorzystanie NSubstitute do tworzenia dubli
    • Przykład mockowania z użyciem NSubstitute
  • Tworzenie płynnych asercji w testach jednostkowych
    • Tworzenie asercji dla ciągów znaków
    • Tworzenie asercji dla kolekcji i tablic
    • Tworzenie asercji dla dat i godzin
  • Generowanie fałszywych danych z biblioteką Bogus
    • Projekt testujący fałszywe dane
    • Pisanie metody z użyciem fałszywych danych
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 11.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 11.2. Ćwiczenia praktyczne
    • Ćwiczenie 11.3. Sprawdź swoją wiedzę
    • Ćwiczenie 11.4. Dalsza nauka
  • Podsumowanie

Rozdział 12. Testy integracyjne i testy bezpieczeństwa

  • Podstawy testów integracyjnych
    • Jakie systemy zewnętrzne testować?
    • Współdzielenie środowiska w testach integracyjnych
    • Analiza przykładowego testu integracyjnego
  • Testy integracyjne z wykorzystaniem magazynów danych
    • Deweloperskie instancje bazy danych i migracje baz danych
    • Cykl życia danych
  • Testowanie usług za pomocą tuneli deweloperskich
    • Instalowanie interfejsu wiersza poleceń tunelu deweloperskiego
    • Używanie wiersza poleceń tunelu deweloperskiego i serwisu echo
    • Używanie tunelu deweloperskiego w projekcie ASP.NET Core
  • Wprowadzanie do testów bezpieczeństwa
    • Open Web Application Security Project
    • OWASP Top 10
    • Modelowanie zagrożeń
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 12.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 12.2. Ćwiczenia praktyczne
    • Ćwiczenie 12.3. Sprawdź swoją wiedzę
    • Ćwiczenie 12.4. Dalsza nauka
  • Podsumowanie

Rozdział 13. Mierzenie wydajności i testy obciążeniowe

  • Mierzenie wydajności
    • Znaczenie pomiaru bazowego
    • Notacja dużego O
    • Metryki statystyczne
  • Używanie biblioteki BenchmarkDotNet do mierzenia wydajności
    • Unikanie błędów podczas testów wydajności
    • Rozpoznawanie kiepskich postów na temat wydajności
  • Testy obciążeniowe i wytrzymałościowe
    • Apache JMeter
  • Bombardier - szybkie wieloplatformowe narzędzie do testów wydajności żądań HTTP
    • Używanie Bombardiera
    • Pobieranie Bombardiera
    • Porównywanie serwisu sieciowego kompilowanego za pomocą AOT i tradycyjnie
    • Interpretacja wyników Bombardiera
  • NBomber - framework do testów obciążeniowych
    • Scenariusze w NBomberze
    • Symulacje obciążenia
    • Typy NBombera
    • Przykład projektu NBombera
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 13.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 13.2. Ćwiczenia praktyczne
    • Ćwiczenie 13.3. Sprawdź swoją wiedzę
    • Ćwiczenie 13.4. Dalsza nauka
  • Podsumowanie

Rozdział 14. Testy funkcjonalne i end-to-end

  • Testy funkcjonalne i end-to-end
    • Przykład 1. Testowanie usługi Web API
    • Przykład 2. Testowanie strony internetowej ASP.NET Core
    • Przykład 3. Testowanie aplikacji w czasie rzeczywistym SignalR
  • Testowanie webowych interfejsów użytkownika przy użyciu Playwrighta
    • Korzyści dla programistów .NET
    • Alternatywy dla Playwrighta
    • Typy testów w Playwrighcie
    • Metody automatyzacji strony w Playwrighcie
    • Metody lokalizacji elementów w Playwrighcie
    • Metody automatyzacji lokalizatorów w Playwrighcie
    • Testowanie typowych scenariuszy za pomocą aplikacji eShopOnWeb
  • Interakcja z interfejsem użytkownika
    • Wybieranie elementów z list rozwijanych i klikanie elementów
    • Przesyłanie formularzy, uwierzytelnianie i walidacja
    • Testowanie responsywnego projektu
    • Aplikacje SPA i dynamiczna zawartość
  • Generowanie testów z Playwright Inspector
  • Testowanie serwisów przy użyciu xUnit
    • Tworzenie serwisu internetowego na potrzeby testów
    • Tworzenie projektu testowego
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 14.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 14.2. Ćwiczenia praktyczne
    • Ćwiczenie 14.3. Sprawdź swoją wiedzę
    • Ćwiczenie 14.4. Dalsza nauka
  • Podsumowanie

Rozdział 15. Konteneryzacja przy użyciu Dockera

  • Wprowadzenie do konteneryzacji
    • Jak działają kontenery i jakie są ich zalety?
    • Docker, Kubernetes i .NET Aspire
    • Rejestry kontenerów
  • Pojęcia związane z Dockerem
    • Narzędzia i technologie Dockera
    • Polecenia interfejsu wiersza poleceń Dockera
    • Tworzenie obrazów przy użyciu plików Dockerfile
    • Konfigurowanie portów i uruchamianie kontenera
    • Tryb interaktywny
    • Zmienne środowiskowe
    • Często używane obrazy kontenerów Dockera
    • Obrazy kontenerów .NET
    • System CVE i odchudzone Ubuntu
  • Zarządzanie kontenerami za pomocą Dockera
    • Instalowanie Dockera i używanie gotowych obrazów
    • Hierarchia obrazów Dockera i warstwy obrazów
  • Konteneryzacja własnych projektów .NET
    • Konteneryzacja projektu aplikacji konsoli
    • Publikowanie aplikacji do kontenera Dockera
    • Konteneryzacja projektu aplikacji ASP.NET Core
  • Praca z kontenerami testowymi
    • Jak działa Testcontainers dla .NET?
    • Przykład użycia
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 15.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 15.2. Ćwiczenia praktyczne
    • Ćwiczenie 15.3. Sprawdź swoją wiedzę
    • Ćwiczenie 15.4. Dalsza nauka
  • Podsumowanie

Rozdział 16. Oprogramowanie chmurowe z .NET Aspire

  • Wprowadzenie do .NET Aspire
    • Co mówi zespół Aspire?
    • Aspire w edytorach kodu i w interfejsie wiersza poleceń
    • Uruchamianie rozwiązania Aspire
    • Typy projektów Aspire
    • Typy zasobów Aspire
    • Model aplikacji Aspire i orkiestracja
    • Szablony projektów Aspire
  • Szablon aplikacji startowej Aspire
    • Tworzenie aplikacji startowej Aspire
    • Przeglądanie rozwiązania startowego Aspire
  • Dokładniejsze spojrzenie na Aspire
    • Pulpit nawigacyjny dla deweloperów
    • Projekt AppHost - orkiestracja zasobów
    • Projekt ServiceDefaults - centralizacja konfiguracji
    • Inne projekty funkcyjne w rozwiązaniu
    • Konfigurowanie Redisa
    • Komponenty Aspire
    • Protokołowanie, śledzenie i metryki obserwowalności
    • Docker kontra Podman
    • Oczekiwanie na gotowość kontenerów
    • A co z Dapr, Orleans i Project Tye?
  • Aspire w nowych i istniejących rozwiązaniach
    • Tworzenie nowego rozwiązania Aspire
    • Aspire i PostgreSQL
    • Używanie woluminów danych i konfigurowanie stabilnego hasła
    • Dodanie Aspire do istniejącego rozwiązania
    • Aplikacja referencyjna eShop
    • Wdrażanie aplikacji za pomocą Aspire
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 16.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 16.2. Ćwiczenia praktyczne
    • Ćwiczenie 16.3. Sprawdź swoją wiedzę
    • Ćwiczenie 16.4. Dalsza nauka
  • Podsumowanie

Rozdział 17. Wzorce i zasady projektowe

  • Zasady SOLID
    • Zasada pojedynczej odpowiedzialności (Single Responsibility Principle - SRP)
    • Zasada otwarte - zamknięte (Open/Closed Principle - OCP)
    • Zasada podstawień Liskov (Liskov Substitution Principle - LSP)
    • Zasada segregacji interfejsów (Interface Segregation Principle - ISP)
    • Zasada odwracania zależności (Dependency Inversion Principle - DIP)
  • Wzorce projektowe
    • Wzorce kreacyjne
    • Strukturalne wzorce projektowe
    • Behawioralne wzorce projektowe
  • Zasady projektowe
    • Zasada DRY
    • Zasada KISS
    • YAGNI
    • Prawo Demeter
    • Kompozycja jest lepsza od dziedziczenia
    • Zasada najmniejszego zaskoczenia
  • Algorytmy i struktury danych
    • Algorytmy sortowania
    • Algorytmy wyszukiwania
    • Algorytmy struktury danych
    • Algorytmy haszujące
    • Algorytmy rekurencyjne
    • Gdzie dowiesz się więcej o algorytmach i strukturach danych?
  • Ćwiczenie i dalsza nauka
    • Ćwiczenie 17.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 17.2. Ćwiczenia praktyczne
    • Ćwiczenie 17.3. Sprawdź swoją wiedzę
    • Ćwiczenie 17.4. Dalsza nauka
  • Podsumowanie

Rozdział 18. Podstawy architektury rozwiązań i oprogramowania

  • Wprowadzenie do architektury oprogramowania i architektury rozwiązań
    • Architektura oprogramowania
    • Architektura rozwiązań
    • Koncepcje architektury oprogramowania
    • Style architektury oprogramowania
    • Koncepcje architektury rozwiązania
    • Wnioski
  • Czysta architektura według Wujka Boba
    • Koncepcje czystej architektury
    • Dobre praktyki w czystej architekturze w .NET
  • Rysowanie diagramów za pomocą Mermaid
    • Mermaid w architekturze oprogramowania i rozwiązań
    • Rodzaje diagramów Mermaid
    • Schematy blokowe w Mermaid
  • Ćwiczenie i dalsza nauka
    • Ćwiczenie 18.1. Materiał dostępny wyłącznie online
    • Ćwiczenie 18.2. Ćwiczenia praktyczne
    • Ćwiczenie 18.3. Sprawdź swoją wiedzę
    • Ćwiczenie 18.4. Dalsza nauka
  • Podsumowanie

Rozdział 19. Kariera, praca zespołowa i rozmowy kwalifikacyjne

  • Praca w zespole programistycznym
    • Praca inżyniera oprogramowania
    • Ścieżka kariery
    • Role osób w zespole programistycznym, z którymi będziesz współpracować
    • Proces onboardingu
    • Jak poprosić o szkolenie i rozwój?
    • Programowanie w parach
  • Poszukiwanie pracy
    • Przed złożeniem podania
    • Przygotowanie do rozmowy kwalifikacyjnej
  • Przykładowe pytania na rozmowie kwalifikacyjnej
    • 1. Narzędzia wiersza poleceń w .NET
    • 2. Podstawy Gita
    • 3. Entity Framework Core
    • 4. Interfejsy i klasy abstrakcyjne
    • 5. Właściwości i indeksery
    • 6. Typy generyczne
    • 7. Delegaty i zdarzenia
    • 8. LINQ
    • 9. Programowanie asynchroniczne z użyciem słów kluczowych async i await
    • 10. Zarządzanie pamięcią i jej oczyszczanie
    • 11. Różnice między nowoczesnym .NET a .NET Framework
    • 12. Możliwości wieloplatformowe
    • 13. .NET Standard
    • 14. Wstrzykiwanie zależności w .NET
    • 15. Oprogramowanie pośredniczące w ASP.NET Core
    • 16. Konfiguracja i wzorzec Opcje
    • 17. Hosting i serwer Kestrel
    • 18. Typy danych
    • 19. Globalizacja i lokalizacja
    • 20. Struktury sterujące
    • 21. Obsługa wyjątków
    • 22. Strategie tworzenia gałęzi w Gicie
    • 23. Przeglądy kodu i programowanie w parach
    • 24. Metodyki agile i scrum
    • 25. Standardy dokumentacji
    • 26. Umiejętność rozwiązywania problemów
    • 27. Narzędzia do zarządzania projektami
    • 28. Techniki szacowania
    • 29. Współpraca w zespole
    • 30. Przywództwo i mentoring
    • 31. Wzorzec MVC
    • 32. Składnia Razora
    • 33. Web API
    • 34. Najlepsze praktyki dotyczące usług RESTful
    • 35. SignalR do pracy w czasie rzeczywistym
    • 36. Zarządzanie stanem
    • 37. Uwierzytelnianie i autoryzacja
    • 38. Blazor WebAssembly
    • 39. Korzyści wynikające z używania mikroserwisów
    • 40. Wyzwania związane z architekturą mikroserwisów
    • 41. Kontenery Dockera i .NET
    • 42. Wzorce komunikacji w mikroserwisach
    • 43. Odporność na błędy i obsługa błędów przejściowych
    • 44. Śledzenie rozproszone
    • 45. Kontrola stanu zdrowia i monitorowanie aplikacji
    • 46. AutoMapper, metody rozszerzające i operator jawny
    • 47. Podstawy ADO.NET
    • 48. Optymalizacja wydajności Entity Framework Core
    • 49. Frameworki do testów jednostkowych, np. xUnit
    • 50. Frameworki do mockowania, np. NSubstitute
    • 51. Strategie testowania integracyjnego
    • 52. Testowanie wydajności
    • 53. Testowanie bezpieczeństwa
    • 54. Automatyczne testowanie interfejsu użytkownika
    • 55. Zasady SOLID
    • 56. Wzorzec projektowy Singleton
    • 57. Wzorzec projektowy Fabryka
    • 58. Wykrywanie wycieków pamięci
    • 59. Metodyki programistyczne
    • 60. Notacja wielkiego O
    • Uczysz się, kiedy popełniasz błędy
  • Ćwiczenia i dalsza nauka
    • Ćwiczenie 19.1. Materiały dostępne wyłącznie online
    • Ćwiczenie 19.2. Ćwiczenia praktyczne
    • Ćwiczenie 19.3. Sprawdź swoją wiedzę
    • Ćwiczenie 19.4. Dalsza nauka
  • Podsumowanie

Rozdział 20. Epilog

  • Kolejne kroki na ścieżce nauki .NET
  • Książki uzupełniające, które pomogą kontynuować naukę
    • Dziewiąte wydanie C# 12 i .NET 8 już wkrótce dla .NET 9
    • Planowana trylogia .NET 10
  • Książki do dalszej nauki
  • Powodzenia!
  • Skorowidz

Skorowidz

  • Tytuł: Zostań ekspertem .NET 8. Dobre praktyki, wzorce projektowe, debugowanie i testowanie aplikacji
  • Autor: Mark J. Price
  • Tytuł oryginału: Tools and Skills for .NET 8: Get the career you want with good practices and patterns to design, debug, and test your solutions
  • Tłumaczenie: Wojciech Moch
  • ISBN: 978-83-289-2234-1, 9788328922341
  • Data wydania: 2025-07-14
  • Format: Ebook
  • Identyfikator pozycji: zoseks
  • Wydawca: Helion