.NET-mikrotjänster: Arkitektur för containerbaserade .NET-program

Book cover

EDITION v6.0 – Uppdaterad till ASP.NET Core 6.0

Information om bokuppdateringar och bidrag från communityn finns i ändringsloggen .

Den här guiden är en introduktion till att utveckla mikrotjänstbaserade program och hantera dem med containrar. Den beskriver metoder för arkitekturdesign och implementering med hjälp av .NET- och Docker-containrar.

För att göra det enklare att komma igång fokuserar guiden på en referenscontainerbaserad och mikrotjänstbaserad app som du kan utforska. Referensprogrammet finns på eShopOnContainers GitHub-lagringsplatsen.

Introduktion

Företag inser i allt högre grad kostnadsbesparingar, löser distributionsproblem och förbättrar DevOps och produktionsåtgärder med hjälp av containrar. Microsoft har släppt containerinnovationer för Windows och Linux genom att skapa produkter som Azure Kubernetes Service och Azure Service Fabric och genom att samarbeta med branschledare som Docker, Mesosphere och Kubernetes. Dessa produkter levererar containerlösningar som hjälper företag att skapa och distribuera program i molnhastighet och skala, oavsett val av plattform eller verktyg.

Docker håller på att bli den faktiska standarden i containerindustrin, som stöds av de viktigaste leverantörerna i Windows- och Linux-ekosystemen. (Microsoft är en av de viktigaste molnleverantörerna som stöder Docker.) I framtiden kommer Docker förmodligen att vara allmänt förekommande i alla datacenter i molnet eller lokalt.

Dessutom är arkitekturen för mikrotjänster en viktig metod för distribuerade verksamhetskritiska program. I en mikrotjänstbaserad arkitektur bygger programmet på en samling tjänster som kan utvecklas, testas, distribueras och versionshanteras oberoende av varandra.

Om den här guiden

Den här guiden är en introduktion till att utveckla mikrotjänstbaserade program och hantera dem med containrar. Den beskriver metoder för arkitekturdesign och implementering med hjälp av .NET- och Docker-containrar. För att göra det enklare att komma igång med containrar och mikrotjänster fokuserar guiden på en referenscontainerbaserad och mikrotjänstbaserad app som du kan utforska. Exempelprogrammet finns på eShopOnContainers GitHub-lagringsplatsen.

Den här guiden ger grundläggande utvecklings- och arkitekturvägledning främst på utvecklingsmiljönivå med fokus på två tekniker: Docker och .NET. Vår avsikt är att du läser den här guiden när du tänker på din programdesign utan att fokusera på infrastrukturen (molnet eller lokalt) i produktionsmiljön. Du kommer att fatta beslut om infrastrukturen senare när du skapar dina produktionsklara program. Den här guiden är därför avsedd att vara infrastrukturagnostisk och mer utvecklingsmiljöcentrerad.

När du har studerat den här guiden är nästa steg att lära dig mer om produktionsklara mikrotjänster på Microsoft Azure.

Version

Den här guiden har reviderats för att omfatta .NET 6-versionen tillsammans med många ytterligare uppdateringar relaterade till samma "våg" av tekniker (det vill sagda Azure och ytterligare teknik från tredje part) som sammanfaller i tid med .NET 6-versionen. Därför har bokversionen också uppdaterats till version 6.0.

Vad den här guiden inte omfattar

Den här guiden fokuserar inte på programmets livscykel, DevOps, CI/CD-pipelines eller teamarbete. Den kompletterande guiden Containerized Docker Application Lifecycle med Microsoft Platform and Tools fokuserar på det ämnet. Den aktuella guiden innehåller inte heller implementeringsinformation om Azure-infrastrukturen, till exempel information om specifika orkestrerare.

Ytterligare resurser

Vem bör använda den här guiden

Vi skrev den här guiden för utvecklare och lösningsarkitekter som är nya för Docker-baserad programutveckling och mikrotjänstbaserad arkitektur. Den här guiden är till för dig om du vill lära dig hur du utformar, utformar och implementerar koncepttestprogram med Microsofts utvecklingstekniker (med särskilt fokus på .NET) och med Docker-containrar.

Den här guiden är också användbar om du är en teknisk beslutsfattare, till exempel en företagsarkitekt, som vill ha en arkitektur- och tekniköversikt innan du bestämmer dig för vilken metod du ska välja för nya och moderna distribuerade program.

Så här använder du den här guiden

Den första delen av den här guiden introducerar Docker-containrar, beskriver hur du väljer mellan .NET 6 och .NET Framework som ett utvecklingsramverk och ger en översikt över mikrotjänster. Det här innehållet är till för arkitekter och tekniska beslutsfattare som vill ha en översikt men inte behöver fokusera på information om kodimplementering.

Den andra delen av guiden börjar med avsnittet Utvecklingsprocess för Docker-baserade program . Den fokuserar på utvecklings- och mikrotjänstmönster för implementering av program med hjälp av .NET och Docker. Det här avsnittet är av störst intresse för utvecklare och arkitekter som vill fokusera på kod och på mönster och implementeringsinformation.

eShopOnContainers-programmet är en referensapp med öppen källkod för .NET och mikrotjänster som är utformade för att distribueras med Docker-containrar. Programmet består av flera undersystem, inklusive flera klientdelar för e-butiksgränssnittet (en Web MVC-app, ett webb-SPA och en inbyggd mobilapp). Den innehåller även serverdelsmikrotjänster och containrar för alla nödvändiga åtgärder på serversidan.

Syftet med programmet är att demonstrera arkitekturmönster. DET ÄR INTE EN PRODUKTIONSKLAR MALL FÖR att starta verkliga program. I själva verket är programmet i ett permanent betatillstånd, eftersom det också används för att testa nya potentiellt intressanta tekniker när de visas.

Skicka oss din feedback!

Vi skrev den här guiden för att hjälpa dig att förstå arkitekturen för containerbaserade program och mikrotjänster i .NET. Guiden och det relaterade referensprogrammet kommer att utvecklas, så vi välkomnar din feedback! Om du har kommentarer om hur den här guiden kan förbättras kan du skicka feedback på https://aka.ms/ebookfeedback.

Krediter

Medförfattare:

Cesar de la Torre, Sr. PM, .NET-produktteamet, Microsoft Corp.

Bill Wagner, Sr. Content Developer, C+E, Microsoft Corp.

Mike Rousos, principal software engineer, DevDiv CAT team, Microsoft

Redaktörer:

Mike Pope

Steve Hoag

Deltagare och granskare:

Jeffrey Richter, Partner Software Eng, Azure team, Microsoft

Jimmy Bogard, chefsarkitekt på Headspring

Udi Dahan, grundare & VD, Particular Software

Jimmy Nilsson, medgrundare och VD för Factor10

Glenn Condron, programchef ASP.NET team

Mark Fussell, huvudansvarig PM Lead, Azure Service Fabric team, Microsoft

Diego Vega, PM Lead, Entity Framework-teamet, Microsoft

Barry Dorrans, Sr. Security Program Manager

Rowan Miller, Sr. Program Manager, Microsoft

Ankit Asthana, Principal PM Manager, .NET team, Microsoft

Scott Hunter, Partner Director PM, .NET team, Microsoft

Nish Anil, Sr. Program Manager, .NET team, Microsoft

Dylan Reisenberger, arkitekt och dev lead på Polly

Steve "ardalis" Smith - Programvaruarkitekt och tränare - Ardalis.com

Ian Cooper, Coding Architect på Brighter

Unai Zorrilla, arkitekt och utvecklingsansvarig på Plain Concepts

Eduard Tomas, utvecklingsansvarig på Plain Concepts

Ramon Tomas, utvecklare på Plain Concepts

David Sanz, utvecklare på Plain Concepts

Javier Valero, Chief Operating Officer på Grupo Solutio

Pierre Millet, Sr. Consultant, Microsoft

Michael Friis, Product Manager, Docker Inc

Charles Lowell, programvarutekniker, VS CAT-teamet, Microsoft

Miguel Veloso, software development engineer på Plain Concepts

Sumit Ghosh, principal consultant på Neudesic

PUBLICERAD AV

Microsoft Developer Division, .NET och Visual Studio produktteam

En avdelning inom Microsoft Corporation

One Microsoft Way

Redmond, Washington 98052-6399

Copyright © 2022 av Microsoft Corporation

All rights reserved. Ingen del av innehållet i denna bok får reproduceras eller överföras i någon form eller på något sätt utan förlagets skriftliga tillstånd.

Denna bok tillhandahålls "i nuläget" och uttrycker författarens åsikter och åsikter. Åsikter, åsikter och information som uttrycks i den här boken, inklusive WEBBADRESS och andra referenser till internetwebbplatser, kan ändras utan föregående meddelande.

Vissa exempel i detta dokument tillhandahålls endast som illustration och är fiktiva. Ingen anknytning eller koppling till verkliga förekomster är avsiktlig.

Microsoft och de varumärken som anges på https://www.microsoft.com webbsidan "Varumärken" är varumärken som tillhör Microsofts företagsgrupp.

Mac och macOS är varumärken som tillhör Apple Inc.

Docker whale-logotypen är ett registrerat varumärke som tillhör Docker, Inc. Används av behörighet.

Alla andra märken och logotyper tillhör respektive ägare.