Nowoczesne API. Ewoluujące aplikacje sieciowe w technologii ASP.NET - Helion
Tytuł oryginału: Designing Evolvable Web APIs with ASP.NET
Tłumaczenie: Robert Górczyński
ISBN: 978-83-283-2391-9
stron: 488, Format: 168x237, okładka: miękka
Data wydania: 2016-06-27
Księgarnia: Helion
Cena książki: 79,00 zł
Większość z najpopularniejszych dużych witryn internetowych zbudowano z użyciem technologii Web API. Może ona działać na podstawie protokołu HTTP — umożliwia wówczas łatwą pracę nad nowymi funkcjonalnościami aplikacji, kwestiami bezpieczeństwa, skalowalnością rozwiązań, obsługą nowych urządzeń lub aplikacji klienckich. W takim modelu aplikacji kluczowymi komponentami są typy danych i hipermedia. Wielu twórców API nie wykorzystuje jednak możliwości protokołu HTTP i wdraża API silnie powiązane z aplikacją klienta, co w zasadzie zamyka drogę do bezproblemowego ewoluowania systemu. Na dłuższą metę tego rodzaju rozwiązania są sprzeczne z podstawami internetu.
Niniejsza książka to wartościowy podręcznik dla projektantów, którzy chcą tworzyć API adaptujące się do zachodzących zmian. Autorzy zaprezentowali tu wszystkie narzędzia niezbędne do tworzenia ewoluujących systemów, a także przedstawili informacje dotyczące sieci i programowania Web API. Dokładnie omówili proces tworzenia nowego API za pomocą platformy ASP.NET Web API, z uwzględnieniem takich zagadnień, jak implementacja hipermediów z użyciem ASP.NET Web API oraz negocjowanie treści. Ten bardzo praktyczny podręcznik, pisany przez inżynierów oprogramowania, stanowi inspirację do projektowania najlepszych rozwiązań dla ewoluujących aplikacji internetowych.
W tej książce znajdziesz:
- zwięzłe podstawy budowy sieci, protokołu HTTP, programowania API oraz platformy ASP.NET Web API
- omówienie nowego modelu programowania HTTP na platformie .NET
- objaśnienia dotyczące różnych modeli hostingu, w tym samohostowania, IIS i modelu OWIN
- przedstawienie zasad działania routingu Web API i kontrolerów
- praktyczną prezentację zagadnień bezpieczeństwa aplikacji
- opis dobrych praktyk, takich jak testy akceptacji, programowanie TDD, techniki odwracania kontroli i wiele innych
Odkryj możliwości HTTP na nowo!
Glenn Block — jeden z twórców ASP.NET, odpowiedzialny za przygotowanie jednej z poprzednich wersji ASP.NET Web API.
Pablo Cibraro — od czternastu lat projektuje i implementuje ogromne systemy rozproszone w centrach Microsoft Technologies.
Pedro Felix — naukowiec i inżynier oprogramowania, specjalizuje się w problematyce infrastruktury środowiska uruchomieniowego, w zarządzaniu tożsamością i w kwestiach związanych z kontrolą dostępu do danych.
Howard Dierking — menedżer programu w zespole WCF Web API w firmie Microsoft, obecnie kieruje pracami nad menedżerem pakietów NuGet i pracuje nad projektem Katana.
Darrel Miller — współzałożyciel Tavis Software, specjalizuje się w stosowaniu stylu architekturalnego REST w aplikacjach biznesowych.
Osoby które kupowały "Nowoczesne API. Ewoluujące aplikacje sieciowe w technologii ASP.NET", wybierały także:
- Django REST framework. Kurs video. Praktyczne wprowadzenie do projektowania interfejsów REST API 99,00 zł, (29,70 zł -70%)
- ASP .NET Core. Kurs video. Rozwijanie dodatkowych funkcjonalności Web API 89,00 zł, (26,70 zł -70%)
- REST API i Symfony. Kurs video. Nowoczesne aplikacje w PHP 144,86 zł, (52,15 zł -64%)
- Spring i Spring Boot. Kurs video. Aplikacje REST API w praktyce 96,25 zł, (34,65 zł -64%)
- Platforma Xamarin. Kurs video. Poziom drugi. Zaawansowane techniki tworzenia aplikacji cross-platform 99,00 zł, (39,60 zł -60%)
Spis treści
Nowoczesne API. Ewoluujące aplikacje sieciowe w technologii ASP.NET -- spis treści
Wprowadzenie (13)
Wstęp (17)
- Dlaczego należy przeczytać tę książkę? (17)
- Co trzeba wiedzieć, aby jak najwięcej skorzystać z tej książki? (18)
- Jakie informacje zawiera ta książka? (19)
- Część I. Podstawy (19)
- Część II. Praktyczne programowanie API (20)
- Część III. Podstawowe zasady Web API (20)
- Konwencje zastosowane w książce (20)
- Użycie przykładowych kodów (21)
- Podziękowania (22)
Rozdział 1. Internet, World Wide Web i HTTP (23)
- Architektura sieci (24)
- Zasób (25)
- URI (25)
- Cool URI (26)
- Reprezentacja (26)
- Typ danych (27)
- HTTP (29)
- Wykraczamy poza HTTP 1.1 (29)
- Wymiana komunikatów HTTP (30)
- Pośredniki (32)
- Rodzaje pośredników (33)
- Metody HTTP (33)
- Nagłówki (36)
- Kody stanu HTTP (37)
- Negocjacja treści (38)
- Buforowanie (38)
- Uwierzytelnianie (42)
- Schematy uwierzytelniania (42)
- Dodatkowe schematy uwierzytelniania (43)
- Podsumowanie (44)
Rozdział 2. Web API (45)
- Co to jest Web API? (45)
- Co w kwestii usług sieciowych SOAP? (45)
- Korzenie Web API (46)
- Początek rewolucji Web API (46)
- Zwrócenie uwagi na sieć (47)
- Wskazówki dla Web API (47)
- Typy danych charakterystyczne dla domeny (48)
- Profile typów danych (49)
- Wiele reprezentacji (50)
- Style API (51)
- Model dojrzałości Richardsona (52)
- RPC (poziom 0 w modelu dojrzałości Richardsona) (52)
- Zasoby (poziom 1 w modelu dojrzałości Richardsona) (54)
- Metody HTTP (poziom 2 w modelu dojrzałości Richardsona) (56)
- Pokonanie przepaści na drodze ku API zorientowanemu na zasoby (58)
- Hipermedia (poziom 3 w modelu dojrzałości Richardsona) (58)
- REST (63)
- Ograniczenia REST (63)
- Podsumowanie (65)
Rozdział 3. Podstawy ASP.NET Web API (67)
- Najczęściej spotykane scenariusze (67)
- Pierwsza klasa programowania HTTP (68)
- Jednakowe możliwości podczas programowania po stronie klienta i serwera (69)
- Elastyczna obsługa różnych formatów (70)
- Nigdy więcej "tworzenia kodu z nawiasami ostrymi" (70)
- Możliwość stosowania testów jednostkowych (70)
- Wiele opcji w zakresie hostingu (71)
- Rozpoczęcie pracy z ASP.NET Web API (72)
- Nowy projekt Web API (75)
- Plik WebApiConfig.cs (76)
- Plik ValuesController.cs (78)
- "Witaj, Web API!" (79)
- Utworzenie usługi (79)
- Klient (86)
- Host (86)
- Podsumowanie (87)
Rozdział 4. Architektura przetwarzania (89)
- Warstwa hostingu (91)
- Warstwa potoku procedur obsługi komunikatów (93)
- Obsługa tras (95)
- Warstwa obsługi kontrolera (96)
- Klasa bazowa ApiController (97)
- Podsumowanie (103)
Rozdział 5. Aplikacja (105)
- Dlaczego ewolucja? (106)
- Bariery na drodze ewolucji (107)
- Jaki jest koszt zmiany? (108)
- Dlaczego po prostu nie wersja? (110)
- Przystępujemy do pracy (113)
- Cele aplikacji (113)
- Cele (113)
- Możliwości (114)
- Model informacji (114)
- Subdomeny (115)
- Powiązane zasoby (116)
- Grupy atrybutów (117)
- Kolekcje grup atrybutów (117)
- Model informacji kontra typ danych (118)
- Kolekcje zgłoszeń błędów (119)
- Modele zasobów (119)
- Zasób główny (119)
- Zasoby wyszukiwania danych (120)
- Kolekcja zasobów (120)
- Zasób elementu (120)
- Podsumowanie (123)
Rozdział 6. Projekt i wybór typu danych (125)
- Samoopisywanie się (125)
- Rodzaje kontraktów (126)
- Typy danych (126)
- Proste formaty (126)
- Popularne formaty (128)
- Nowe formaty (129)
- Typy hipermediów (131)
- Eksplozja typów danych (132)
- Ogólne typy danych i profile (132)
- Inne typy hipermediów (136)
- Typy relacji łączy (137)
- Semantyka (137)
- Zastąpienie osadzonych zasobów (139)
- Warstwa pośrednia (139)
- Dane odwołania (140)
- Przepływ zdarzeń w aplikacji (141)
- Składnia (142)
- Doskonałe połączenie (145)
- Opracowanie kontraktu nowego typu danych (145)
- Wybór formatu (145)
- Włączenie obsługi hipermediów (146)
- Opcjonalne, obowiązkowe, pominięte, stosowalne (147)
- Metadane osadzone kontra zewnętrzne (148)
- Rozszerzalność (148)
- Rejestracja typu danych (150)
- Opracowanie nowych relacji łączy (151)
- Standardowe relacje łącza (151)
- Rozszerzenia relacji łączy (152)
- Osadzone relacje łączy (152)
- Rejestracja relacji łącza (153)
- Typy danych w domenie monitorowania zgłoszeń błędów (153)
- Lista zasobów (153)
- Zasób elementu (155)
- Zasób wykrycia (156)
- Zasób wyszukiwania (157)
- Podsumowanie (157)
Rozdział 7. Tworzenie API (159)
- Projekt (159)
- Pobranie kodu źródłowego (160)
- Przygotowanie implementacji w stylu BDD (160)
- Nawigacja po rozwiązaniu (161)
- Pakiety i biblioteki (161)
- Samohostowanie (162)
- Modele i usługi (163)
- Zgłoszenie błędu i magazyn dla zgłoszeń błędów (163)
- Klasa IssueState (164)
- Klasa IssuesState (164)
- Klasa Link (166)
- Klasa IssueStateFactory (166)
- Klasa LinkFactory (167)
- Klasa IssueLinkFactory (168)
- Kryteria akceptacji (169)
- Funkcjonalność: pobieranie zgłoszeń błędów (172)
- Pobieranie zgłoszenia błędu (174)
- Pobieranie otwartych i zamkniętych zgłoszeń błędów (177)
- Pobieranie nieistniejącego zgłoszenia błędu (179)
- Pobieranie wszystkich zgłoszeń błędów (179)
- Pobieranie wszystkich zgłoszeń błędów jako danych w formacie Collection+Json (182)
- Zasoby wyszukiwania (184)
- Funkcjonalność: tworzenie zgłoszenia błędu (186)
- Funkcjonalność: uaktualnianie zgłoszenia błędu (188)
- Uaktualnianie zgłoszenia błędu (188)
- Uaktualnianie nieistniejącego zgłoszenia błędu (190)
- Funkcjonalność: usuwanie zgłoszenia błędu (191)
- Usuwanie zgłoszenia błędu (191)
- Usuwanie nieistniejącego zgłoszenia błędu (192)
- Funkcjonalność: przetwarzanie zgłoszenia błędu (193)
- Testy (193)
- Implementacja (194)
- Podsumowanie (195)
Rozdział 8. Usprawnianie API (197)
- Kryteria akceptacji dla nowych funkcjonalności (197)
- Implementacja obsługi buforowania danych wyjściowych (198)
- Dodanie testów do sprawdzenia buforowania danych wyjściowych (200)
- Implementacja ponownego pobierania buforowanych danych (202)
- Implementacja warunkowych żądań GET do obsługi ponownego pobierania buforowanych danych (203)
- Wykrywanie konfliktów (206)
- Implementacja wykrywania konfliktów (206)
- Audyt zmiany (209)
- Implementacja audytu zmian za pomocą uwierzytelniania Hawk (210)
- Monitorowanie (213)
- Implementacja monitorowania (214)
- Podsumowanie (216)
Rozdział 9. Tworzenie klienta (217)
- Biblioteki klienta (218)
- Biblioteki opakowujące (218)
- Łącza jako funkcje (222)
- Przebieg działania aplikacji (227)
- Warto wiedzieć (228)
- Klienty z misją (232)
- Stan klienta (234)
- Podsumowanie (235)
Rozdział 10. Model programowania HTTP (237)
- Komunikaty (238)
- Nagłówki (242)
- Zawartość komunikatu (247)
- Wykorzystanie zawartości komunikatu (248)
- Tworzenie zawartości komunikatu (250)
- Podsumowanie (257)
Rozdział 11. Hosting (259)
- Hosting WWW (260)
- Infrastruktura ASP.NET (260)
- Routing ASP.NET (262)
- Routing Web API (264)
- Konfiguracja globalna (266)
- Procedura obsługi Web API ASP.NET (268)
- Samohostowanie (270)
- Architektura WCF (271)
- Klasa HttpSelfHostServer (272)
- Klasa SelfHostConfiguration (273)
- Rezerwacja adresu URL i kontrola dostępu (275)
- Hosting Web API z użyciem OWIN i Katana (275)
- OWIN (276)
- Projekt Katana (277)
- Konfiguracja Web API (280)
- Oprogramowanie pośredniczące Web API (281)
- Środowisko OWIN (283)
- Hosting w pamięci (284)
- Hosting Azure Service Bus (284)
- Podsumowanie (290)
Rozdział 12. Kontrolery i routing (291)
- Ogólny opis przepływu komunikatów HTTP (291)
- Potok procedur obsługi komunikatów (292)
- Dyspozytor (296)
- HttpControllerDispatcher (297)
- Wybór kontrolera (297)
- Aktywacja kontrolera (301)
- Potok kontrolera (302)
- ApiController (302)
- Model przetwarzania ApiController (302)
- Podsumowanie (314)
Rozdział 13. Formatery i dołączanie modelu (315)
- Waga modeli w ASP.NET Web API (315)
- Jak działa dołączanie modelu? (316)
- Wbudowane bindery modelu (319)
- Implementacja ModelBindingParameterBinder (320)
- Dostawcy wartości (320)
- Bindery modelu (323)
- Dołączanie modelu tylko dla adresu URI (325)
- Implementacja FormatterParameterBinder (326)
- Domyślny wybór HttpParameterBinding (331)
- Sprawdzanie poprawności modelu (331)
- Zastosowanie w modelu atrybutów adnotacji danych (331)
- Przeglądanie wyników operacji sprawdzania poprawności (332)
- Podsumowanie (334)
Rozdział 14. HttpClient (335)
- Klasa HttpClient (335)
- Cykl życiowy (335)
- Opakowanie (336)
- Wiele egzemplarzy (336)
- Bezpieczeństwo wątków (337)
- Metody pomocnicze (337)
- Zagłębiamy się w kolejne warstwy (337)
- Ukończone żądania nie zgłaszają wyjątków (338)
- Zawartość jest wszystkim (338)
- Przerwanie na żądanie (339)
- Metoda SendAsync() (340)
- Procedury obsługi komunikatów klienta (341)
- Proxy dla procedur obsługi (342)
- Nieprawdziwe procedury obsługi odpowiedzi (343)
- Tworzenie wielokrotnego użytku procedur obsługi odpowiedzi (344)
- Podsumowanie (346)
Rozdział 15. Bezpieczeństwo (347)
- Zapewnienie bezpieczeństwa transportu (347)
- Użycie TLS w ASP.NET Web API (349)
- Użycie TLS z hostingiem IIS (349)
- Użycie TLS z samohostowaniem (351)
- Uwierzytelnianie (351)
- Model oświadczeń (352)
- Pobieranie i przypisywanie aktualnego zleceniodawcy (356)
- Uwierzytelnienie oparte na transporcie (357)
- Uwierzytelnienie serwera (357)
- Uwierzytelnienie klienta (361)
- Framework uwierzytelniania HTTP (367)
- Implementacja uwierzytelniania opartego na HTTP (369)
- Katana, czyli oprogramowanie pośredniczące do uwierzytelniania (370)
- Aktywne i pasywne oprogramowanie pośredniczące odpowiedzialne za uwierzytelnianie (374)
- Filtry uwierzytelniania w Web API (375)
- Uwierzytelnianie oparte na tokenie (378)
- Schemat uwierzytelniania Hawk (385)
- Autoryzacja (386)
- Egzekwowanie autoryzacji (388)
- Współdzielenie zasobów między serwerami w różnych domenach (391)
- Obsługa mechanizmu CORS na platformie ASP.NET Web API (393)
- Podsumowanie (396)
Rozdział 16. OAuth 2.0, czyli framework uwierzytelniania (397)
- Aplikacje klienta (399)
- Uzyskanie dostępu do chronionych zasobów (401)
- Pobranie tokenu dostępu (402)
- Uprawnienia kodu autoryzacji (404)
- Zakres (406)
- Kanał oficjalny kontra kanał nieoficjalny (407)
- Token refresh (409)
- Serwer zasobów i serwer autoryzacji (410)
- Przetwarzanie tokenów dostępu w ASP.NET Web API (411)
- OAuth 2.0 i uwierzytelnianie (413)
- Autoryzacja na podstawie zakresu (416)
- Podsumowanie (417)
Rozdział 17. Testowanie (419)
- Testy jednostkowe (419)
- Frameworki testów jednostkowych (420)
- Rozpoczęcie pracy z testami jednostkowymi w Visual Studio (420)
- xUnit.NET (422)
- Rola testów jednostkowych w programowaniu TDD (423)
- Testy jednostkowe implementacji ASP.NET Web API (427)
- Testy jednostkowe ApiController (427)
- Testy jednostkowe MediaTypeFormatter (433)
- Testy jednostkowe HttpMessageHandler (436)
- Testy jednostkowe ActionFilterAttribute (437)
- Testy jednostkowe tras (440)
- Testy integracji w ASP.NET Web API (442)
- Podsumowanie (443)
Dodatek A. Typy danych (445)
Dodatek B. Nagłówki HTTP (447)
Dodatek C. Negocjacja treści (451)
- Negocjacja proaktywna (451)
- Negocjacja reaktywna (452)
Dodatek D. Buforowanie w działaniu (455)
Dodatek E. Przepływ zdarzeń podczas uwierzytelniania (459)
Dodatek F. Specyfikacja typu danych dla application/issue+json (463)
- Konwencje nazw (463)
- Dokument zgłoszenia błędu (463)
- Kwestie bezpieczeństwa (464)
- Kwestie interoperacyjności (464)
- Kwestie związane z IANA (464)
Dodatek G. Certyfikaty i kryptografia klucza publicznego (465)
- Cofnięcie certyfikatu (471)
- Tworzenie testowych kluczy i certyfikatów (471)
Skorowidz (475)