Guide för att konvertera webb-och arbets roller till Service Fabric tillstånds lösa tjänster
I den här artikeln beskrivs hur du migrerar Cloud Services Web-och Worker-roller till Service Fabric tillstånds lösa tjänster. Det här är den enklaste migreringen från Cloud Services till Service Fabric för program vars övergripande arkitektur kommer att stanna på samma sätt.
Cloud Service-projekt för att Service Fabric program projekt
Ett moln tjänst projekt och ett Service Fabric-programprojekt har en liknande struktur och båda representerar distributions enheten för ditt program, det vill säga de definierar det kompletta paketet som distribueras för att köra programmet. Ett moln tjänst projekt innehåller en eller flera webb-eller arbets roller. På samma sätt innehåller ett Service Fabric program projekt en eller flera tjänster.
Skillnaden är att Cloud Service-projektet Couples program distributionen med en VM-distribution och därför innehåller konfigurations inställningar för virtuella datorer, medan Service Fabric programprojektet definierar ett program som ska distribueras till en uppsättning befintliga virtuella datorer i ett Service Fabric-kluster. Själva Service Fabric-klustret distribueras bara en gång, antingen via en Resource Manager-mall eller via Azure Portal och flera Service Fabric program kan distribueras till den.

Arbets roll för tillstånds lös tjänst
En arbets roll representerar en tillstånds lös arbets belastning, vilket innebär att varje instans av arbets belastningen är identisk och begär Anden kan skickas till vilken instans som helst. Varje instans förväntas inte komma ihåg den tidigare begäran. Tillstånd att arbets belastningen fungerar på hanteras av ett externt tillstånds lager, till exempel Azure Table Storage eller Azure Cosmos DB. I Service Fabric representeras den här typen av arbets belastning av en tillstånds lös tjänst. Den enklaste metoden för att migrera en arbets roll till Service Fabric kan göras genom att konvertera arbets roll kod till en tillstånds lös tjänst.

Webb roll för tillstånds lös tjänst
På samma sätt som arbets rollen representerar en webbroll även en tillstånds lös arbets belastning, och därför kan den också mappas till en Service Fabric tillstånds lös tjänst. Till skillnad från webb roller stöder Service Fabric dock inte IIS. För att migrera ett webb program från en webbroll till en tillstånds lös tjänst måste du först byta till ett webb ramverk som kan vara egen värd och som inte är beroende av IIS eller system. Web, till exempel ASP.NET Core 1.
| Program | Stöds | Sökväg för migrering |
|---|---|---|
| ASP.NET webb formulär | Inga | Konvertera till ASP.NET Core 1 MVC |
| ASP.NET MVC | Med migrering | Uppgradera till ASP.NET Core 1 MVC |
| ASP.NET Web API | Med migrering | Använd egen server eller ASP.NET Core 1 |
| ASP.NET Core 1 | Ja | Ej tillämpligt |
API för start punkt och livs cykel
Arbets rollen och Service Fabric tjänst-API: er erbjuder liknande start punkter:
| Start punkt | Arbets roll | Service Fabric tjänst |
|---|---|---|
| Bearbetar | Run() |
RunAsync() |
| VM-start | OnStart() |
Ej tillämpligt |
| Stoppa virtuell dator | OnStop() |
Ej tillämpligt |
| Öppna lyssnare för klient begär Anden | Ej tillämpligt |
|
Arbets roll
using Microsoft.WindowsAzure.ServiceRuntime;
namespace WorkerRole1
{
public class WorkerRole : RoleEntryPoint
{
public override void Run()
{
}
public override bool OnStart()
{
}
public override void OnStop()
{
}
}
}
Service Fabric tillstånds lös tjänst
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.ServiceFabric.Services.Communication.Runtime;
using Microsoft.ServiceFabric.Services.Runtime;
namespace Stateless1
{
public class Stateless1 : StatelessService
{
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
}
protected override Task RunAsync(CancellationToken cancelServiceInstance)
{
}
}
}
Båda har en primär "kör"-åsidosättning som börjar bearbetas. Service Fabric Services kombinerar Run , Start och Stop till en enda start punkt, RunAsync . Tjänsten ska börja fungera när RunAsync den startas och ska sluta fungera när RunAsync metodens CancellationToken är signalerad.
Det finns flera viktiga skillnader mellan livs cykeln och livs längden för arbets roller och Service Fabric tjänster:
- Livs cykel: Den största skillnaden är att en arbets roll är en virtuell dator och att dess livs cykel är kopplad till den virtuella datorn, vilket inkluderar händelser för när den virtuella datorn startar och stoppas. En Service Fabric tjänst har en livs cykel som är separat från VM-livscykeln, så den inkluderar inte händelser för när den virtuella värddatorn eller datorn startar och stoppas, eftersom de inte är relaterade.
- Livs längd: En arbets roll instans återanvänds om
Runmetoden avslutas.RunAsyncMetoden i en Service Fabric-tjänst kan dock köras för att slutföras och tjänst instansen håller på att vara igång.
Service Fabric tillhandahåller en valfri start punkt för kommunikations konfiguration för tjänster som lyssnar efter klient begär Anden. Både RunAsync och kommunikations start punkten är valfria åsidosättningar i Service Fabric Services – din tjänst kan välja att bara lyssna på klient begär Anden eller köra en bearbetnings slinga eller båda – som är orsaken till att RunAsync-metoden tillåts avsluta utan att starta om tjänst instansen, eftersom den kan fortsätta att lyssna efter klient begär Anden.
Program-API och miljö
API: et för Cloud Servicess miljön innehåller information och funktioner för den aktuella VM-instansen samt information om andra roll instanser för virtuella datorer. Service Fabric innehåller information som rör dess körning och viss information om noden som en tjänst körs för tillfället.
| Miljö aktivitet | Molntjänster | Service Fabric |
|---|---|---|
| Konfigurations inställningar och ändrings meddelande | RoleEnvironment |
CodePackageActivationContext |
| Lokal lagring | RoleEnvironment |
CodePackageActivationContext |
| Slut punkts information | RoleInstance
|
|
| Miljö emulering | RoleEnvironment.IsEmulated |
Ej tillämpligt |
| Samtidig ändrings händelse | RoleEnvironment |
Ej tillämpligt |
Konfigurationsinställningar
Konfigurations inställningar i Cloud Services anges för en virtuell dator roll och tillämpas på alla instanser av den virtuella dator rollen. De här inställningarna är nyckel/värde-par som anges i ServiceConfiguration. *. cscfg-filer och kan nås direkt via RoleEnvironment. I Service Fabric gäller inställningarna individuellt för varje tjänst och för varje program, i stället för till en virtuell dator, eftersom en virtuell dator kan vara värd för flera tjänster och program. En tjänst består av tre paket:
- Kod: innehåller tjänstens körbara filer, binärfiler, DLL-filer och andra filer som en tjänst behöver köra.
- Config: alla konfigurationsfiler och inställningar för en tjänst.
- Data: statiska datafiler som är associerade med tjänsten.
Vart och ett av dessa paket kan vara oberoende versions hantering och uppgraderas. Precis som med Cloud Services kan ett konfigurations paket nås via programmering via ett API och händelser är tillgängliga för att meddela tjänsten om en ändring av konfigurations paket. En Settings.xml-fil kan användas för nyckel värdes konfiguration och programmatisk åtkomst som liknar avsnittet appinställningar i en App.config-fil. Men till skillnad från Cloud Services kan ett Service Fabric konfigurations paket innehålla konfigurationsfiler i alla format, oavsett om det är XML, JSON, YAML eller ett anpassat binärformat.
Åtkomst till konfiguration
Cloud Services
Konfigurations inställningar från ServiceConfiguration. *. cscfg kan nås via RoleEnvironment . De här inställningarna är globalt tillgängliga för alla roll instanser i samma moln tjänst distribution.
string value = RoleEnvironment.GetConfigurationSettingValue("Key");
Service Fabric
Varje tjänst har sitt eget konfigurations paket. Det finns ingen inbyggd mekanism för globala konfigurations inställningar som är tillgängliga för alla program i ett kluster. När du använder Service Fabricens särskilda Settings.xml konfigurations fil i ett konfigurations paket kan värden i Settings.xml skrivas över på program nivå, vilket gör det möjligt att konfigurera konfigurations inställningar på program nivå.
Konfigurations inställningarna är åtkomst i varje tjänst instans via tjänstens CodePackageActivationContext .
ConfigurationPackage configPackage = this.Context.CodePackageActivationContext.GetConfigurationPackageObject("Config");
// Access Settings.xml
KeyedCollection<string, ConfigurationProperty> parameters = configPackage.Settings.Sections["MyConfigSection"].Parameters;
string value = parameters["Key"]?.Value;
// Access custom configuration file:
using (StreamReader reader = new StreamReader(Path.Combine(configPackage.Path, "CustomConfig.json")))
{
MySettings settings = JsonConvert.DeserializeObject<MySettings>(reader.ReadToEnd());
}
Konfigurations uppdaterings händelser
Cloud Services
RoleEnvironment.ChangedHändelsen används för att meddela alla roll instanser när en ändring sker i miljön, till exempel en konfigurations ändring. Detta används för att använda konfigurations uppdateringar utan återvinning av roll instanser eller omstart av en arbets process.
RoleEnvironment.Changed += RoleEnvironmentChanged;
private void RoleEnvironmentChanged(object sender, RoleEnvironmentChangedEventArgs e)
{
// Get the list of configuration changes
var settingChanges = e.Changes.OfType<RoleEnvironmentConfigurationSettingChange>();
foreach (var settingChange in settingChanges)
{
Trace.WriteLine("Setting: " + settingChange.ConfigurationSettingName, "Information");
}
}
Service Fabric
Var och en av de tre paket typerna i en service kod, konfiguration och data-har händelser som meddelar en tjänst instans när ett paket uppdateras, läggs till eller tas bort. En tjänst kan innehålla flera paket av varje typ. En tjänst kan till exempel ha flera konfigurations paket, varje individuellt versions-och uppgraderings Bart.
Dessa händelser är tillgängliga för att förbruka ändringar i tjänst paket utan att starta om tjänst instansen.
this.Context.CodePackageActivationContext.ConfigurationPackageModifiedEvent +=
this.CodePackageActivationContext_ConfigurationPackageModifiedEvent;
private void CodePackageActivationContext_ConfigurationPackageModifiedEvent(object sender, PackageModifiedEventArgs<ConfigurationPackage> e)
{
this.UpdateCustomConfig(e.NewPackage.Path);
this.UpdateSettings(e.NewPackage.Settings);
}
Start åtgärder
Start åtgärder är åtgärder som vidtas innan ett program startar. En start åtgärd används vanligt vis för att köra installations skript med utökade privilegier. Både Cloud Services och Service Fabric stöd för start åtgärder. Den största skillnaden är Cloud Services att en start aktivitet är kopplad till en virtuell dator eftersom den är en del av en roll instans, men i Service Fabric en start aktivitet är kopplad till en tjänst som inte är kopplad till någon viss virtuell dator.
| Service Fabric | Cloud Services |
|---|---|
| Konfigurations plats | Service definition. csdef |
| Behörigheter | "begränsad" eller "förhöjd" |
| Sekvensering | "enkel", "bakgrund", "förgrund" |
Cloud Services
I Cloud Services en start punkt konfigureras per roll i service definition. csdef.
<ServiceDefinition>
<Startup>
<Task commandLine="Startup.cmd" executionContext="limited" taskType="simple" >
<Environment>
<Variable name="MyVersionNumber" value="1.0.0.0" />
</Environment>
</Task>
</Startup>
...
</ServiceDefinition>
Service Fabric
I Service Fabric en start punkt konfigureras per tjänst i ServiceManifest.xml:
<ServiceManifest>
<CodePackage Name="Code" Version="1.0.0">
<SetupEntryPoint>
<ExeHost>
<Program>Startup.bat</Program>
</ExeHost>
</SetupEntryPoint>
...
</ServiceManifest>
En anteckning om utvecklings miljö
Både Cloud Services och Service Fabric är integrerade med Visual Studio med projektmallar och stöd för fel sökning, konfiguration och distribution av både lokalt och till Azure. Både Cloud Services och Service Fabric tillhandahåller också en lokal utvecklings körnings miljö. Skillnaden är att medan Cloud Service Development runtime emulerar den Azure-miljö som den körs på, Service Fabric inte använder en emulator – den använder den fullständiga Service Fabric Runtime. Den Service Fabric miljö som du kör på den lokala utvecklings datorn är samma miljö som körs i produktion.
Nästa steg
Läs mer om Service Fabric Reliable Services och de grundläggande skillnaderna mellan Cloud Services och Service Fabric program arkitektur för att förstå hur du kan dra nytta av den fullständiga uppsättningen Service Fabric funktioner.