Vad är .NET Aspire?
Molnekosystem som Microsoft Azure och Amazon Web Services (AWS) är djupt inbäddade i IT-branschen och populära värdlösningar för webbprogram och webbtjänster. Det är troligt att ett molnvärdsystem är standardvalet för dina program, så du måste se till att de program du skapar är utformade för att dra största möjliga nytta av dem.
Ett molnbaserat program är ett program som du specifikt utformar för att köras i molnet. Programmen uppvisar ofta vissa arkitekturmönster så att prestanda, skalbarhet och tillförlitlighet är optimala.
Tänk dig att du arbetar för ett kläd- och utrustningsföretag utomhus. Styrelsen har bett dig att utveckla en ny eShop-webbapp för företagets huvudsakliga kundinriktade webbplats. Ditt team är bekant med mikrotjänstmodellen och du vill veta om det blir enklare att använda .NET Aspire.
I den här lektionen får du lära dig mer om molnbaserade arkitekturer och se de utmaningar som kan uppstå när du skapar dem. Du får också se hur .NET Aspire kan hantera dessa utmaningar.
Vad är ett molnbaserat program?
Ett molnbaserat program är ett program som är konstruerat för optimal användning av molninfrastrukturer för att ge bästa möjliga prestanda, tillgänglighet och motståndskraft. Det finns sex grundpelare i molnbaserade programvaruarkitekturer:
- Molninfrastruktur. Molnbaserade program distribueras till molnvärdlösningar och inte till lokala servergrupper.
- Microtjänster. Molnbaserade program implementeras som en uppsättning mikrotjänster, som var och en implementerar en liten del av affärsfunktionerna.
- Containrar. Mikrotjänster och andra delar av programmet utvecklas och distribueras i containrar för att säkerställa en konsekvent körningsmiljö.
- Stödtjänster. Underordnade resurser, till exempel databaser och cachelagringstjänster, kan användas för att tillhandahålla vanliga funktioner för mikrotjänster.
- Modern design. Molnbaserade program följer metoden för tolvfaktorprogram, som innehåller principer som kontinuerlig integrering/kontinuerlig distribution (CI/CD), disposability, portbindning och så vidare.
- Automatisering. Molnbaserade program använder Infrastruktur som kod (IaC) för att automatisera plattformsetablering och distribution.
För att ge flexibilitet består ett molnbaserat program av en uppsättning mikrotjänster. Varje mikrotjänst:
- Implementerar en del av de fullständiga funktionerna.
- Körs i sin egen process och är isolerad från de andra, ofta i en dedikerad container.
- Skapas av ett separat team.
- Kommunicerar med de andra, men är löst kopplad.
Varje team väljer de språk och tekniker som de föredrar att implementera sin mikrotjänst. Varje mikrotjänst distribueras och skalas oberoende av de andra.
Följande diagram illustrerar skillnaderna mellan ett traditionellt monolitiskt webbprogram och ett webbprogram som består av mikrotjänster.
Molnbaserade appar kan ha många fördelar för ditt företag. Till exempel:
- Genom att vara värd för din app i molnet behöver du inte skapa och underhålla infrastruktur som värdservrar, operativsystem och stödtjänster själv.
- Eftersom varje mikrotjänst utvecklas oberoende av varandra kan du kontinuerligt distribuera nya funktioner i dem utan att behöva vänta på andra team eller viktiga milstolpar i versionen.
- Eftersom varje mikrotjänst körs i en eller flera containrar vet du att miljön kommer att vara densamma i alla test-, mellanlagrings- och produktionsmiljöer.
- Du kan använda ett containerorkestreringssystem, till exempel Kubernetes, för att snabbt distribuera extra instanser för att svara på ytterligare efterfrågan.
Utmaningar som presenteras av molnbaserade program
Ett molnbaserat program som består av flera mikrotjänster och med många funktioner kan bli komplexa och medföra utmaningar som inte uppstår med monolitiska appar. Till exempel:
- Appdefinition. Om de inte dokumenteras noggrant kan det vara svårt för utvecklare att förstå vilka komponenter som utgör den fullständiga molnbaserade appen.
- Kommunikation. Varje mikrotjänst kan behöva utbyta meddelanden eller data med andra mikrotjänster för att kunna formulera ett svar på en användarbegäran. Även om du måste aktivera sådan kommunikation måste du göra det på ett sätt som inte nära kopplar en mikrotjänst till en annan. Du behöver också kommunikation för att förbli tillförlitlig vid tider med hög efterfrågan eller under tjänstfel.
- Återhämtning. Ingen värdtjänst kan vara 100 % tillgänglig. Du måste se till att appen i sällsynta fall när en mikrotjänst inte är tillgänglig hanterar felen robust och behåller begäranden tills tjänsten returneras.
- Distribuerade data. Varje mikrotjänst implementerar ett eget datalagringslager och kanske inte använder samma databasserver som de andra. Du måste fundera på hur du ska fråga efter data från flera mikrotjänster och hur du ska implementera transaktioner.
- Hemligheter. Om din app hanterar någon form av känsliga data måste varje mikrotjänst autentisera varje begäran den tar emot innan ett svar returneras. Hemligheter som asymmetriska och symmetriska krypteringsnycklar används ofta för att skydda data och identifiera anropande användare och mikrotjänster. Du måste tänka på hur dessa hemligheter lagras och utbyts i din molnbaserade app.
- Registrering av utvecklare. Nya utvecklare måste kunna förstå appens arkitektur och hur de kan arbeta med den snabbt. Du måste se till att nya utvecklare kan komma igång utan massor av kunskaper mellan domäner eller lokal installation.
Den senaste tiden har den molnbaserade programdesignen blivit allt populärare, men utmaningar som de i det här avsnittet avråder vissa team från att använda det här mönstret. .NET har till exempel alla funktioner som behövs för att lösa dessa problem, men lösningarna kan behöva betydande investeringar i utbildning och anpassad kod.
Vad är .NET Aspire?
.NET Aspire är en ny molnklar stack som skapats för .NET och som har utformats för att göra det möjligt för utvecklare att snabbt och enkelt skapa molnbaserade program. Nu ska vi titta på funktionerna i .NET Aspire som hanterar de utmaningar vi har sett.
Orkestrering
Mikrotjänster och deras löst kopplade karaktär ökar flexibiliteten för din distribuerade app, men kan göra konfigurationen svårare. Listan över tjänster som utgör appen kan bli oklar och slutpunkten där en mikrotjänst är tillgänglig kan vara svår att identifiera. .NET Aspire tillhandahåller orkestreringsfunktioner så att:
- Du kan tydligt ange för alla team de .NET-projekt, containrar, körbara filer och molnresurser som utgör programmet.
- Mikrotjänster kan automatiskt identifiera slutpunkter för alla programmets komponenter. .NET Aspire utför den här tjänstidentifieringen genom att hantera anslutningssträng och mata in dem i mikrotjänster där det behövs.
När du skapar en .NET Aspire-lösning visas ett nytt projekt i lösningen <SolutionName>. AppHost. Det här projektet implementerar orkestrering för din app och du bör se till att det är startprojektet för lösningen.
Komponenter
Mikrotjänster har ofta funktionella krav för komplexa stödtjänster som ligger till grund för deras funktioner. Till exempel:
- Datalagring. För att spara data för att stödja produktkataloger, kundvagnar, identitetslager och andra funktioner måste mikrotjänster lagra data i strukturerade eller halvstrukturerade butiker.
- Cachelagring. För att maximera prestanda kan mikrotjänster lagra partiella eller fullständiga svar i en cache så att efterföljande liknande begäranden kan uppfyllas snabbare.
- Meddelandetjänster. Löst kopplade mikrotjänster måste kommunicera med varandra och du måste se till att denna kommunikation är tillförlitlig även när trafiken är hög eller nätverksförhållandena är utmanande. En tjänst som köar och distribuerar meddelanden från avsändare till mottagare är ett vanligt krav.
I .NET Aspire är det enkelt att implementera dessa stödtjänster i varje mikrotjänst eftersom stacken innehåller .NET Aspire-komponenter. Varje komponent är ett NuGet-paket som du kan lägga till i din lösning och implementerar ett standardgränssnitt i en säkerhetskopieringstjänst. Det här standardgränssnittet säkerställer att mikrotjänsten ansluter till sina backningstjänster konsekvent och sömlöst.
De färdiga .NET Aspire-komponenterna är:
- Datalagringskomponenter som de för PostgreSQL, SQL Database, Azure Cosmos DB och MongoDB.
- Cachelagring av komponenter, till exempel komponenten för Redis.
- Meddelandekomponenter som de för RabbitMQ och Azure Service Bus.
Viktigt!
.NET Aspire innehåller många komponenter som fungerar med Azure-tjänster, till exempel Azure Storage och Azure Service Bus, men Azure krävs inte för .NET Aspire-projekt och de fungerar lika bra med säkerhetskopieringstjänster utanför Azure, till exempel RabbitMQ och MongoDB.
Verktyg
.NET Aspire lägger också till de verktyg som är tillgängliga för utvecklare i Visual Studio. Till exempel:
- Med nya projektmallar kan du skapa .NET Aspire-lösningar med några steg i en guide.
- .NET Aspire-instrumentpanelen är ett webbgränssnitt som visas när du startar lösningen från Visual Studio. Den här instrumentpanelen visar alla mikrotjänster och säkerhetskopieringstjänster för appen, och du kan anropa dem för testning. Den visar också prestanda- och övervakningsverktyg.
- Extra menyalternativ visas, som du kan använda för att lägga till en .NET Aspire-komponent, registrera ett projekt för .NET Aspire orchestrator-stöd eller slutföra andra uppgifter.
Kommentar
Du får lära dig mer om .NET Aspire-verktygen senare i den här modulen.