Introduktion till referensappen eShopOnContainers
Dricks
Det här innehållet är ett utdrag från eBook, Architecting Cloud Native .NET Applications for Azure, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.
Microsoft har tillsammans med ledande communityexperter tagit fram ett komplett molnbaserat referensprogram för mikrotjänster, eShopOnContainers. Det här programmet är byggt för att visa upp med hjälp av .NET och Docker, och om du vill skapa en onlinebutik i Azure, Kubernetes och Visual Studio.
Bild 2-1. Skärmbild av eShopOnContainers-exempelapp.
Innan du börjar det här kapitlet rekommenderar vi att du laddar ned referensprogrammet eShopOnContainers. Om du gör det bör det vara lättare för dig att följa med i den information som presenteras.
Funktioner och krav
Vi börjar med en genomgång av programmets funktioner och krav. eShopOnContainers-programmet representerar en onlinebutik som säljer olika fysiska produkter som t-shirts och kaffemuggar. Om du har köpt något online tidigare bör upplevelsen av att använda butiken vara relativt bekant. Här är några av de grundläggande funktionerna som butiken implementerar:
- Lista katalogobjekt
- Filtrera objekt efter typ
- Filtrera objekt efter varumärke
- Lägga till artiklar i varukorgen
- Redigera eller ta bort objekt från korgen
- Utcheckning
- Registrera ett konto
- Logga in
- Logga ut
- Granska beställningar
Programmet har också följande icke-funktionella krav:
- Den måste vara mycket tillgänglig och den måste skalas automatiskt för att möta ökad trafik (och skala ned igen när trafiken avtar).
- Den bör tillhandahålla enkel övervakning av dess hälso- och diagnostikloggar för att felsöka eventuella problem som uppstår.
- Det bör stödja en flexibel utvecklingsprocess, inklusive stöd för kontinuerlig integrering och distribution (CI/CD).
- Förutom de två webbklientdelarna (traditionella och enkelsidiga program) måste programmet även ha stöd för mobila klientappar som kör olika typer av operativsystem.
- Det bör stödja plattformsoberoende värdtjänster och plattformsoberoende utveckling.
Bild 2-2. eShopOnContainers refererar till programutvecklingsarkitektur.
eShopOnContainers-programmet är tillgängligt från webb- eller mobilklienter som har åtkomst till programmet via HTTPS för antingen ASP.NET Core MVC-serverprogrammet eller en lämplig API Gateway. API Gateways erbjuder flera fördelar, till exempel att koppla bort serverdelstjänster från enskilda klientdelsklienter och ge bättre säkerhet. Programmet använder också ett relaterat mönster som kallas Backends-for-Frontends (BFF), som rekommenderar att du skapar separata API-gatewayer för varje klientdelsklient. Referensarkitekturen visar hur API-gatewayerna delas upp baserat på om begäran kommer från en webb- eller mobilklient.
Programmets funktioner är uppdelade i många olika mikrotjänster. Det finns tjänster som ansvarar för autentisering och identitet, listar objekt från produktkatalogen, hanterar användarnas varukorgar och gör beställningar. Var och en av dessa separata tjänster har sin egen beständiga lagring. Det finns inget enskilt primärt datalager som alla tjänster interagerar med. I stället sker samordning och kommunikation mellan tjänsterna efter behov och med hjälp av en meddelandebuss.
Var och en av de olika mikrotjänsterna är utformade på olika sätt, baserat på deras individuella krav. Den här aspekten innebär att deras teknikstacken kan skilja sig åt, även om de alla är byggda med hjälp av .NET och utformade för molnet. Enklare tjänster ger grundläggande CRUD-åtkomst (Create-Read-Update-Delete) till underliggande datalager, medan mer avancerade tjänster använder domändrivna designmetoder och mönster för att hantera affärskomplexitet.
Bild 2-3. Olika typer av mikrotjänster.
Översikt över koden
Eftersom den använder mikrotjänster innehåller eShopOnContainers-appen en hel del separata projekt och lösningar i sin GitHub-lagringsplats. Förutom separata lösningar och körbara filer är de olika tjänsterna utformade för att köras i sina egna containrar, både under lokal utveckling och vid körning i produktion. Bild 2–4 visar den fullständiga Visual Studio-lösningen, där de olika projekten organiseras.
Bild 2-4. Projekt i Visual Studio-lösningen.
Koden är ordnad för att stödja de olika mikrotjänsterna, och inom varje mikrotjänst delas koden upp i domänlogik, infrastrukturproblem och användargränssnitt eller tjänstslutpunkt. I många fall kan varje tjänsts beroenden uppfyllas av Azure-tjänster i produktion och alternativa alternativ för lokal utveckling. Nu ska vi undersöka hur programmets krav mappas till Azure-tjänster.
Förstå mikrotjänster
Den här boken fokuserar på molnbaserade program som skapats med Hjälp av Azure-teknik. Mer information om metodtips för mikrotjänster och hur du skapar mikrotjänstbaserade program finns i den kompletterande boken . NET Microservices: Architecture for Containerized .NET Applications( Arkitektur för containerbaserade .NET-program).