Szczegóły ebooka

ASP.NET Core 2 i Angular 5. Przewodnik dla Full-Stack Web Developera

ASP.NET Core 2 i Angular 5. Przewodnik dla Full-Stack Web Developera

Valerio De Sanctis

Ebook

Framework ASP.NET Core odzwierciedla zmianę podejścia do technologii strony klienta: niezależność od platformy sprzętowej, łatwiejsze prowadzenie testów jednostkowych i rozbudowa tworzonych systemów. Kolejna wersja frameworka odzwierciedla dalszą ewolucję koncepcji: od aplikacji, które miały być reaktywne i responsywne, do progresywnej realizacji zadań. Również technologia strony serwera poczyniła postępy w zakresie stabilności i wydajności pracy, co w widoczny sposób przyczyniło się do radykalnych zmian kolejnych wersji Angulara. Poprzednie wersje ASP.NET Core i Angulara były znakomitą propozycją dla projektantów całościowych rozwiązań. Czy bezproblemowe stosowanie obu tych narzędzi będzie możliwe w przypadku ich najnowszych wersji?

Dzięki tej książce dowiesz się, w jaki sposób zrealizować kompleksowy projekt aplikacji internetowej, zapewniając efektywną pracę jej części klienckiej i serwerowej za pomocą frameworków ASP.NET Core 2 i Angular 5. Dowiesz się, jak zapewnić obsługę wywołań API oraz routingu po stronie serwera, czym jest dowiązanie dwukierunkowe, jak wykorzystać obiekty Observable i jak wstrzykiwać zależności. Nauczysz się stosować framework Entity Framework Core do tworzenia modelu danych, a framework Bootstrap i narzędzie LESS do nadania odpowiednich stylów. Poznasz różne techniki uwierzytelniania klientów, w tym protokół OAuth 2. Dowiesz się też, jak poprawnie skonfigurować mechanizm odwrotnego pośrednika miedzy serwerami IIS i Kestrel.

W tej książce między innymi:

  • Solidne wprowadzenie do frameworków i przygotowanie środowiska pracy
  • Entity Framework Core i implementacja modelu danych
  • Nowoczesne podejście do interfejsu graficznego
  • Zaawansowane funkcje formularzy, w tym walidacja i weryfikacja danych
  • Uwierzytelnianie i autoryzacja oraz praca z tokenami
  • Wdrażanie aplikacji w środowisku produkcyjnym

Nowoczesne aplikacje: oszałamiająca wydajność, wszechobecna prostota!

  • Zespół wydania oryginalnego
  • O autorze
  • O redaktorach merytorycznych
  • Wstęp
    • Zawartość książki
    • Oprogramowanie wymagane do wykonania przykładów
    • Do kogo skierowana jest ta książka?
    • Konwencje typograficzne
    • Pomoce dla czytelnika
      • Przykładowy kod
  • Rozdział 1. Przygotowanie środowiska
    • Dwóch graczy, jeden cel
      • Rewolucja ASP.NET
      • Co nowego w Angularze?
    • Podejście od początku do końca
    • Aplikacja typu SPA
      • Typowe funkcjonalności nowoczesnych aplikacji SPA
      • Oczekiwania właściciela produktu
    • Projekt przykładowej aplikacji SPA
      • Wizja
        • To nie będzie typowa aplikacja Witaj, świecie
        • Aplikacja TestMakerFree
      • Podstawowe funkcjonalności i wymagania
    • Przygotowanie środowiska pracy
      • Uwaga pomyśl, zanim to zrobisz
        • Mit niedziałającego kodu
        • Pozostań otwarty na nowości, ale wprowadzaj je odpowiedzialnie
        • Wersje narzędzi i bibliotek
      • Konfiguracja projektu
        • Alternatywna konfiguracja z wykorzystaniem wiersza poleceń
        • Test konfiguracji środowiska
    • Poznawanie projektu
      • Pliki konfiguracyjne
        • Plik Program.cs
        • Plik Startup.cs
        • Plik appsettings.json
        • Plik package.json
          • Aktualizacja (lub dezaktualizacja) Angulara
          • Aktualizacja (lub dezaktualizacja) pozostałych pakietów
        • Plik tsconfig.json
        • Pliki konfiguracyjne narzędzia Webpack
          • Aktualizacja pliku webpack.config.js
          • Uaktualnienie pliku webpack.config.vendor.js
          • Dlaczego warto korzystać z dynamicznego mechanizmu pakowania modułów?
          • Odświeżenie plików generowanych przez Webpack
      • Kod po stronie serwerowej
        • Plik Controllers/HomeController.cs
        • Plik Controllers/SampleDataController.cs
        • Folder /Views/
      • Kod po stronie klienckiej
        • Folder /ClientApp/app/
    • Przygotowanie projektu
      • Pamięć podręczna i pliki statyczne
        • Mechanizm stosowany w przeszłości
        • Powrót do przyszłości
        • Czas na test
          • Podejście z użyciem silnego typowania
      • Czyszczenie aplikacji klienckiej
        • Ograniczenie liczby komponentów
        • Klasy AppModule
        • Aktualizacja NavMenu
    • Odnośniki
    • Poruszana tematyka
    • Podsumowanie
  • Rozdział 2. Część serwerowa wykorzystująca .NET Core
    • Przepływ danych
      • Zadania modelu widoku
    • Pierwszy model widoku
      • Klasa QuizViewModel
      • Klasa QuizController
        • Dodatkowe metody akcji
          • Metoda ByTitle
          • Metoda Random()
        • Sprawdzenie, czy wszystko działa
    • Dodawanie pozostałych kontrolerów
      • Klasa QuestionViewModel
      • Klasa QuestionController
      • Klasa AnswerViewModel
      • Klasa AnswerController
      • Klasa ResultViewModel
      • Klasa ResultController
    • Działanie routingu
      • Definiowanie routingu
        • Routing dawniej i dziś
        • Obsługa routingu w .NET Core
          • Trzy sposoby routingu
      • Dodawanie nowych ścieżek
        • Atrapa dostawcy danych
    • Obsługa pojedynczych elementów
    • Poruszana tematyka
    • Podsumowanie
  • Rozdział 3. Część kliencka korzystająca z frameworka Angular
    • Wzorzec nawigacji
    • Powiązanie ogół-szczegóły
      • Kliencka część interfejsu dotyczącego quizu
      • Komponent QuizListComponent
        • Nowa klasa HttpClient
          • Porównanie ze starszym standardem
          • Jak zainstalować klasę HttpClient?
          • Jak jej użyć?
          • Wstrzyknięcie jako zależności
          • Pobranie i subskrypcja
        • Metoda onSelect()
        • Plik szablonu
        • Plik arkusza stylów
        • Dodanie komponentu
          • Plik modułu (klasa AppModule)
          • Szablon komponentu HomeComponent
        • Test
      • Klasa QuizComponent
        • Dodanie plików komponentu
        • Dodanie komponentu
        • Test
    • Dołączanie dodatkowych list
      • Wiele instancji jednego komponentu
        • Testowanie i debugowanie
        • Interfejs OnInit i zdarzenia cyklu życia
        • Implementacja metody ngOnInit
        • Testowanie poprawionej wersji
    • Dwukierunkowe dowiązanie danych
      • Wyłączenie dwukierunkowego dowiązania danych
    • Routing po stronie klienckiej
      • Strategie PathLocationStrategy i HashLocationStrategy
      • Refaktoryzacja aplikacji
      • Rejestracja nowej ścieżki
        • Aktualizacja komponentu QuizComponent
          • Pobranie identyfikatora quizu
          • Dodanie obiektu HttpClient
          • Pobieranie danych
        • Aktualizacja komponentu QuizListComponent
        • Test routingu
      • Dodanie nowych komponentów
        • Komponent AboutComponent
        • Komponent LoginComponent
        • Komponent PageNotFoundComponent
        • Aktualizacja klasy AppModule
    • Test całej aplikacji
    • Poruszana tematyka
    • Podsumowanie
  • Rozdział 4. Model danych wykorzystujący Entity Framework Core
    • Przygotowania
      • Instalacja Entity Framework Core
      • Podejścia do modelowania danych
        • Najpierw model
        • Najpierw baza danych
        • Najpierw kod
        • Podjęcie decyzji
    • Tworzenie encji
      • Klasa ApplicationUser
      • Klasa Quiz
      • Klasa Question
      • Klasa Answer
      • Klasa Result
    • Definiowanie relacji
      • Wzorzec leniwego wczytywania danych w relacjach jeden-do-wielu
    • Konfiguracja obiektu DbContext
    • Strategie inicjalizacji bazy danych
      • Wybór bazy danych
      • Aktualizacja pliku appsettings.json
      • Tworzenie bazy danych
        • Aktualizacja pliku Startup.cs
      • Dodanie migracji początkowej
        • Błąd braku pliku
        • Działanie mechanizmu migracji
    • Implementacja wypełniania bazy danymi
      • Utworzenie klasy DbSeeder
      • Użycie DbSeeder w Startup.cs
      • Wypełnienie bazy danymi początkowymi
    • Aktualizacja klasy QuizController
      • Narzędzie Mapster
        • Instalacja
        • Podstawy użycia
        • Aktualizacja klasy
      • Testowanie dostawcy danych
    • Poruszana tematyka
    • Podsumowanie
  • Rozdział 5. Interakcje po stronie klienckiej
    • Dodawanie, aktualizacja i usuwanie quizów
      • Aktualizacja klasy QuizController
      • Dostosowanie części klienckiej
        • Dodanie komponentu QuizEditController
        • Aktywacja trybu edycji
          • Obsługa zdarzeń lub linki routera
          • Dodanie ścieżki edycji
        • Implementacja funkcjonalności usuwania
          • Kilka słów o obiektach Observable
      • Pierwszy test poważnej interakcji klienta z serwerem
      • Przepływ komunikacji między klientem i serwerem
    • Pytania, odpowiedzi i wyniki
      • Zadania po stronie serwerowej
        • Klasa QuestionController
        • Klasa AnswerController
        • Klasa ResultController
        • Klasa BaseApiController
          • Zastosowanie klasy BaseApiController
      • Zadania po stronie klienckiej
        • Dodanie interfejsów
        • Komponent QuestionListComponent
          • Wprowadzenie do metody ngOnChanges()
          • Dlaczego powinniśmy się tym przejmować?
          • Plik szablonu
          • Dodanie referencji
        • Komponent QuestionEditComponent
          • Referencje i routing
        • Komponent AnswerListComponent
        • Komponent AnswerEditComponent
          • Plik szablonu
          • Referencje i routing
        • Komponent ResultListComponent
          • Referencje i routing
        • Komponent ResultEditComponent
    • Pełnowymiarowy test aplikacji
    • Poruszana tematyka
    • Podsumowanie
  • Rozdział 6. Arkusze stylów i układ interfejsu graficznego
    • Czy jest aż tak źle?
    • Wprowadzenie do LESS
      • Języki arkuszy stylów
      • CSS
        • Przykładowy kod CSS
      • Czym jest LESS i dlaczego warto go używać?
        • Zmienne
        • Dyrektywy importu
        • Zagnieżdżanie selektorów
        • Domieszki (mixin)
        • Pseudoklasa :extend
      • Dokumentacja LESS
      • Sass, Stylus i inne możliwości
    • Implementacja LESS
      • Instalacja kompilatora LESS
      • Kompilacja plików LESS za pomocą narzędzia Webpack
    • Samodzielne definiowanie stylów kontra użycie frameworka CSS
      • Podejście zróbmy wszystko sami
        • Zalety
        • Wady
      • Podejście wykorzystujące framework CSS
        • Zalety
        • Wady
      • Wnioski
    • Praca z Bootstrapem
      • Zmiana motywu
        • Przebudowanie plików dystrybucyjnych zewnętrznych dostawców
          • Usunięcie folderu /wwwroot/dist/
          • Uaktualnienie pliku .csproj
          • Utworzenie pliku update-webpack.bat
        • Sprawdzenie nowego motywu
      • Zmiana struktury interfejsu użytkownika
        • Komponent AppComponent
        • Komponent NavMenuComponent
        • Komponent QuizSearchComponent
          • Rejestracja komponentu QuizSearchComponent
        • Plik SVG z logo
        • Szybki test
      • Stylowanie komponentów
        • Enkapsulacja CSS
          • Wbudowana enkapsulacja wykorzystująca Shadow DOM
          • Wyłączenie enkapsulacji
        • Komponent HomeComponent
        • Komponent QuizListComponent
          • Następny test interfejsu użytkownika
        • Komponent QuizComponent
          • Test interfejsu użytkownika
        • Komponent QuizEditComponent
        • Komponenty pytania, odpowiedzi i wyniku
          • Przyciski i ikony
          • Tabele i elementy div
          • Formularze i pola tekstowe
      • Całościowy test zmian interfejsu
    • Poruszana tematyka
    • Podsumowanie
  • Rozdział 7. Formularze i weryfikacja danych
    • Walidacja danych
      • Formularze we frameworku Angular
        • Formularze sterowane szablonami
          • Zalety
          • Wady
        • Formularze sterowane modelem
      • Pierwszy reaktywny formularz
        • Dodanie referencji do ReactiveFormsModule
        • Uaktualnienie komponentu QuizEditComponent
        • Dodanie walidatorów
          • Dodanie skrótów
      • Uaktualnienie komponentów
        • Komponent QuestionEditComponent
        • Komponent AnswerEditComponent
        • Komponent ResultEditComponent
    • Debugowanie i testowanie
      • Jak wygląda model formularza?
        • Operator potoku
      • Reagowanie na zmiany
        • Obserwowanie obiektu Observable
        • Rozbudowa dziennika aktywności
      • Debugowanie po stronie klienta
      • Testy jednostkowe formularzy
    • Poruszana tematyka
    • Podsumowanie
  • Rozdział 8. Uwierzytelnianie i autoryzacja
    • Uwierzytelniać czy tego nie robić?
      • Uwierzytelnianie
        • Uwierzytelnianie przy udziale strony trzeciej
          • Wzlot i upadek OpenID
          • OpenID Connect
      • Autoryzacja
        • Autoryzacja przy udziale strony trzeciej
      • Rozwiązania własne czy firm trzecich?
    • Mechanizmy uwierzytelniania wbudowane w .NET Core
      • Konfiguracja .NET Core Identity
        • Konfiguracja usługi Identity
        • Klasa ApplicationUser jako klasa potomna
        • Uaktualnienie klasy DbContext
        • Modyfikacja klasy DbSeeder
          • Kilka słów na temat zadań asynchronicznych i blokad wzajemnych
    • Aktualizacja bazy danych
      • Dodanie migracji dotyczącej usługi Identity
      • Zastosowanie migracji
        • Opcja 1. aktualizacja
        • Opcja 2. usunięcie i ponowne utworzenie
      • Wypełnienie bazy danymi
    • Sposoby uwierzytelniania
      • Sesje
      • Tokeny
      • Sygnatury
      • Uwierzytelnianie dwuetapowe
      • Wnioski
    • Implementacja uwierzytelniania JWT
      • Dodanie usługi uwierzytelniania do klasy startowej
      • Aktualizacja plików AppSettings
      • Klasa TokenController
        • Aktualizacja klasy BaseApiController
          • Aktualizacja kontrolerów dziedziczących po klasie bazowej
        • Dodanie klasy TokenController
        • Klasa TokenRequestViewModel
        • Klasa TokenResponseViewModel
        • Test narzędziem Postman
      • Formularz logowania w Angularze
        • Interfejs TokenResponse
        • Klasa AuthService
          • Aktualizacja klasy AppModule
        • Nowa wersja komponentu LoginComponent
          • Pierwszy test logowania
        • Dodanie tokena do nagłówka żądania HTTP
          • Klasa AuthInterceptor
          • Dodanie AuthInterceptor do AppModule
    • Wymuszenie autoryzacji
      • Dostosowanie klienta
        • Komponent NavMenuComponent
        • Komponent QuizComponent
      • Ochrona serwera
        • Pobranie identyfikatora aktualnego użytkownika
      • Sprawdzenie uwierzytelniania na styku klient-serwer
    • Poruszana tematyka
    • Podsumowanie
  • Rozdział 9. Tematy zaawansowane
    • Wygasanie tokena i tokeny odświeżania
      • Czym jest token odświeżania?
      • Zadania po stronie serwerowej
        • Dodanie encji dla tokena
          • Aktualizacja encji użytkownika
          • Aktualizacja ApplicationDbContext
          • Przygotowanie i zastosowanie migracji w EF Core
        • Implementacja tokena odświeżania
          • Aktualizacja klasy TokenResponseViewModel
          • Aktualizacja klasy TokenRequestViewModel
          • Aktualizacja klasy TokenController
      • Zadania po stronie klienckiej
        • Aktualizacja interfejsu TokenResponse
        • Aktualizacja klasy AuthService
        • Dodanie klasy AuthResponseInterceptor
          • Dodanie nowej klasy AuthResponseInterceptor do AppModule
      • Test działania aplikacji
    • Rejestracja nowego użytkownika
      • Zadania po stronie serwerowej
        • Klasa UserController
        • Klasa UserViewModel
      • Zadania po stronie klienckiej
        • Interfejs User
        • Klasa RegisterComponent
          • Własne walidatory
          • Pliki szablonu i arkusza stylów
        • Plik AppModule
        • Komponent LoginComponent
        • Komponent NavMenu
      • Test działania aplikacji
    • Uwierzytelnianie dzięki firmom trzecim
      • Działanie uwierzytelniania OAuth2
        • Mechanizm jawny czy niejawny?
          • Zalety i wady podejścia niejawnego
          • Zalety i wady podejścia jawnego
        • Wnioski
      • Logowanie do Facebooka
        • Tworzenie aplikacji Facebooka
      • Mechanizm niejawny
        • Aktualizacja klasy TokenController
          • Dodanie metody GenerateRandomPassword()
        • Dodanie komponentu LoginFacebookComponent
          • Działanie stref
          • Dodanie pliku szablonu
          • Aktualizacja AppModule
          • Użycie komponentu LoginFacebookComponent
        • Test działania aplikacji
      • Mechanizm jawny
        • Instalacja pakietu Authentication.Facebook
        • Konfiguracja usługi uwierzytelniania poprzez Facebooka
        • Aktualizacja pliku appsettings.json
        • Aktualizacja klasy TokenController
          • Metoda ExternalLogin
          • Dodanie klasy SignInManager
          • Metoda ExternalLoginCallback
        • Komponent LoginExternalProvider
          • Aktualizacja AppModule
          • Użycie komponentu LoginExternalProvidersComponent
        • Test działania aplikacji
    • Poruszana tematyka
    • Podsumowanie
  • Rozdział 10. Prace wykończeniowe i wdrożenie
    • Przejście na SQL Server
      • Instalacja SQL Server 2017 Express Edition
      • Instalacja SQL Server Management Studio
        • Konfiguracja bazy danych
          • Zmiana sposobu uwierzytelniania
          • Dodanie bazy danych TestMakerFree
          • Dodanie nowego użytkownika dla bazy danych
          • Powiązanie loginu z bazą danych
      • Dodanie konfiguracji połączenia z bazą SQL Server
        • Modyfikacja konfiguracji połączenia z bazą danych
      • Dodanie produkcyjnego adresu URL u zewnętrznych dostawców
      • Aktualizacja pliku launchSettings.json
    • Publikacja aplikacji internetowej
      • Tworzenie profilu publikacji
        • Publikacja poprzez protokół FTP
        • Profil publikacji do folderu
      • Publikacja aplikacji internetowej
    • Konfiguracja serwera i IIS
      • Instalacja modułu ASP.NET Core dla IIS
      • Dodanie nowej witryny
      • Konfiguracja puli aplikacji
    • Uruchamianie silnika
      • Analiza typowych błędów po wdrożeniu
        • Przeanalizowanie komunikatu w przeglądarce
          • Plik web.config
        • Narzędzie Event Viewer
        • Moduł logowania w ASP.NET Core
        • Sprawdzenie serwera Kestrel
          • Uruchomienie serwera Kestrel w Visual Studio
        • Wyłączenie renderowania po stronie serwera
    • Poruszana tematyka
    • Podsumowanie
  • Tytuł: ASP.NET Core 2 i Angular 5. Przewodnik dla Full-Stack Web Developera
  • Autor: Valerio De Sanctis
  • Tytuł oryginału: ASP.NET Core 2 and Angular 5: Full-Stack Web Development with .NET Core and Angular
  • Tłumaczenie: Rafał Jońca
  • ISBN: 978-83-283-4644-4, 9788328346444
  • Data wydania: 2018-12-07
  • Format: Ebook
  • Identyfikator pozycji: asp2an
  • Wydawca: Helion