Wprowadzenie do aplikacji referencyjnej eShopOnContainers
Napiwek
Ta zawartość jest fragmentem książki eBook, Architekting Cloud Native .NET Applications for Azure, dostępnej na platformie .NET Docs lub jako bezpłatny plik PDF do pobrania, który można odczytać w trybie offline.
Firma Microsoft we współpracy z wiodącymi ekspertami społeczności opracowała w pełni funkcjonalna aplikacja referencyjna mikrousług natywnych dla chmury, eShopOnContainers. Ta aplikacja została utworzona w celu zaprezentowania przy użyciu platformy .NET i platformy Docker oraz opcjonalnie platformy Azure, platformy Kubernetes i programu Visual Studio w celu utworzenia witryny sklepu online.
Rysunek 2–1. Przykładowa aplikacja eShopOnContainers.
Przed rozpoczęciem tego rozdziału zalecamy pobranie aplikacji referencyjnej eShopOnContainers. Jeśli to zrobisz, powinno być łatwiejsze, aby śledzić przedstawione informacje.
Funkcje i wymagania
Zacznijmy od przeglądu funkcji i wymagań aplikacji. Aplikacja eShopOnContainers reprezentuje sklep internetowy, który sprzedaje różne produkty fizyczne, takie jak t-shirty i kubki do kawy. Jeśli wcześniej kupiłeś coś online, doświadczenie korzystania ze sklepu powinno być stosunkowo znane. Poniżej przedstawiono niektóre podstawowe funkcje implementowane przez sklep:
- Wyświetlanie listy elementów wykazu
- Filtrowanie elementów według typu
- Filtrowanie elementów według marki
- Dodawanie elementów do koszyka zakupów
- Edytowanie lub usuwanie elementów z koszyka
- Finalizuj
- Rejestrowanie konta
- Zaloguj
- Wyloguj się
- Przeglądanie zamówień
Aplikacja ma również następujące wymagania niefunkcjonalne:
- Musi być wysoce dostępna i musi być skalowana automatycznie, aby zaspokoić zwiększony ruch (i skalować z powrotem w dół po ustąpieniu ruchu).
- Powinno to ułatwić monitorowanie kondycji i dzienników diagnostycznych, aby ułatwić rozwiązywanie wszelkich napotkanych problemów.
- Powinien on obsługiwać proces tworzenia zwinnych, w tym obsługę ciągłej integracji i ciągłego wdrażania (CI/CD).
- Oprócz dwóch frontonów internetowych (tradycyjnej i jednostronicowej aplikacji) aplikacja musi również obsługiwać aplikacje klienckie dla urządzeń przenośnych z różnymi rodzajami systemów operacyjnych.
- Powinna obsługiwać hosting międzyplatformowy i tworzenie aplikacji międzyplatformowych.
Rysunek 2–2. eShopOnContainers odwołują się do architektury tworzenia aplikacji.
Aplikacja eShopOnContainers jest dostępna z poziomu klientów internetowych lub mobilnych, którzy uzyskują dostęp do aplikacji za pośrednictwem protokołu HTTPS przeznaczonej dla aplikacji serwera ASP.NET Core MVC lub odpowiedniej bramy interfejsu API. Bramy interfejsów API oferują kilka zalet, takich jak oddzielenie usług zaplecza od poszczególnych klientów frontonu i zapewnienie lepszych zabezpieczeń. Aplikacja korzysta również z powiązanego wzorca znanego jako Backends-for-Frontends (BFF), który zaleca tworzenie oddzielnych bram interfejsu API dla każdego klienta frontonu. Architektura referencyjna demonstruje podzielenie bram interfejsu API na podstawie tego, czy żądanie pochodzi z klienta internetowego, czy mobilnego.
Funkcjonalność aplikacji jest podzielona na wiele różnych mikrousług. Istnieją usługi odpowiedzialne za uwierzytelnianie i tożsamość, wyświetlanie listy elementów z katalogu produktów, zarządzanie koszykami zakupów użytkowników i składanie zamówień. Każda z tych oddzielnych usług ma własny magazyn trwały. Nie ma jednego podstawowego magazynu danych, z którym współdziałają wszystkie usługi. Zamiast tego koordynacja i komunikacja między usługami odbywa się zgodnie z potrzebami i przy użyciu magistrali komunikatów.
Każda z różnych mikrousług jest zaprojektowana inaczej, na podstawie ich indywidualnych wymagań. Ten aspekt oznacza, że ich stos technologiczny może się różnić, chociaż wszystkie zostały utworzone przy użyciu platformy .NET i zaprojektowane dla chmury. Prostsze usługi zapewniają podstawowy dostęp create-read-update-delete (CRUD) do bazowych magazynów danych, podczas gdy bardziej zaawansowane usługi używają metod projektowania opartego na domenie i wzorców do zarządzania złożonością biznesową.
Rysunek 2–3. Różne rodzaje mikrousług.
Omówienie kodu
Ponieważ używa mikrousług, aplikacja eShopOnContainers zawiera sporo oddzielnych projektów i rozwiązań w repozytorium GitHub. Oprócz oddzielnych rozwiązań i plików wykonywalnych różne usługi są przeznaczone do uruchamiania wewnątrz własnych kontenerów, zarówno podczas programowania lokalnego, jak i w czasie wykonywania w środowisku produkcyjnym. Rysunek 2–4 przedstawia pełne rozwiązanie programu Visual Studio, w którym organizowane są różne projekty.
Rysunek 2–4. Projekty w rozwiązaniu programu Visual Studio.
Kod jest zorganizowany w celu obsługi różnych mikrousług, a w ramach każdej mikrousługi kod jest podzielony na logikę domeny, problemy dotyczące infrastruktury oraz interfejs użytkownika lub punkt końcowy usługi. W wielu przypadkach zależności poszczególnych usług mogą być realizowane przez usługi platformy Azure w środowisku produkcyjnym i alternatywne opcje programowania lokalnego. Sprawdźmy, jak wymagania aplikacji są mapowania na usługi platformy Azure.
Informacje o mikrousługach
Ta książka koncentruje się na aplikacjach natywnych dla chmury utworzonych przy użyciu technologii platformy Azure. Aby dowiedzieć się więcej na temat najlepszych rozwiązań dotyczących mikrousług i sposobu tworzenia architektury aplikacji opartych na mikrousługach, przeczytaj książkę towarzyszącą .NET Microservices: Architecture for Containerized .NET Applications (Mikrousługi platformy .NET: architektura konteneryzowanych aplikacji .NET).