Introductie van de referentie-app eShopOnContainers

Tip

Deze inhoud is een fragment uit het eBook, Cloud Native .NET Applications for Azure ontwerpen, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Microsoft, in samenwerking met toonaangevende community-experts, heeft een volledig cloudeigen microservicesreferentietoepassing, eShopOnContainers, geproduceerd. Deze toepassing is gebouwd om te presenteren met behulp van .NET en Docker, en optioneel Azure, Kubernetes en Visual Studio, om een online winkel te bouwen.

eShopOnContainers Sample App Screenshot.

Afbeelding 2-1. Schermopname van voorbeeld-app eShopOnContainers.

Voordat u aan dit hoofdstuk begint, raden we u aan de referentietoepassing eShopOnContainers te downloaden. Als u dit doet, is het voor u gemakkelijker om de gepresenteerde informatie te volgen.

Functies en vereisten

Laten we beginnen met een beoordeling van de functies en vereisten van de toepassing. De eShopOnContainers-toepassing vertegenwoordigt een online winkel die verschillende fysieke producten verkoopt, zoals t-shirts en koffiemokken. Als u iets online hebt gekocht, moet de ervaring van het gebruik van de winkel relatief bekend zijn. Hier volgen enkele van de basisfuncties die het archief implementeert:

  • Catalogusitems weergeven
  • Items filteren op type
  • Items filteren op merk
  • Items toevoegen aan het winkelwagentje
  • Items uit het mandje bewerken of verwijderen
  • Uitchecken
  • Een account registreren
  • Aanmelden
  • Afmelden
  • Orders controleren

De toepassing heeft ook de volgende niet-functionele vereisten:

  • Het moet maximaal beschikbaar zijn en moet automatisch worden geschaald om te voldoen aan meer verkeer (en weer omlaag schalen zodra het verkeer afneemt).
  • Het moet eenvoudig te gebruiken bewaking van de status- en diagnostische logboeken bieden om eventuele problemen op te lossen.
  • Het moet een flexibel ontwikkelingsproces ondersteunen, inclusief ondersteuning voor continue integratie en implementatie (CI/CD).
  • Naast de twee webfront-ends (traditionele en toepassing met één pagina) moet de toepassing ook ondersteuning bieden voor mobiele client-apps waarop verschillende soorten besturingssystemen worden uitgevoerd.
  • Het moet ondersteuning bieden voor platformoverschrijdende hosting en platformoverschrijdende ontwikkeling.

eShopOnContainers reference application development architecture.

Afbeelding 2-2. Architectuur voor ontwikkeling van eShopOnContainers-referentietoepassingen.

De eShopOnContainers-toepassing is toegankelijk vanaf web- of mobiele clients die toegang hebben tot de toepassing via HTTPS die gericht is op de ASP.NET Core MVC-servertoepassing of een geschikte API-gateway. API-gateways bieden verschillende voordelen, zoals het ontkoppelen van back-endservices van afzonderlijke front-endclients en het bieden van betere beveiliging. De toepassing maakt ook gebruik van een gerelateerd patroon dat bekend staat als Backends-for-Frontends (BFF), waarmee u wordt aangeraden afzonderlijke API-gateways te maken voor elke front-endclient. De referentiearchitectuur demonstreert het opsplitsen van de API-gateways op basis van of de aanvraag afkomstig is van een web- of mobiele client.

De functionaliteit van de toepassing is onderverdeeld in veel verschillende microservices. Er zijn services die verantwoordelijk zijn voor verificatie en identiteit, items uit de productcatalogus weergeven, winkelmandjes van gebruikers beheren en bestellingen plaatsen. Elk van deze afzonderlijke services heeft een eigen permanente opslag. Er is geen enkel primair gegevensarchief waarmee alle services communiceren. In plaats daarvan wordt coördinatie en communicatie tussen de services uitgevoerd op basis van behoefte en met behulp van een berichtenbus.

Elk van de verschillende microservices is anders ontworpen op basis van hun individuele vereisten. Dit aspect betekent dat hun technologiestack kan verschillen, hoewel ze allemaal zijn gebouwd met behulp van .NET en zijn ontworpen voor de cloud. Eenvoudigere services bieden eenvoudige CRUD-toegang (Create-Read-Update-Delete) tot de onderliggende gegevensarchieven, terwijl meer geavanceerde services gebruikmaken van domeingestuurde ontwerpmethoden en -patronen om de complexiteit van het bedrijf te beheren.

Different kinds of microservices

Afbeelding 2-3. Verschillende soorten microservices.

Overzicht van de code

Omdat de app gebruikmaakt van microservices, bevat de app eShopOnContainers heel wat afzonderlijke projecten en oplossingen in de GitHub-opslagplaats. Naast afzonderlijke oplossingen en uitvoerbare bestanden zijn de verschillende services ontworpen om in hun eigen containers te worden uitgevoerd, zowel tijdens lokale ontwikkeling als tijdens runtime in productie. Afbeelding 2-4 toont de volledige Visual Studio-oplossing, waarin de verschillende projecten zijn georganiseerd.

Projects in Visual Studio solution.

Afbeelding 2-4. Projecten in Visual Studio-oplossing.

De code is ingedeeld ter ondersteuning van de verschillende microservices en binnen elke microservice wordt de code onderverdeeld in domeinlogica, problemen met de infrastructuur en de gebruikersinterface of het service-eindpunt. In veel gevallen kunnen de afhankelijkheden van elke service worden vervuld door Azure-services in productie en alternatieve opties voor lokale ontwikkeling. Laten we eens kijken hoe de vereisten van de toepassing worden toegewezen aan Azure-services.

Uitleg over microservices

Dit boek richt zich op cloudtoepassingen die zijn gebouwd met behulp van Azure-technologie. Lees het bijbehorende boek . NET Microservices: Architecture for Containerized .NET Applications voor meer informatie over aanbevolen procedures voor microservices en het ontwerpen van microservicetoepassingen.