Spis tresci
O autorze
O korektorze merytorycznym
Wstęp
ROZDZIAŁ 1. Cześć, C#! Witaj, .NET!
Konfigurowanie środowiska programistycznego
Wybieranie narzędzia i typu aplikacji właściwych do nauki
Instalowanie na wielu platformach
Pobieranie i instalowanie Visual Studio 2022 dla Windows
Pobieranie i instalowanie Microsoft Visual Studio Code
Poznawanie .NET
Poznawanie .NET Framework
Poznawanie projektów Mono, Xamarin i Unity
Poznawanie .NET Core
Droga do jednej platformy .NET
Plany obsługi platformy .NET
Co się zmienia w nowoczesnym .NET?
Poznawanie .NET Standard
Platformy .NET i narzędzia używane w tym wydaniu
Poznawanie języka IL
Porównanie technologii .NET
Tworzenie aplikacji konsoli za pomocą Visual Studio 2022
Zarządzanie wieloma projektami w Visual Studio 2022
Pisanie kodu za pomocą Visual Studio 2022
Kompilowanie i uruchamianie kodu w Visual Studio
Programy najwyższego poziomu
Dodawanie drugiego projektu w Visual Studio 2022
Tworzenie aplikacji konsoli za pomocą Visual Studio Code
Zarządzanie wieloma projektami w Visual Studio Code
Pisanie kodu za pomocą Visual Studio Code
Kompilowanie i uruchamianie kodu za pomocą polecenia dotnet
Dodawanie drugiego projektu w Visual Studio Code
Badanie kodu w interaktywnych notatnikach .NET
Używanie interaktywnych notatników .NET do pisania kodu z tej książki
Przeglądanie folderów i plików projektów
Wspólne foldery i pliki
Kod w repozytorium GitHuba
Wykorzystywanie repozytorium GitHuba w tej książce
Pobieranie kodu rozwiązań z repozytorium GitHuba
Używanie systemu Git w Visual Studio Code
Gdzie znaleźć pomoc?
Przeglądanie dokumentacji Microsoftu
Uzyskiwanie pomocy dla narzędzia dotnet
Przeglądanie definicji typów i ich elementów
Poszukiwanie odpowiedzi na Stack Overflow
Poszukiwanie odpowiedzi za pomocą Google
Subskrybowanie blogów
Filmy Scotta Hanselmana
Praktyka i ćwiczenia
Ćwiczenie 1.1 – sprawdź swoją wiedzę
Ćwiczenie 1.2 – ćwicz C# gdzie się da
Ćwiczenie 1.3 – dalsza lektura
Ćwiczenie 1.4 – motywy kolorystyczne w nowoczesnym .NET
Podsumowanie
ROZDZIAŁ 2. Mówimy w C#
Wprowadzenie do języka C#
Rozpoznawanie wersji oraz funkcji języka
Standardy języka C#
Odczytywanie wersji używanego kompilatora C#
Poznawanie gramatyki i słownictwa języka C#
Wyświetlanie numeru wersji kompilatora
Gramatyka języka C#
Instrukcje
Komentarze
Bloki
Przykłady instrukcji i bloków
Słownictwo języka C#
Porównanie języków programowania do języków ludzkich
Zmiana schematu kolorów składni języka C#
Pomoc przy pisaniu kodu
Importowanie przestrzeni nazw
Niejawne i globalne importowanie przestrzeni nazw
Czasowniki jako metody
Rzeczowniki to typy, pola i zmienne
Ujawnienie wielkości słownika języka C#
Praca ze zmiennymi
Nazywanie zmiennych i przypisanie wartości
Literały
Przechowywanie tekstu
Przechowywanie liczb
Przechowywanie liczb rzeczywistych
Przechowywanie wartości logicznych
Zapisywanie obiektów dowolnego typu
Przechowywanie typów dynamicznych
Deklarowanie zmiennych lokalnych
Odczytywanie i ustalanie domyślnych wartości typów
Dokładniejsze poznawanie aplikacji konsoli
Wyświetlanie informacji dla użytkownika
Pobieranie danych od użytkownika
Uproszczone korzystanie z konsoli
Odczytywanie naciśnięć klawiszy
Odczytywanie parametrów aplikacji konsoli
Ustalanie opcji za pomocą argumentów
Obsługiwanie platform nieobsługujących wybranych API
Instrukcje async i await
Poprawianie reakcji aplikacji konsoli
Praktyka i ćwiczenia
Ćwiczenie 2.1 – sprawdź swoją wiedzę
Ćwiczenie 2.2 – sprawdź swoją wiedzę o typach liczbowych
Ćwiczenie 2.3 – poznaj wielkości i zakresy liczb
Ćwiczenie 2.4 – dalsza lektura
Podsumowanie
ROZDZIAŁ 3. Sterowanie przepływem, konwertowanie typów i obsługa wyjątków
Działania na zmiennych
Operatory jednoargumentowe
Dwuargumentowe operatory arytmetyczne
Operatory przypisania
Operatory logiczne
Warunkowe operatory logiczne
Operatory bitowe i operatory przesunięć
Operatory różne
Instrukcje wyboru
Instrukcja if
Dopasowywanie wzorców z instrukcją if
Instrukcja switch
Dopasowywanie wzorców z instrukcją switch
Upraszczanie instrukcji switch za pomocą wyrażeń switch
Instrukcje iteracji
Instrukcja while
Instrukcja do
Instrukcja for
Instrukcja foreach
Zapisywanie wielu wartości w tablicy
Praca z tablicami jednowymiarowymi
Praca z tablicami wielowymiarowymi
Praca z tablicami poszarpanymi
Dopasowywanie wzorców list w tablicach
Podsumowanie tablic
Rzutowanie i konwertowanie między typami
Jawne i niejawne rzutowanie liczb
Używanie typu System.Convert
Zaokrąglanie liczb
Kontrolowanie sposobu zaokrąglania
Konwersja z dowolnego typu na ciąg znaków
Konwertowanie obiektu binarnego na ciąg znaków
Parsowanie ciągów znaków z liczbami, datami i czasem
Obsługa wyjątków
Instrukcja try
Wykrywanie przepełnień
Instrukcja checked
Instrukcja unchecked
Praktyka i ćwiczenia
Ćwiczenie 3.1 – sprawdź swoją wiedzę
Ćwiczenie 3.2 – pętle i przepełnienia
Ćwiczenie 3.3 – pętle i operatory
Ćwiczenie 3.4 – obsługa wyjątków
Ćwiczenie 3.5 – sprawdź swoją wiedzę o operatorach
Ćwiczenie 3.6 – dalsza lektura
Podsumowanie
ROZDZIAŁ 4. Pisanie, debugowanie i testowanie funkcji
Tworzenie funkcji
Programy i funkcje najwyższego poziomu
Przykład z tabliczką mnożenia
Dygresja na temat argumentów i parametrów
Pisanie funkcji zwracającej wartość
Rekurencyjne obliczanie silni
Dokumentowanie funkcji za pomocą komentarzy XML
Używanie wyrażeń lambda w implementacji funkcji
Debugowanie tworzonego programu
Używanie zintegrowanego terminala Visual Studio Code podczas debugowania
Tworzenie aplikacji z celowym błędem
Tworzenie punktu przerwania
Pasek narzędzi debugowania
Okna debugowania
Krokowe wykonywanie kodu
Dostosowywanie punktów przerwania
Przeładowywanie na gorąco w trakcie programowania
Przeładowywanie na gorąco w Visual Studio 2022
Przeładowywanie na gorąco w Visual Studio Code i w wierszu poleceń
Protokołowanie błędów
Dostępne opcje protokołowania
Wykorzystywanie typów Debug i Trace
Konfigurowanie obiektów nasłuchujących
Przełączanie poziomów śledzenia
Protokołowanie informacji o kodzie źródłowym
Testy jednostkowe
Różne rodzaje testów
Tworzenie biblioteki klas wymagającej testowania
Tworzenie testów jednostkowych
Rzucanie i wychwytywanie wyjątków w funkcjach
Rozróżnienie błędów użycia i błędów wykonania
Wyjątki często rzucane w funkcjach
Czym jest stos wywołań?
Gdzie należy wychwytywać wyjątki?
Ponowne rzucanie wyjątku
Implementowanie wzorca tester-wykonawca
Praktyka i ćwiczenia
Ćwiczenie 4.1 – sprawdź swoją wiedzę
Ćwiczenie 4.2 – tworzenie funkcji z wykorzystaniem debugowania i testów jednostkowych
Ćwiczenie 4.3 – dalsza lektura
Podsumowanie
ROZDZIAŁ 5. Tworzenie własnych typów w programowaniu obiektowym
Programowanie obiektowe
Tworzenie bibliotek klas
Tworzenie biblioteki klas
Definiowanie klasy w przestrzeni nazw
Elementy klasy
Tworzenie obiektów
Importowanie przestrzeni nazw
Poznawanie obiektów
Przechowywanie danych w polach
Definiowanie pól
Modyfikatory dostępu
Ustalanie i wypisywanie wartości pól
Zapisywanie wartości za pomocą słowa kluczowego enum
Przechowywanie wielu wartości w typie enum
Zapisywanie wielu wartości za pomocą kolekcji
Kolekcje generyczne
Tworzenie pól statycznych
Tworzenie stałych pól
Tworzenie pól tylko do odczytu
Inicjowanie pól w konstruktorach
Tworzenie i wywoływanie metod
Zwracanie wartości z metody
Łączenie wielu wartości za pomocą krotki
Sterowanie przekazywaniem parametrów
Przeciążanie metod
Parametry opcjonalne i nazywane
Sposoby przekazywania parametrów
Zwracanie wartości ze słowem kluczowym ref
Dzielenie klas na części
Kontrola dostępu za pomocą właściwości i indekserów
Definiowanie właściwości tylko do odczytu
Definiowanie właściwości z możliwością przypisania
Wymaganie podania wartości właściwości przy tworzeniu obiektu
Definiowanie indekserów
Więcej informacji o metodach
Implementowanie działań w metodzie
Implementowanie działań za pomocą operatora
Definiowanie funkcji lokalnych
Dopasowywanie wzorców z obiektami
Definiowanie listy pasażerów
Rozszerzenia dopasowywania wzorców w C# 9 i nowszych
Praca z rekordami
Właściwości wyłącznie inicjalizowane
Rekordy
Pozycyjne elementy danych w rekordach
Praktyka i ćwiczenia
Ćwiczenie 5.1 – sprawdź swoją wiedzę
Ćwiczenie 5.2 – dalsza lektura
Podsumowanie
ROZDZIAŁ 6. Implementowanie interfejsów i dziedziczenie klas
Konfigurowanie biblioteki klas i aplikacji konsoli
Wykorzystywanie typów generycznych
Praca z typami niegenerycznymi
Praca z typami generycznymi
Wywoływanie i obsługa zdarzeń
Wywoływanie metod za pomocą delegatów
Definiowanie i obsługa delegatów
Definiowanie i obsługiwanie zdarzeń
Implementowanie interfejsów
Typowe interfejsy
Porównywanie obiektów podczas sortowania
Porównywanie obiektów za pomocą osobnej klasy
Jawne i niejawne implementowanie interfejsów
Definiowanie interfejsów z domyślnymi implementacjami
Zarządzanie pamięcią za pomocą typów referencyjnych i typów wartości
Definiowanie typów referencyjnych i typów wartości
Sposób przechowywania w pamięci typów referencyjnych i typów wartości
Równość typów
Definiowanie typu kategorii struct
Praca z typami record struct
Zwalnianie niezarządzanych zasobów
Wymuszanie wywołania metody Dispose
Praca z wartościami null
Przekształcanie typu wartości w typ nullowalny
Inicjalizowanie typów nullowalnych
Poznawanie nullowalnych typów referencyjnych
Sterowanie funkcją ostrzeżeń dla typów nullowalnych
Deklarowanie nienullowalnych zmiennych i parametrów
Sprawdzanie wartości null
Kontrolowanie wartości null w parametrach metod
Dziedziczenie klas
Rozbudowywanie klasy
Ukrywanie elementów
Pokrywanie elementów klasy
Dziedziczenie po klasach abstrakcyjnych
Blokowanie dziedziczenia i pokrywania
Polimorfizm
Rzutowanie w ramach hierarchii dziedziczenia
Rzutowanie niejawne
Rzutowanie jawne
Obsługa wyjątków rzutowania
Dziedziczenie i rozbudowywanie typów .NET
Dziedziczenie po wyjątku
Rozszerzanie typów, po których nie można dziedziczyć
Tworzenie lepszego kodu
Traktowanie ostrzeżeń jak błędów
Fale ostrzegawcze
Stosowanie analizatorów, aby tworzyć lepszy kod
Praktyka i ćwiczenia
Ćwiczenie 6.1 – sprawdź swoją wiedzę
Ćwiczenie 6.2 – tworzenie hierarchii dziedziczenia
Ćwiczenie 6.3 – dalsza lektura
Podsumowanie
ROZDZIAŁ 7. Poznawanie typów .NET
Wprowadzenie do .NET 7
.NET Core 1.0
.NET Core 1.1
.NET Core 2.0
.NET Core 2.1
.NET Core 2.2
.NET Core 3.0
.NET Core 3.1
.NET 5.0
.NET 6.0
.NET 7.0
Poprawki wydajności między .NET 5 a nowszymi wersjami
Sprawdzanie dostępności aktualizacji .NET SDK
Zestawy i przestrzenie nazw
Zestawy, pakiety i przestrzenie nazw
Poznawanie pakietów SDK dla projektów .NET
Przestrzenie nazw i typy w zestawach
Pakiety NuGet
Czym są frameworki?
Importowanie przestrzeni nazw w celu użycia typu
Związki słów kluczowych języka C# z typami .NET
Wieloplatformowe współdzielenie kodu z bibliotekami klas .NET Standard
Domyślne ustawienia bibliotek klas w różnych wersjach SDK
Tworzenie biblioteki klas .NET Standard 2.0
Kontrolowanie wersji .NET SDK
Publikowanie własnych aplikacji
Tworzenie aplikacji konsoli do publikacji
Poznawanie polecenia dotnet
Pobieranie informacji na temat platformy .NET i jej środowiska
Zarządzanie projektami
Publikowanie samodzielnej aplikacji
Publikowanie aplikacji jednoplikowej
Zmniejszanie wielkości aplikacji
Dekompilowanie zestawów
Dekompilowanie za pomocą rozszerzenia ILSpy w Visual Studio 2022
Przeglądanie oryginalnych źródeł w Visual Studio 2022
Nie, nie można zablokować możliwości dekompilowania
Przygotowywanie własnych pakietów NuGet
Dodawanie odwołania do pakietu
Tworzenie pakietu dla NuGet
Przeszukiwanie pakietów NuGet
Testowanie pakietu
Przenoszenie kodu z .NET Framework do .NET Core
Co można przenieść?
Co należy przenieść?
Różnice między .NET Framework i nowoczesnym .NET
Korzystanie z programu .NET Portability Analyzer
Asystent uaktualniania programu .NET
Używanie bibliotek spoza .NET
Praca z proponowanymi funkcjami
Wymaganie proponowanych funkcji
Włączanie proponowanych funkcji
Praktyka i ćwiczenia
Ćwiczenie 7.1 – sprawdź swoją wiedzę
Ćwiczenie 7.2 – dalsza lektura
Ćwiczenie 7.3 – PowerShell
Podsumowanie
ROZDZIAŁ 8. Używanie typów .NET
Praca z liczbami
Praca z wielkimi liczbami całkowitymi
Praca z liczbami zespolonymi
Kwaterniony
Generowanie liczb losowych na potrzeby gier i podobnych aplikacji
Praca z tekstem
Odczytywanie długości ciągu znaków
Odczytywanie znaków z ciągu
Dzielenie ciągu znaków
Pobieranie części ciągu znaków
Poszukiwanie tekstu w ciągu
Inne elementy klasy string
Wydajne tworzenie ciągów znaków
Dopasowywanie wzorców za pomocą wyrażeń regularnych
Kontrolowanie cyfr wprowadzonych jako tekst
Poprawianie wydajności wyrażeń regularnych
Składnia wyrażenia regularnego
Przykłady wyrażeń regularnych
Dzielenie złożonych ciągów znaków rozdzielanych przecinkami
Włączanie kolorowania składni wyrażeń regularnych
Poprawianie wydajności wyrażeń regularnych za pomocą generatorów kodu
Praca z kolekcjami
Wspólne funkcje wszystkich kolekcji
Poprawianie wydajności przez zdefiniowanie pojemności kolekcji
Poznawanie kolekcji
Praca z listami
Praca ze słownikami
Praca z kolejkami
Sortowanie kolekcji
Używanie specjalizowanych kolekcji
Używanie kolekcji niezmiennych
Dobre praktyki w pracy z kolekcjami
Praca z typem Span, indeksami i zakresami
Wydajne korzystanie z pamięci za pomocą typu Span
Określanie pozycji za pomocą typu Index
Definiowanie zakresów za pomocą typu Range
Używanie indeksów i zakresów
Praca z zasobami sieciowymi
Praca z adresami URI, serwerami DNS i adresami IP
Pingowanie serwera
Praktyka i ćwiczenia
Ćwiczenie 8.1 – sprawdź swoją wiedzę
Ćwiczenie 8.2 – wyrażenia regularne
Ćwiczenie 8.3 – metody rozszerzające
Ćwiczenie 8.4 – dalsza lektura
Podsumowanie
ROZDZIAŁ 9. Praca z plikami, strumieniami i serializacją
Praca z systemem plików
Obsługa środowisk i systemów plików na wielu platformach
Obsługa napędów
Praca z katalogami
Praca z plikami
Praca ze ścieżkami
Odczytywanie informacji o pliku
Zarządzanie plikami
Odczytywanie i zapisywanie w strumieniach
Strumienie abstrakcyjne i konkretne
Praca ze strumieniami tekstowymi
Praca ze strumieniami XML
Uproszczenie zwalniania zasobów za pomocą instrukcji using
Strumienie kompresujące
Praca z archiwami tar
Kodowanie tekstu
Kodowanie ciągu znaków jako tablicy bajtów
Kodowanie i dekodowanie tekstu w plikach
Odczytywanie i zapisywanie w urządzeniach o dostępie swobodnym
Serializacja obiektów
Serializacja do formatu XML
Generowanie kompaktowej struktury XML
Deserializacja danych z formatu XML
Serializowanie do formatu JSON
Wydajne przetwarzanie danych w formacie JSON
Kontrolowane przetwarzanie danych JSON
Nowe metody rozszerzające, które ułatwiają pracę z odpowiedziami HTTP
Przenoszenie kodu z biblioteki Newtonsoft do nowej biblioteki
Praktyka i ćwiczenia
Ćwiczenie 9.1 – sprawdź swoją wiedzę
Ćwiczenie 9.2 – serializowanie do formatu XML
Ćwiczenie 9.3 – dalsza lektura
Podsumowanie
ROZDZIAŁ 10. Praca z bazami danych przy użyciu Entity Framework Core
Nowoczesne bazy danych
Czym jest Entity Framework?
Entity Framework Core
Co znaczy „najpierw baza danych” i „najpierw kod”?
Usprawnienia wydajności w EF Core 7
Tworzenie aplikacji konsoli do pracy z EF Core
Używanie przykładowej relacyjnej bazy danych
Używanie SQLite
Tworzenie przykładowej bazy danych Northwind na serwerze SQLite
Zarządzanie przykładową bazą danych Northwind za pomocą SQLiteStudio
Używanie lekkiego dostawcy ADO.NET dla SQLite
Używanie Microsoft SQL Server w systemie Windows
Konfigurowanie EF Core
Wybieranie dostawcy danych EF Core
Łączenie z bazą danych
Definiowanie klasy kontekstu bazy danych Northwind
Definiowanie modeli EF Core
Konwencje w EF Core
Atrybuty EF Core
Płynne API EF Core
Tworzenie modelu w EF Core
Dodawanie tabel do klasy kontekstu bazy danych Northwind
Konfigurowanie narzędzia dotnet-ef
Tworzenie modeli na podstawie istniejącej bazy danych
Dostosowywanie szablonów wstecznej inżynierii
Konfigurowanie konwencji
Zapytania do modelu EF Core
Filtrowanie dołączanych encji
Filtrowanie i sortowanie produktów
Pobieranie generowanych instrukcji SQL
Protokołowanie w EF Core
Dopasowywanie wzorców za pomocą instrukcji Like
Generowanie liczb losowych w zapytaniach
Definiowanie globalnych filtrów
Wzorce ładowania w EF Core
Chętne ładowanie encji za pomocą metody rozszerzającej Include
Włączenie leniwego ładowania
Jawne ładowanie encji za pomocą metody Load
Manipulowanie danymi w EF Core
Wstawianie encji
Aktualizowanie encji
Usuwanie encji
Wydajniejsze aktualizowanie i usuwanie
Grupowanie kontekstów baz danych
Transakcje
Sterowanie transakcjami za pomocą poziomów izolacji
Jawne definiowanie transakcji
Modele Code First w EF Core
Praktyka i ćwiczenia
Ćwiczenie 10.1 – sprawdź swoją wiedzę
Ćwiczenie 10.2 – eksportowanie danych z wykorzystaniem różnych formatów serializacji
Ćwiczenie 10.3 – dalsza lektura
Ćwiczenie 10.4 – poznawanie baz danych NoSQL
Podsumowanie
ROZDZIAŁ 11. Odczytywanie danych i manipulowanie nimi za pomocą LINQ
Dlaczego LINQ?
Porównanie imperatywnych i deklaratywnych funkcji języka
Tworzenie wyrażeń LINQ
Z czego składa się LINQ?
Rozbudowa sekwencji za pomocą klas wyliczeniowych
Czym jest opóźnione wykonanie?
Filtrowanie encji za pomocą metody Where
Korzystanie z metody nazwanej
Upraszczanie kodu przez usunięcie jawnego tworzenia delegata
Korzystanie z wyrażenia lambda
Sortowanie encji
Sortowanie według elementów
Deklarowanie zapytania za pomocą słowa kluczowego var lub określonego typu
Filtrowanie według typu
Praca ze zbiorami
Używanie LINQ z EF Core
Tworzenie modelu danych EF Core
Filtrowanie i sortowanie sekwencji
Projekcje sekwencji na nowe typy
Łączenie i grupowanie
Agregowanie sekwencji
Uważaj na właściwość Count!
Stronicowanie z LINQ
Upiększanie składni
Używanie wielu wątków w równoległych zapytaniach LINQ
Tworzenie własnych metod rozszerzających dla LINQ
Próba użycia nowych metod rozszerzających
Praca z LINQ to XML
Generowanie danych XML za pomocą LINQ to XML
Odczytywanie danych XML za pomocą LINQ to XML
Praktyka i ćwiczenia
Ćwiczenie 11.1 – sprawdź swoją wiedzę
Ćwiczenie 11.2 – zapytania LINQ
Ćwiczenie 11.3 – dalsza lektura
Podsumowanie
ROZDZIAŁ 12. Wprowadzenie do aplikacji sieciowych w ASP.NET Core
Czym jest ASP.NET Core?
Klasyczna ASP.NET kontra ASP.NET Core
Tworzenie stron WWW za pomocą ASP.NET Core
Tworzenie serwisów sieciowych
Nowe funkcje w ASP.NET Core
ASP.NET Core 1.0
ASP.NET Core 1.1
ASP.NET Core 2.0
ASP.NET Core 2.1
ASP.NET Core 2.2
ASP.NET Core 3.0
ASP.NET Core 3.1
Blazor WebAssembly 3.2
ASP.NET Core 5.0
ASP.NET Core 6.0
ASP.NET Core 7.0
Struktury projektów
Struktura projektów w rozwiązaniu lub przestrzeni roboczej
Tworzenie modelu danych dla bazy danych Northwind
Tworzenie biblioteki klas dla modelu encji Northwind
Tworzenie biblioteki klas modelu encji dla SQL Server
Testowanie bibliotek klas
Tworzenie w sieci WWW
Protokół HTTP
Używanie Google Chrome do wykonywania żądań HTTP
Tworzenie oprogramowania dla sieci WWW po stronie klienta
Praktyka i ćwiczenia
Ćwiczenie 12.1 – sprawdź swoją wiedzę
Ćwiczenie 12.2 – znasz te skrótowce?
Ćwiczenie 12.3 – dalsza lekura
Podsumowanie
ROZDZIAŁ 13. Tworzenie witryn WWW przy użyciu ASP.NET Core Razor Pages
ASP.NET Core
Tworzenie pustego projektu ASP.NET Core
Testowanie i zabezpieczanie witryny
Kontrola środowiska hostingowego
Włączanie plików statycznych
Technologia Razor Pages
Włączanie technologii Razor Pages
Definiowanie strony Razor
Używanie wspólnego układu w wielu stronach Razor
Używanie plików code-behind w stronach Razor
Używanie Entity Framework Core z ASP.NET Core
Konfigurowanie Entity Framework Core jako serwisu
Manipulowanie danymi na stronach Razor
Wstrzykiwanie zależnego serwisu na stronę Razor
Używanie bibliotek klas Razor
Wyłączanie kompaktowych folderów w Visual Studio Code
Tworzenie biblioteki klas Razor
Implementowanie widoku cząstkowego do wyświetlania danych pracownika
Używanie i testowanie biblioteki klas Razor
Konfigurowanie serwisów i potoku obsługi żądań HTTP
Routowanie punktów końcowych
Konfigurowanie routowania punktów końcowych
Przeglądanie konfiguracji routowania punktów końcowych w naszym projekcie
Przygotowywanie potoku obsługi żądań HTTP
Podsumowanie najważniejszych metod rozszerzających oprogramowania pośredniego
Wizualizacja potoku HTTP
Implementowanie oprogramowania pośredniego jako anonimowego delegata
Włączanie obsługi dekompresji żądań
Włączanie obsługi HTTP/3
Praktyka i ćwiczenia
Ćwiczenie 13.1 – sprawdź swoją wiedzę
Ćwiczenie 13.2 – tworzenie witryny obsługującej dane
Ćwiczenie 13.3 – zastępowanie aplikacji konsoli stronami WWW
Ćwiczenie 13.4 – dalsza lektura
Podsumowanie
ROZDZIAŁ 14. Tworzenie aplikacji WWW przy użyciu ASP.NET Core MVC
Konfigurowanie witryny ASP.NET Core MVC
Tworzenie witryny ASP.NET Core MVC
Tworzenie bazy danych uwierzytelniania na serwerze SQL Server LocalDB
Przeglądanie domyślnej witryny ASP.NET Core MVC
Uruchamianie projektu witryny Mvc
Rejestrowanie użytkowników
Przegląd szablonu projektu ASP.NET Core MVC
Sprawdzanie bazy danych ASP.NET Core Identity
Poznawanie mechanizmów ASP.NET Core MVC
Rozruch ASP.NET Core
Czym jest domyślna ścieżka?
Kontrolery i akcje
Konwencja wyszukiwania ścieżek widoku
Protokołowanie z wykorzystaniem serwisu zależnego
Modele encji i widoków
Widoki
Jak działa cache busting włączany znacznikami pomocniczymi?
Dostosowywanie witryny ASP.NET Core MVC
Definiowanie własnych stylów
Konfigurowanie obrazków dla kategorii
Składnia i wyrażenia Razor
Definiowanie typu dla widoku
Przekazywanie parametrów przy użyciu wartości ścieżki
Wiązanie modeli
Sprawdzanie poprawności modelu
Poznawanie pomocniczych metod widoku
Definiowanie widoków za pomocą znaczników pomocniczych
Czym są filtry?
Zapisywanie danych wyjściowych w pamięci podręcznej
Odczytywanie danych z bazy i używanie szablonów wyświetlania
Poprawianie skalowalności za pomocą asynchronicznych zadań
Przygotowanie asynchronicznych metod akcji kontrolera
Praktyka i ćwiczenia
Ćwiczenie 14.1 – sprawdź swoją wiedzę
Ćwiczenie 14.2 – implementowanie wzorca MVC w tworzonej stronie danych kategorii
Ćwiczenie 14.3 – poprawianie skalowalności przez poznawanie i implementowanie asynchronicznych metod akcji
Ćwiczenie 14.4 – testy jednostkowe dla kontrolerów
Ćwiczenie 14.5 – dalsza lektura
Podsumowanie
ROZDZIAŁ 15. Tworzenie i używanie serwisów sieciowych
Tworzenie serwisów w technologii ASP.NET Core Web API
Skróty stosowane w serwisach sieciowych
Żądania i odpowiedzi HTTP w Web API
Tworzenie projektu ASP.NET Core Web API
Sprawdzanie funkcji serwisu sieciowego
Tworzenie serwisu internetowego dla bazy danych Northwind
Tworzenie repozytorium danych dla encji
Implementowanie kontrolera Web API
Konfigurowanie repozytorium klientów i kontrolera Web API
Podawanie szczegółów problemu
Kontrola nad serializacją XML
Dokumentowanie i testowanie serwisów
Testowanie żądań GET za pomocą przeglądarki
Testowanie żądań HTTP za pomocą rozszerzenia REST Client
Włączanie narzędzia Swagger
Testowanie żądań w narzędziu SwaggerUI
Włączanie protokołowania HTTP
Obsługa protokołowania dodatkowych nagłówków żądań w systemie W3CLogger
Używanie serwisu za pomocą klientów HTTP
Klasa HttpClient
Konfigurowanie klientów HTTP za pomocą klasy HttpClientFactory
Pobieranie w kontrolerze listy klientów w formacie JSON
Uruchamianie wielu projektów
Uruchamianie projektów serwisu sieciowego i klienta MVC
Implementowanie zaawansowanych funkcji
Tworzenie serwisów sieciowych używających minimalnego API
Testowanie minimalnego serwisu pogodowego
Dodawanie prognozy pogody do głównej strony witryny Northwind
Praktyka i ćwiczenia
Ćwiczenie 15.1 – sprawdź swoją wiedzę
Ćwiczenie 15.2 – ćwiczenia w tworzeniu i usuwaniu klientów za pomocą HttpClient
Ćwiczenie 15.3 – dalsza lektura
Podsumowanie
ROZDZIAŁ 16. Tworzenie interfejsów użytkownika w technologii Blazor
Technologia Blazor
JavaScript i podobne
Silverlight – C# i .NET w formie wtyczki
WebAssembly – podstawa technologii Blazor
Różne modele hostowania komponentów Blazora
Omówienie komponentów tworzonych za pomocą Blazora
Czym różnią się Blazor i Razor?
Porównanie szablonów projektów Blazor
Przeglądanie szablonu projektu Blazor Server
Routowanie do komponentów stronicowych Blazora
Uruchamianie szablonu projektu Blazor Server
Przeglądanie szablonu projektu Blazor WebAssembly
Tworzenie komponentów za pomocą Blazor Server
Definiowanie i testowanie prostego komponentu
Przekształcanie komponentu w routowalny komponent stronicowy
Dodawanie encji do komponentu
Tworzenie abstrakcji serwisu dla komponentu Blazora
Definiowanie formularzy za pomocą komponentu EditForm
Tworzenie i używanie komponentu formularza danych klienta
Tworzenie komponentów do tworzenia, edytowania i usuwania klientów
Testowanie komponentu formularza danych klienta
Tworzenie komponentów za pomocą Blazor WebAssembly
Konfigurowanie serwera dla projektu Blazor WebAssembly
Konfigurowanie klienta aplikacji Blazor WebAssembly
Testowanie komponentów i serwisu Blazor WebAssembly
Usprawnianie aplikacji tworzonych za pomocą Blazor WebAssembly
Praktyka i ćwiczenia
Ćwiczenie 16.1 – sprawdź swoją wiedzę
Ćwiczenie 16.2 – przygotowanie komponentu tabliczki mnożenia
Ćwiczenie 16.3 – przygotowanie elementu nawigowania według krajów
Ćwiczenie 16.4 – dalsza lektura
Podsumowanie
Epilog
Następne kroki Twojej podróży w świecie C# i .NET
Poprawianie swoich umiejętności za pomocą wskazówek projektowych
Książka uzupełniająca
Z których książek uczyć się dalej?
Następne wydanie tej książki
Powodzenia!
DODATEK A. Odpowiedzi na pytania z testów
Opinie
Na razie nie ma opinii o produkcie.