Koduj jak profesjonalista C# - Helion

ebook
Autor: Jort RodenburgISBN: 978-83-7541-459-2
stron: 464, Format: ebook
Data wydania: 2022-03-17
Księgarnia: Helion
Cena książki: 80,99 zł (poprzednio: 89,99 zł)
Oszczędzasz: 10% (-9,00 zł)
Osoby które kupowały "Koduj jak profesjonalista C#", wybierały także:
- Visual Studio 2013. Podręcznik programowania w C# z zadaniami 58,98 zł, (29,49 zł -50%)
- Microsoft Visual C# 2015 Krok po kroku 97,66 zł, (75,20 zł -23%)
- Microsoft Visual C# 2013 Krok po kroku 101,82 zł, (78,40 zł -23%)
- Microsoft Visual C# 2012. Krok po kroku 101,82 zł, (78,40 zł -23%)
- Microsoft Visual C# 2010. Krok po kroku z płytą CD 101,82 zł, (78,40 zł -23%)
Spis treści
Koduj jak profesjonalista C# eBook -- spis treści
- Spis treści
- przedmowa
- podziękowania
- o tej książce
- o autorze
- o ilustracji na okładce
- Używanie C# i .NET
- Przedstawiamy C# i .NET
- 1.1 Dlaczego warto pracować w C#?
- 1.1.1 Powód 1: C# jest ekonomiczny
- 1.1.2 Powód 2: C# jest łatwy w utrzymaniu
- 1.1.3 Powód 3: C# jest przyjazny dla dewelopera i łatwy w użyciu
- 1.2 Kiedy lepiej nie pracować w C#?
- 1.2.1 Tworzenie systemu operacyjnego
- 1.2.2 Tworzenie wbudowanych systemów czasu rzeczywistego w C#
- 1.2.3 Przetwarzanie numeryczne a C#
- 1.3 Przełączanie się na C#
- 1.4 Czego można się nauczyć z tej książki
- 1.5 Czego nie nauczymy się z tej książki
- Podsumowanie
- 1.1 Dlaczego warto pracować w C#?
- .NET i proces kompilacji
- 2.1 Czym jest .NET Framework?
- 2.2 Czym jest .NET 5?
- Ćwiczenia
- 2.3 Jak kompilowane są języki zgodne z CLI
- 2.3.1 Krok 1: Kod C# (wysokiego poziomu)
- 2.3.2 Krok 2: Common Intermediate Language (poziom asemblera)
- 2.3.3 Krok 3: Kod natywny (poziom procesora)
- Ćwiczenia
- Podsumowanie
- Przedstawiamy C# i .NET
- Istniejąca baza kodu
- Jak zły jest ten kod?
- 3.1 Przedstawiamy Flying Dutchman Airlines
- 3.2 Kawałki układanki: Spojrzenie na wymagania
- 3.2.1 Mapowanie obiektowo-relacyjne
- 3.2.2 Punkt końcowy GET /flight: Pobieranie informacji o wszystkich lotach
- 3.2.3 Punkt końcowy GET /flight/{flightNumber}: Pobieranie informacji o konkretnym locie
- 3.2.4 Punkt końcowy POST /booking/{flightNumber}: Rezerwowanie lotu
- 3.3 Uzgadnianie wymagań z istniejącą bazą kodu
- 3.3.1 Ocena istniejącego schematu bazy danych i jej tabel
- 3.3.2 Istniejąca baza kodu: pliki konfiguracyjne usługi Web
- 3.3.3 Badanie modeli i widoków w istniejącej bazie kodu
- Podsumowanie
- Zarządzanie zasobami niezarządzanymi!
- 4.1 FlightController: badanie punktu końcowego GET /flight
- 4.1.1 Punkt końcowy GET /flight i jego działanie
- 4.1.2 Sygnatura metody: Znaczenie słów kluczowych ResponseType oraz typeof
- 4.1.3 Gromadzenie informacji o lotach za pomocą kolekcji
- 4.1.4 Łańcuchy połączenia, czyli jak doprowadzić inżyniera zabezpieczeń do zawału
- 4.1.5 Używanie IDisposable do zwalniania niezarządzanych zasobów
- 4.1.6 Odpytywanie bazy danych za pomocą SqlCommand
- 4.2 FlightController: Poznajemy GET /flight/{flightNumber}
- 4.3 FlightController: POST /flight
- 4.4 FlightController: DELETE /flight/{flightNumber}
- Ćwiczenia
- Podsumowanie
- 4.1 FlightController: badanie punktu końcowego GET /flight
- Jak zły jest ten kod?
- Warstwa dostępu do bazy danych
- Konfigurowanie projektu i bazy danych za pomocą Entity Framework Core
- 5.1 Tworzenie rozwiązania i projektu .NET 5
- 5.2 Tworzenie i konfigurowanie usługi Web
- 5.2.1 Konfigurowanie usługi Web .NET 5
- 5.2.2 Tworzenie i używanie HostBuilder
- 5.2.3 Implementowanie klasy Startup
- 5.2.4 Używanie wzorca repozytorium/usługa w architekturze naszej usługi Web
- 5.3 Implementowanie warstwy dostępu do bazy danych
- 5.3.1 Entity Framework Core i inżynieria odwrotna
- 5.3.2 DbSet i przepływ pracy Entity Framework Core
- 5.3.3 Metody konfiguracji i zmienne środowiskowe
- 5.3.4 Ustawianie zmiennej środowiskowej w Windows
- 5.3.5 Ustawianie zmiennej środowiskowej w macOS
- 5.3.6 Odczytywanie zmiennych środowiskowych w czasie działania programu
- Ćwiczenia
- Podsumowanie
- Konfigurowanie projektu i bazy danych za pomocą Entity Framework Core
- Warstwa repozytorium
- Wytwarzanie sterowane testami i wstrzykiwanie zależności
- 6.1 Wytwarzanie sterowane testami
- Ćwiczenia
- 6.2 Metoda CreateCustomer
- 6.2.1 Dlaczego należy walidować argumenty wejściowe
- 6.2.2 Używanie wzorca AAA w pisaniu testów jednostkowych
- 6.2.3 Walidacja pod kątem nieprawidłowych znaków
- 6.2.4 Włamywanie danych testowych za pomocą atrybutu [DataRow]
- 6.2.5 Inicjalizatory obiektów i automatycznie generowany kod
- 6.2.6 Konstruktory, refleksje i programowanie asynchroniczne
- 6.2.7 Blokady, muteksy i semafory
- 6.2.8 Wykonywanie synchroniczne do asynchronicznego ciąg dalszy
- 6.2.9 Testowanie Entity Framework Core
- 6.2.10 Kontrolowanie zależności przy użyciu wstrzykiwania zależności
- Ćwiczenia
- Podsumowanie
- Porównywanie obiektów
- 7.1 Metoda GetCustomerByName
- 7.1.1 Znaki zapytania: typu nullowalne i ich zastosowania
- 7.1.2 Niestandardowe wyjątki, LINQ i metody rozszerzające
- 7.2 Kongruencja: od średniowiecza do C#
- 7.2.1 Tworzenie klasy porównującej przy użyciu EqualityComparer
- 7.2.2 Testowanie równości poprzez nadpisanie metody Equals
- 7.2.3 Przeciążanie operatora równości
- Ćwiczenia
- Podsumowanie
- 7.1 Metoda GetCustomerByName
- Atrapy, typy ogólne i sprzężenie
- 8.1 Implementowanie repozytorium Booking
- 8.2 Walidacja wejścia, rozdzielanie zagadnień i sprzęganie
- Ćwiczenia
- 8.3 Używanie inicjalizatorów obiektów
- 8.4 Testy jednostkowe z użyciem atrap
- 8.5 Programowanie przy użyciu typów ogólnych
- 8.6 Dostarczanie domyślnych wartości argumentów przy użyciu parametrów opcjonalnych
- 8.7 Wyrażenia warunkowe, typ Func i przełączniki
- 8.7.1 Trójargumentowy operator warunkowy
- 8.7.2 Rozgałęzianie wykonania przy użyciu tablicy funkcji
- 8.7.3 Instrukcje i wyrażenia switch
- 8.7.4 Odpytywanie o oczekujące zmiany w Entity Framework Core
- Ćwiczenia
- Podsumowanie
- Metody rozszerzające, strumienie i klasy abstrakcyjne
- 9.1 Implementowanie repozytorium Airport
- 9.2 Pobieranie lotniska z bazy danych na podstawie przekazanego identyfikatora
- 9.3 Walidacja parametru wejściowego AirportID
- 9.4 Strumienie wyjściowe i zapewnienie odpowiedniej abstrakcji
- 9.5 Odpytywanie bazy danych o obiekt Airport
- 9.6 Implementowanie repozytorium Flight
- 9.6.1 Metoda rozszerzająca IsPositive oraz magiczne liczby
- 9.6.2 Pobieranie obiektu lotu z bazy danych
- Ćwiczenia
- Podsumowanie
- Wytwarzanie sterowane testami i wstrzykiwanie zależności
- Warstwa usługi
- Refleksja i imitacje
- 10.1 Powrót do wzorca repozytorium/usługa
- 10.1.1 Jakie jest zastosowanie klasy usługi?
- Ćwiczenia
- 10.2 Implementowanie klasy CustomerService
- 10.2.1 Konfigurowanie przypadku sukcesu: tworzenie klas szkieletowych
- 10.2.2 Jak usunąć swój własny kod
- Ćwiczenia
- 10.3 Implementowanie BookingService
- 10.3.1 Testy jednostkowe przekraczające granice pomiędzy warstwami architektury
- 10.3.2 Różnica pomiędzy stubem a mockiem
- 10.3.3 Imitowanie klasy za pomocą biblioteki Moq
- 10.3.4 Wywoływanie repozytorium z poziomu usługi
- Ćwiczenia
- Podsumowanie
- 10.1 Powrót do wzorca repozytorium/usługa
- Sprawdzanie typów w czasie działania i obsługa błędów spojrzenie drugie
- 11.1 Walidacja parametrów wejściowych metody warstwy usługi
- 11.1.1 Sprawdzanie typów w czasie działania przy użyciu operatorów is i as
- 11.1.2 Sprawdzanie typu za pomocą operatora is
- 11.1.3 Sprawdzanie typów przy użyciu operatora as
- 11.1.4 Co zrobiliśmy w punkcie 11.1?
- 11.2 Sprzątanie klasy BookingServiceTests
- 11.3 Ograniczenia klucza obcego w klasach usługowych
- 11.3.1 Wywoływanie repozytorium Flight z klasy usługowej
- Ćwiczenia
- Podsumowanie
- 11.1 Walidacja parametrów wejściowych metody warstwy usługi
- Stosowanie IAsyncEnumerable oraz yield return
- 12.1 Czy potrzebujemy klasy AirportService?
- 12.2 Implementowanie klasy FlightService
- 12.2.1 Uzyskiwanie informacji o lotach z FlightRepository
- 12.2.2 Łączenie dwóch strumieni danych w widok
- 12.2.3 Używanie słów kluczowych yield return w blokach kodu try-catch
- 12.2.4 Implementowanie metody GetFlightByFlightNumber
- Ćwiczenia
- Podsumowanie
- Refleksja i imitacje
- Warstwa kontrolera
- Oprogramowanie pośrednie, trasy HTTP i odpowiedzi HTTP
- 13.1 Klasy kontrolerów w ramach wzorca repozytorium/usługa
- 13.2 Ustalanie, które kontrolery trzeba zaimplementować
- 13.3 Implementowanie klasy FlightController
- 13.3.1 Zwracanie odpowiedzi HTTP przy użyciu interfejsu IActionResult (GetFlights)
- 13.3.2 Wstrzykiwanie zależności do kontrolera za pomocą middleware
- 13.3.3 Implementowanie punktu końcowego GET /Flight/{FlightNumber}
- 13.4 Kierowanie żądań HTTP do kontrolerów i metod
- Ćwiczenia
- Podsumowanie
- Serializacja i deserializacja JSON oraz niestandardowe wiązanie modelu
- 14.1 Implementowanie klasy BookingController
- 14.1.1 Wprowadzenie do deserializacji danych
- 14.1.2 Używanie atrybutu [FromBody] do deserializacji przychodzących danych HTTP
- 14.1.3 Użycie niestandardowego wiązania modelu i atrybutu metody dla wiązania
- 14.1.4 Implementowanie logiki punktu końcowego w metodzie CreateBooking
- 14.2 Testy akceptacyjne i middleware Swagger
- 14.2.1 Ręczne wykonywanie testów akceptacyjnych na podstawie specyfikacji OpenAPI
- 14.2.2 Generowanie specyfikacji OpenAPI w czasie działania programu
- 14.3 Koniec podróży
- Podsumowanie
- 14.1 Implementowanie klasy BookingController
- Oprogramowanie pośrednie, trasy HTTP i odpowiedzi HTTP
- Odpowiedzi do ćwiczeń
- Lista kontrolna czystego kodu
- Wskazówki instalacyjne
- OpenAPI FlyTomorrow
- Lista lektur
- Polecamy także