Szczegóły ebooka

Nowoczesne API. Ewoluujące aplikacje sieciowe w technologii ASP.NET

Nowoczesne API. Ewoluujące aplikacje sieciowe w technologii ASP.NET

Howard Dierking, Pedro Felix, Darrel Miller, Pablo Cibraro, Glenn Block

Ebook
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.

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)

  • Tytuł: Nowoczesne API. Ewoluujące aplikacje sieciowe w technologii ASP.NET
  • Autor: Glenn Block, Pablo Cibraro, Pedro Felix, Howard Dierking, Darrel Miller
  • Tytuł oryginału: Designing Evolvable Web APIs with ASP.NET
  • Tłumaczenie: Robert Górczyński
  • ISBN: 978-83-283-2392-6, 9788328323926
  • Data wydania: 2016-06-26
  • Format: Ebook
  • Identyfikator pozycji: noapie
  • Wydawca: Helion