Wat is .NET Aspire?

Voltooid

Cloudecosystemen zoals Microsoft Azure en Amazon Web Services (AWS) zijn diep ingesloten in de IT-branche en populaire hostingoplossingen voor webtoepassingen en webservices. Het is waarschijnlijk dat een cloudhostingsysteem de standaardkeuze is voor uw toepassingen. U moet er dus voor zorgen dat de toepassingen die u maakt, zijn ontworpen om optimaal te profiteren van deze toepassingen.

Een cloudeigen toepassing is een toepassing die u specifiek ontwerpt om in de cloud te worden uitgevoerd. De toepassingen vertonen vaak bepaalde architectuurpatronen, zodat prestaties, schaalbaarheid en betrouwbaarheid optimaal zijn.

Stel dat u voor een buitenkleding- en apparatuurbedrijf werkt. Het bestuur vraagt u om een nieuwe eShop-web-app te ontwikkelen voor de belangrijkste klantgerichte website van het bedrijf. Uw team is bekend met het microservicesmodel en u wilt weten of het project eenvoudiger kan worden met behulp van .NET Aspire.

In deze les leert u meer over cloudeigen architecturen en ziet u de uitdagingen die kunnen worden betrokken bij het bouwen ervan. U ziet ook hoe .NET Aspire deze uitdagingen kan aanpakken.

Wat is een cloudeigen toepassing?

Een cloudeigen toepassing is een toepassing die is ontworpen om optimaal gebruik te maken van cloudinfrastructuren om de beste prestaties, beschikbaarheid en flexibiliteit te bieden. Er zijn zes pijlers van cloudeigen softwarearchitecturen:

  • Cloudinfrastructuur. Cloudeigen toepassingen worden geïmplementeerd in cloudhostingoplossingen en niet op on-premises serverfarms.
  • Microservices. Cloudeigen toepassingen worden geïmplementeerd als een set microservices, die elk een klein deel van de bedrijfsfunctionaliteit implementeert.
  • Containers. Microservices en andere onderdelen van de toepassing worden ontwikkeld en geïmplementeerd in containers om een consistente uitvoeringsomgeving te garanderen.
  • Backing-services. Aanvullende resources, zoals databases en cachingservices, kunnen worden gebruikt om algemene functionaliteit voor microservices te bieden.
  • Modern ontwerp. Cloudeigen toepassingen voldoen aan de Twaalf-Factor Application-methodologie, waaronder principes zoals Continuous Integration/Continuous Deployment (CI/CD), disposability, port binding, enzovoort.
  • Automatisering. Cloudeigen toepassingen maken gebruik van Infrastructure as Code (IaC) om platforminrichting en -implementatie te automatiseren.

Conceptueel diagram met de zes pijlers van cloudtoepassingen.

Om flexibiliteit te bieden, bestaat een cloudeigen toepassing uit een set microservices. Elke microservice:

  • Implementeert één deel van de volledige functionaliteit.
  • Wordt uitgevoerd in een eigen proces en wordt geïsoleerd van de andere, vaak in een toegewezen container.
  • Is gebouwd door een afzonderlijk team.
  • Communiceert met de anderen, maar is losjes gekoppeld.

Elk team kiest de talen en technologieën die ze liever gebruiken om hun microservice te implementeren. Elke microservice wordt geïmplementeerd en wordt onafhankelijk van de andere services geschaald.

In het volgende diagram ziet u de verschillen tussen een traditionele monolithische webtoepassing en een webtoepassing die bestaat uit microservices.

Conceptueel diagram met de verschillen tussen een monolithische webtoepassing en een toepassing die bestaat uit microservices.

Cloudeigen apps kunnen veel voordelen voor uw bedrijf realiseren. Voorbeeld:

  • Door uw app in de cloud te hosten, hoeft u zelf geen infrastructuur te bouwen en onderhouden, zoals hostingservers, besturingssystemen en ondersteunende services.
  • Omdat elke microservice onafhankelijk van elkaar is ontwikkeld, kunt u continu nieuwe functionaliteit erin implementeren zonder te hoeven wachten op andere teams of mijlpalen van de primaire versie.
  • Aangezien elke microservice wordt uitgevoerd in een of meer containers, weet u dat de omgeving hetzelfde is in alle test-, faserings- en productieomgevingen.
  • Omdat u een containerindelingssysteem, zoals Kubernetes, kunt gebruiken, kunt u snel extra exemplaren implementeren om te reageren op toenemende vraag.

Uitdagingen die worden gepresenteerd door cloudtoepassingen

Een cloudeigen toepassing die bestaat uit meerdere microservices en met veel functies kan complexe uitdagingen worden die niet ontstaan met monolithische apps. Voorbeeld:

  • App-definitie. Tenzij ze zorgvuldig zijn gedocumenteerd, kan het moeilijk zijn voor ontwikkelaars om te begrijpen welke integraties de volledige cloudeigen app vormen.
  • Communication. Elke microservice moet mogelijk berichten of gegevens uitwisselen met andere microservices om een reactie op een gebruikersaanvraag te formuleren. Hoewel u dergelijke communicatie moet inschakelen, moet u dit doen op een manier die de microservices niet nauw aan elkaar koppelt. U hebt ook communicatie nodig om betrouwbaar te blijven op momenten van hoge vraag of tijdens servicefouten.
  • Flexibiliteit. Geen hostingservice kan 100% beschikbaar zijn. In zeldzame gevallen waarin een microservice niet beschikbaar is, moet u ervoor zorgen dat de app fouten robuust afhandelt en aanvragen bewaart totdat de service wordt geretourneerd.
  • Gedistribueerde gegevens. Elke microservice implementeert een eigen laag voor gegevensopslag en gebruikt mogelijk niet dezelfde databaseserver als de andere. U moet overwegen hoe u gegevens opvraagt van meerdere microservices en hoe u transacties implementeert.
  • Geheimen. Als uw app gevoelige gegevens verwerkt, moet elke microservice elke aanvraag verifiëren die wordt ontvangen voordat een antwoord wordt geretourneerd. Vaak worden geheimen zoals asymmetrische en symmetrische versleutelingssleutels gebruikt om gegevens te beveiligen en gebruikers en microservices positief te identificeren. U moet overwegen hoe deze geheimen worden opgeslagen en uitgewisseld in uw cloudeigen app.
  • Onboarding voor ontwikkelaars. Nieuwe ontwikkelaars moeten de architectuur van de app kunnen begrijpen en snel ermee kunnen werken. U moet ervoor zorgen dat nieuwe ontwikkelaars snel aan de slag kunnen zonder veel kennis van meerdere domeinen of lokale instellingen.

Onlangs is het cloudeigen toepassingsontwerp populair geworden, maar uitdagingen zoals die in deze sectie ontmoedigen sommige teams om dit patroon te omarmen. .NET heeft bijvoorbeeld alle functies die nodig zijn om deze problemen op te lossen, maar de oplossingen hebben mogelijk aanzienlijke investeringen nodig in training en aangepaste code.

Wat is .NET Aspire?

.NET Aspire is een nieuwe cloudklare stack die is gebouwd voor .NET, dat is ontworpen om ontwikkelaars in staat te stellen snel en eenvoudig cloudtoepassingen te maken. Laten we eens kijken naar de functies van .NET Aspire die de uitdagingen aanpakken die we hebben beschreven.

Orchestration

Microservices en de losjes gekoppelde aard vergroten de flexibiliteit van uw geïmplementeerde app, maar kunnen configuratie moeilijker maken. De lijst met services waaruit de app bestaat, kan onduidelijk worden en het eindpunt waar een microservice beschikbaar is, kan moeilijk te identificeren zijn. .NET Aspire biedt indelingsfunctionaliteit, zodat:

  • U kunt duidelijk opgeven voor alle teams de .NET-projecten, containers, uitvoerbare bestanden en cloudresources waaruit de toepassing bestaat.
  • Microservices kunnen automatisch eindpunten detecteren voor alle integraties van de toepassing. .NET Aspire voert deze servicedetectie uit door verbindingsreeks s te beheren en waar nodig in microservices te injecteren.

Wanneer u een .NET Aspire-oplossing maakt, ziet u een nieuw project in de oplossing met de naam <SolutionName>. AppHost. Dit project implementeert indeling voor uw app en u moet ervoor zorgen dat het het opstartproject voor de oplossing is.

Integraties

Microservices hebben doorgaans functionele vereisten voor complexe backingservices die hun functies ondersteunen. Voorbeeld:

  • Gegevensopslag. Als u gegevens wilt behouden ter ondersteuning van productcatalogussen, winkelwagens, identiteitsarchieven en andere functies, moeten microservices gegevens opslaan in gestructureerde of semi-gestructureerde winkels.
  • Caching. Om de prestaties te maximaliseren, kunnen microservices gedeeltelijke of volledige antwoorden opslaan in een cache, zodat latere vergelijkbare aanvragen sneller kunnen worden voldaan.
  • Berichtenuitwisseling. Losjes gekoppelde microservices moeten met elkaar communiceren en u moet ervoor zorgen dat deze communicatie betrouwbaar is, zelfs wanneer verkeer hoog is of netwerkomstandigheden lastig zijn. Een service die berichten van afzenders in de wachtrij zet en distribueert naar geadresseerden, is een algemene vereiste.

In .NET Aspire is het eenvoudig om deze backingservices in elke microservice te implementeren omdat de stack .NET Aspire-integraties bevat. Elke integratie is een NuGet-pakket dat u aan uw oplossing kunt toevoegen en een standaardinterface implementeert voor een back-upservice. Deze standaardinterface zorgt ervoor dat uw microservice consistent en naadloos verbinding maakt met de backingservices.

De out-of-the-box .NET Aspire-integraties zijn:

  • Integraties voor gegevensopslag, zoals die voor PostgreSQL, SQL Database, Azure Cosmos DB en MongoDB.
  • Caching-integraties, zoals de integratie voor Redis.
  • Berichtintegraties, zoals die voor RabbitMQ en Azure Service Bus.

Belangrijk

.NET Aspire bevat veel integraties die werken met Azure-services, zoals Azure Storage en Azure Service Bus, maar Azure is niet vereist voor .NET Aspire-projecten en ze werken net zo goed met back-upservices buiten Azure, zoals RabbitMQ en MongoDB.

Hulpprogramma's

.NET Aspire voegt ook toe aan de hulpprogramma's die beschikbaar zijn voor ontwikkelaars in Visual Studio. Voorbeeld:

  • Met nieuwe projectsjablonen kunt u .NET Aspire-oplossingen maken met een paar stappen in een wizard.
  • Het .NET Aspire-dashboard is een webinterface die wordt weergegeven wanneer u de oplossing vanuit Visual Studio start. In dit dashboard worden alle microservices en back-upservices voor de app weergegeven en kunt u deze aanroepen voor testen. Er worden ook prestatie- en bewakingshulpprogramma's weergegeven.
  • Extra menu-items worden weergegeven, die u kunt gebruiken om een .NET Aspire-integratie toe te voegen, een project te registreren voor .NET Aspire orchestrator-ondersteuning of andere taken uit te voeren.

Notitie

Verderop in deze module leert u meer over de .NET Aspire-hulpprogramma's.

Meer informatie