Snabbstart: Distribuera en .NET-app (tillförlitliga tjänster) till Service Fabric
Azure Service Fabric är en plattform för distribuerade system för distribution och hantering av skalbara och tillförlitliga mikrotjänster och containrar.
Den här snabbstarten visar hur du distribuerar ditt första .NET-program i Service Fabric. När du är klar har du ett röstningsprogam med en ASP.NET Core-klientdel som sparar röstningsresultat i en tillståndskänslig serverdelstjänst i klustret.
Med det här programmet får du lära dig att:
- Skapa ett program med .NET och Service Fabric
- Använda ASP.NET kärna som en webbklientdel
- Lagra programdata i en tillståndskänslig tjänst
- Felsöka programmet lokalt
- Skala ut programmet över flera noder
- Utföra en löpande programuppgradering
Förutsättningar
För att slutföra den här snabbstarten behöver du:
Installera Visual Studio 2019 med arbetsbelastningar för Azure-utveckling och ASP.NET och webbutveckling .
Kör följande kommando för att aktivera Visual Studio för distribution till det lokala Service Fabric-klustret:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser
Bygga ett kluster
När du har installerat runtime, SDK:er, Visual Studio Tools, Docker och har Docker igång skapar du ett lokalt utvecklingskluster med fem noder.
Kommentar
Anledningen till att ha Docker körandes när du skapar klustret är att klustret skapas med containerfunktioner aktiverade. Om Docker inte körs måste du återskapa klustret för att aktivera containerfunktioner.
Även om det är inte nödvändigt för den här specifika snabbstarten ingår anvisningen om att ha Docker körandes när du skapar klustret som bästa praxis.
Testa att Docker körs genom att öppna ett terminalfönster och köra docker ps
för att se om det uppstår något fel. Om svaret inte indikerar något fel körs Docker och du är redo att skapa ett kluster.
Öppna ett nytt, upphöjt PowerShell-fönster som administratör.
Kör följande PowerShell-kommando för att skapa till ett utvecklingskluster:
. "C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\DevClusterSetup.ps1"
Kör följande kommando för att starta det lokala klusterhanteringsverktyget:
. "C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager\ServiceFabricLocalClusterManager.exe"
Kommentar
Exempelprogrammet i denna snabbstart använder funktioner som inte är tillgängliga på Windows 7.
Hämta exemplet
Kör följande kommando i ett kommandofönster för att klona databasen för exempelappen till den lokala datorn.
git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart
Köra appen lokalt
Högerklicka på Visual Studio-ikonen på startmenyn och välj Kör som administratör. Om du vill koppla felsökningsprogrammet till dina tjänster måste du köra Visual Studio som administratör.
Öppna Visual Studio-lösningen Voting.sln från den lagringsplats du har klonat.
Röstningsprogrammet är som standard inställt på att lyssna på port 8080. Programporten ställs in i filen /VotingWeb/PackageRoot/ServiceManifest.xml. Du kan ändra programporten genom att uppdatera attributet Port för elementet Slutpunkt. Om du vill distribuera och köra programmet lokalt måste programporten vara öppen och tillgänglig på datorn. Om du ändrar programporten ersätter du det nya programportvärdet för "8080" i den här artikeln.
Distribuera programmet genom att trycka på F5.
Kommentar
I Visual Studio-utdatafönstret visas meddelandet "Programmets URL har inte angetts eller är inte en HTTP/HTTPS-URL så webbläsaren öppnas inte för programmet." Det här meddelandet anger inget fel, men att en webbläsare inte startas automatiskt.
När distributionen är klar, startar du en webbläsare och öppnar http://localhost:8080
för att visa programmets klientdel.
Du kan nu lägga till en uppsättning röstningsalternativ och börja ta emot röster. Programmet körs och lagrar alla data i Service Fabric-klustret, utan att en separat databas krävs.
Gå igenom exempelprogrammet för röstning
Röstningsprogrammet består av två tjänster:
- Webbklienttjänst (VotingWeb) – En webbklienttjänst för ASP.NET Core som används av webbsidan och visar webb-API:er för att kommunicera med serverdelstjänsten.
- Serverdelstjänst (VotingData) – En webbtjänst för ASP.NET Core som visar en API för att lagra röstningsresultat i en tillförlitlig ordlista på disken.
När du röstar i programmet inträffar följande händelser:
Ett JavaScript skickar röstningsbegäran till webb-API i webbklienttjänsten som en HTTP PUT-begäran.
Webbklienttjänsten använder en proxy för att hitta och vidarebefordra en HTTP PUT-begäran till serverdelstjänsten.
Serverdelstjänsten tar den inkommande begäran och lagrar det uppdaterade resultatet i en tillförlitlig ordlista, som replikeras till flera noder i klustret och sparas på disken. Alla programdata lagras i klustret, så det behövs ingen databas.
Felsökning i Visual Studio
Programmet bör köras som det ska, men du kan använda felsökaren och se hur viktiga delar av programmet fungerar. När du felsöker programmet i Visual Studio använder du ett lokalt Service Fabric-utvecklingskluster. Du kan justera felsökningsupplevelsen till ditt scenario. I det här programmet lagras data i serverdelstjänsten med hjälp av en tillförlitlig ordlista. Visual Studio tar som standard bort programmet när du stoppar felsökningsprogrammet. När programmet tas bort kommer även data i serverdelstjänsten att tas bort. Om du vill spara data mellan felsökningssessioner öppnar du Egenskaper för röstningsprojekt och ändrar programfelsökningsläge till Automatisk uppgradering.
Gör så här om du vill se vad som händer i koden:
Öppna filen /VotingWeb/Controllers/VotesController.cs och konfigurera en brytpunkt i webb-API:ns metod Put (rad 69). Du kan söka efter filen i Solution Explorer i Visual Studio.
Öppna filen /VotingData/Controllers/VoteDataController.cs och konfigurera en brytpunkt i denna webb-API:s metod Put (rad 54).
Gå tillbaka till webbläsaren och klicka på ett röstningsalternativ eller lägg till ett nytt röstningsalternativ. Du kommer till den första brytpunkten i webbklientdelens api-kontroll.
Det här steget är när JavaScript i webbläsaren skickar en begäran till webb-API-kontrollanten i klientdelstjänsten.
Skapa först URL:en till ReverseProxy för serverdelstjänsten (1).
Skicka sedan HTTP PUT-begäran till ReverseProxy (2).
Till sist returneras svaret från serverdelstjänsten till klienten (3).
Tryck på F5 för att fortsätta
Om du uppmanas av webbläsaren ska du ge gruppen ServiceFabricAllowedUsers läs- och körbehörighet för felsökningsläge.
Nu är du vid brytpunkten i serverdelstjänsten.
På den första raden i metoden (1) kommer
StateManager
hämta eller lägga till en tillförlitlig ordlista med namnetcounts
.All interaktion med värden i en tillförlitlig ordlista kräver en transaktion, den här använder instruktionen (2) som skapar den transaktionen.
I transaktionen uppdaterar du värdet för den relevanta nyckeln för röstningsalternativet och utför åtgärden (3). När utförandemetoden returneras uppdateras data i ordlistan och replikeras till andra noder i klustret. Data har nu lagrats i klustret och serverdelstjänsten kan redundansväxla till andra noder och fortfarande ha data tillgängliga.
Tryck på F5 för att fortsätta
Stoppa felsökningssessionen genom att trycka på Skift + F5.
Utföra en löpande programuppgradering
När du distribuerar nya uppdateringar till programmet, sprider Service Fabric uppdateringen på ett säkert sätt. Med löpande uppgraderingar slipper du driftstopp under uppgraderingen och du får även automatisk återställning om det uppstår fel.
Gör så här om du vill uppgradera programmet:
Öppna filen /VotingWeb/Views/Home/Index.cshtml i Visual Studio.
Ändra rubriken på sidan genom att lägga till eller uppdatera texten. Du kan till exempel ändra rubriken till "Service Fabric Voting Sample v2".
Spara filen.
Högerklicka på Röstning i Solution Explorer och välj Publicera. Dialogrutan Publicera visas.
Högerklicka på knappen Manifestversion om du vill ändra version för tjänsten och programmet.
Ändra versionen av elementet Kod under VotingWebPkg till exempelvis "2.0.0" och klicka på Spara.
I dialogrutan för att publicera Service Fabric-program markerar du kryssrutan för att uppgradera programmet.
Ändra målprofilen till PublishProfiles\Local.5Node.xml och se till att anslutningsslutpunkten är inställd på lokalt kluster.
Välj Upgrade the Application (Uppradera programmet).
Klicka på Publicera.
Du kan fortfarande använda programmet när uppgraderingen körs. Eftersom du har två instanser av tjänsten som körs i klustret kan en del förfrågningar få en uppgraderad version av programmet, medan andra kan få den gamla versionen.
Öppna webbläsaren och bläddra till klusteradressen på port 19080. Exempel:
http://localhost:19080/
Klicka på noden Program i trädvyn och sedan Pågående uppgraderingar i det högra fönstret. Du kan se hur uppgraderingen går igenom uppgraderingsdomänerna i klustret och ser till att varje domän fungerar som den ska innan den går vidare till nästa. En uppgraderingsdomän i förloppsfältet visas som grön när domänens hälsotillstånd har verifierats.
Service Fabric gör uppgraderingar på ett säkert sätt genom att vänta två minuter efter uppgradering av tjänsten på varje nod i klustret. Du kan förvänta dig att hela uppgraderingen tar cirka åtta minuter.
Nästa steg
I den här snabbstarten har du lärt dig att:
- Skapa ett program med .NET och Service Fabric
- Använda ASP.NET kärna som en webbklientdel
- Lagra programdata i en tillståndskänslig tjänst
- Felsöka programmet lokalt
- Skala ut programmet över flera noder
- Utföra en löpande programuppgradering
Titta på den här självstudien om du vill veta mer om Service Fabric och .NET: