ASP.NET Core 2 i Angular 5. Przewodnik dla Full-Stack Web Developera - ebook
ASP.NET Core 2 i Angular 5. Przewodnik dla Full-Stack Web Developera - 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!
Spis treści
- 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
- Wizja
- 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
- Uwaga pomyśl, zanim to zrobisz
- 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/
- Pliki konfiguracyjne
- 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
- Pamięć podręczna i pliki statyczne
- Odnośniki
- Poruszana tematyka
- Podsumowanie
- Dwóch graczy, jeden cel
- 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
- Dodatkowe metody akcji
- 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
- Definiowanie routingu
- Obsługa pojedynczych elementów
- Poruszana tematyka
- Podsumowanie
- Przepływ danych
- 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
- Nowa klasa HttpClient
- 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
- Wiele instancji jednego komponentu
- 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
- Aktualizacja komponentu QuizComponent
- 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
- Narzędzie Mapster
- Poruszana tematyka
- Podsumowanie
- Przygotowania
- 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
- Zadania po stronie serwerowej
- Pełnowymiarowy test aplikacji
- Poruszana tematyka
- Podsumowanie
- Dodawanie, aktualizacja i usuwanie quizów
- 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
- Podejście zróbmy wszystko sami
- 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
- Przebudowanie plików dystrybucyjnych zewnętrznych dostawców
- 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
- Enkapsulacja CSS
- Całościowy test zmian interfejsu
- Zmiana motywu
- Poruszana tematyka
- Podsumowanie
- Rozdział 7. Formularze i weryfikacja danych
- Walidacja danych
- Formularze we frameworku Angular
- Formularze sterowane szablonami
- Zalety
- Wady
- Formularze sterowane modelem
- Formularze sterowane szablonami
- 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
- Formularze we frameworku Angular
- 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
- Jak wygląda model formularza?
- Poruszana tematyka
- Podsumowanie
- Walidacja danych
- Rozdział 8. Uwierzytelnianie i autoryzacja
- Uwierzytelniać czy tego nie robić?
- Uwierzytelnianie
- Uwierzytelnianie przy udziale strony trzeciej
- Wzlot i upadek OpenID
- OpenID Connect
- Uwierzytelnianie przy udziale strony trzeciej
- Autoryzacja
- Autoryzacja przy udziale strony trzeciej
- Rozwiązania własne czy firm trzecich?
- Uwierzytelnianie
- 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
- Konfiguracja .NET Core Identity
- 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
- Aktualizacja klasy BaseApiController
- 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
- Dostosowanie klienta
- Poruszana tematyka
- Podsumowanie
- Uwierzytelniać czy tego nie robić?
- 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
- Dodanie encji dla tokena
- 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
- Zadania po stronie serwerowej
- 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
- Mechanizm jawny czy niejawny?
- 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
- Aktualizacja klasy TokenController
- 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
- Działanie uwierzytelniania OAuth2
- Poruszana tematyka
- Podsumowanie
- Wygasanie tokena i tokeny odświeżania
- 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
- Konfiguracja bazy 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
- Tworzenie profilu publikacji
- 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
- Przeanalizowanie komunikatu w przeglądarce
- Analiza typowych błędów po wdrożeniu
- Poruszana tematyka
- Podsumowanie
- Przejście na SQL Server
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-4644-4 |
Rozmiar pliku: | 17 MB |