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

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
stron: 472, Format: ebook
Data wydania: 2018-10-01
Księgarnia: Helion
Cena książki: 59,25 zł (poprzednio: 79,00 zł)
Oszczędzasz: 25% (-19,75 zł)
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!
Osoby które kupowały "ASP.NET Core 2 i Angular 5. Przewodnik dla Full-Stack Web Developera", wybierały także:
- Gray Hat C#. Język C# w kontroli i łamaniu zabezpieczeń 57,74 zł, (17,90 zł -69%)
 - Programowanie asynchroniczne i równoległe w C#. Kurs video. Poziom podstawowy 69,00 zł, (31,05 zł -55%)
 - Technologia LINQ. Kurs video. Warsztat pracy z danymi z różnych źródeł 59,00 zł, (26,55 zł -55%)
 - Język XAML. Kurs video. Poziom pierwszy. Programowanie aplikacji w WPF 59,00 zł, (26,55 zł -55%)
 - ASP.NET MVC. Kurs video. Poziom pierwszy. Programowanie aplikacji internetowych 79,00 zł, (35,55 zł -55%)
 
Spis treści
ASP.NET Core 2 i Angular 5. Przewodnik dla Full-Stack Web Developera eBook -- 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
 





