Dela via


Introduktion till StartupServices.xml i Service Fabric-programmet

Den här funktionen introducerar StartupServices.xml fil i en Service Fabric-programdesign. Den här filen är värd för avsnittet DefaultServices i ApplicationManifest.xml. Med den här implementeringen flyttas Definitionsrelaterade parametrar för DefaultServices och Tjänsten från befintliga ApplicationManifest.xml till den nya filen med namnet StartupServices.xml. Den här filen används i varje funktion (Build/Rebuild/F5/Ctrl+F5/Publish) i Visual Studio.

StartupServices.xml är endast avsett för Visual Studio-distributioner. Det här arrangemanget är att se till att paket som distribueras med Visual Studio (med StartupServices.xml) inte har konflikter med ARM-distribuerade tjänster.

StartupServices.xml paketeras inte som en del av programpaketet. Det stöds inte i DevOps-pipelinen och kunder bör distribuera enskilda tjänster i ett programmanifest antingen via ARM eller via cmdletar med önskad konfiguration.

Befintlig Service Fabric-programdesign

För varje Service Fabric-program är ApplicationManifest.xml källan till all tjänstrelaterad information för programmet. ApplicationManifest.xml består av alla parametrar, ServiceManifestImport och DefaultServices. Konfigurationsparametrar nämns i Cloud.xml/Local1Node.xml/Local5Node.xml-filer under ApplicationParameters.

När en ny tjänst läggs till i ett program läggs avsnitten för nya tjänstparametrar, ServiceManifestImport och DefaultServices till i ApplicationManifest.xml. Konfigurationsparametrar läggs till i Cloud.xml/Local1Node.xml/Local5Node.xml filer under ApplicationParameters.

När användaren väljer funktionen Build/Rebuild i Visual Studio sker ändringar av avsnitten ServiceManifestImport, Parameters och DefaultServices i ApplicationManifest.xml. Konfigurationsparametrar redigeras också i Cloud.xml/Local1Node.xml/Local5Node.xml filer under ApplicationParameters.

När användaren utlöser F5/Ctrl+F5/Publish distribueras eller publiceras program och tjänster baserat på informationen i ApplictionManifest.xml. Konfigurationsparametrar används från någon av Cloud.xml/Local1Node.xml/Local5Node.xml filer under ApplicationParameters.

Befintlig design för ett Service Fabric-program

Exempel på ApplicationManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest ApplicationTypeName="SampleAppType"
                     ApplicationTypeVersion="1.0.0"
                     xmlns="http://schemas.microsoft.com/2011/01/fabric"
                     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Parameters>
    <Parameter Name="Web1_ASPNETCORE_ENVIRONMENT" DefaultValue="" />
    <Parameter Name="Web1_MinReplicaSetSize" DefaultValue="3" />
    <Parameter Name="Web1_PartitionCount" DefaultValue="1" />
    <Parameter Name="Web1_TargetReplicaSetSize" DefaultValue="3" />
  </Parameters>
  <!-- Import the ServiceManifest from the ServicePackage. The ServiceManifestName and ServiceManifestVersion 
       should match the Name and Version attributes of the ServiceManifest element defined in the 
       ServiceManifest.xml file. -->
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="Web1Pkg" ServiceManifestVersion="1.0.0" />
    <ConfigOverrides />
    <EnvironmentOverrides CodePackageRef="code">
      <EnvironmentVariable Name="ASPNETCORE_ENVIRONMENT" Value="[Web1_ASPNETCORE_ENVIRONMENT]" />
    </EnvironmentOverrides>
  </ServiceManifestImport>
  <DefaultServices>
    <!-- The section below creates instances of service types, when an instance of this 
         application type is created. You can also create one or more instances of service type using the 
         ServiceFabric PowerShell module.
         
         The attribute ServiceTypeName below must match the name defined in the imported ServiceManifest.xml file. -->
    <Service Name="Web1" ServicePackageActivationMode="ExclusiveProcess">
      <StatefulService ServiceTypeName="Web1Type" TargetReplicaSetSize="[Web1_TargetReplicaSetSize]" MinReplicaSetSize="[Web1_MinReplicaSetSize]">
        <UniformInt64Partition PartitionCount="[Web1_PartitionCount]" LowKey="-9223372036854775808" HighKey="9223372036854775807" />
      </StatefulService>
    </Service>
  </DefaultServices>
</ApplicationManifest>

Ny Service Fabric-programdesign med StartupServices.xml

I den här designen finns det en tydlig skillnad mellan information på tjänstnivå (till exempel tjänstdefinition och tjänstparametrar) och information på programnivå (ServiceManifestImport och ApplicationParameters). StartupServices.xml innehåller all information på tjänstnivå medan ApplicationManifest.xml innehåller all information på programnivå. En annan ändring som introduceras är tillägg av Cloud.xml/Local1Node.xml/Local5Node.xml under StartupServiceParameters, som endast har konfiguration för tjänstparametrar. Befintliga Cloud.xml/Local1Node.xml/Local5Node.xml under ApplicationParameters innehåller endast konfiguration av parametrar på programnivå.

När en ny tjänst läggs till i programmet läggs parametrar på programnivå och ServiceManifestImport till i ApplicationManifest.xml. Konfiguration för programparametrar läggs till i Cloud.xml/Local1Node.xml/Local5Node.xml filer under ApplicationParameters. Tjänstinformation och tjänstparametrar läggs till i StartupServices.xml och konfiguration för tjänstparametrar läggs till i Cloud.xml/Local1Node.xml/Local5Node.xml under StartupServiceParameters.

Under bygge/återskapande av projekt sker ändringar av ServiceManifestImport, programparametrar i ApplicationManifest.xml. Konfiguration av programparametrar redigeras också i Cloud.xml/Local1Node.xml/Local5Node.xml filer under ApplicationParameters. Tjänstrelaterad information redigeras i StartupServices.xml och tjänstparametrar redigeras i Cloud.xml/Local1Node.xml/Local5Node.xml under StartupServiceParameters.

När F5/Ctrl+F5/Publish utlöses i Visual Studio distribueras/publiceras programmet baserat på information från ApplictionManifest.xml- och programparametrar från någon av Cloud.xml/Local1Node.xml/Local5Node.xml filer under ApplicationParameters. Varje tjänst startas individuellt med tjänstinformation från StartupServices.xml- och tjänstparametrar från någon av Cloud.xml/Local1Node.xml/Local5Node.xml-filer under StartupServiceParameters.

Ny design för ett Service Fabric-program med StartupServices.xml

Dessa tjänstparametrar och programparametrar kan redigeras innan du publicerar ett program (högerklicka på Publicera>) enligt bilden.

Alternativet Publicera i Ny design

Exempel på ApplicationManifest.xml i ny design

<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest ApplicationTypeName="SampleAppType"
                     ApplicationTypeVersion="1.0.0"
                     xmlns="http://schemas.microsoft.com/2011/01/fabric"
                     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Parameters>
    <Parameter Name="Web1_ASPNETCORE_ENVIRONMENT" DefaultValue="" />
  </Parameters>
  <!-- Import the ServiceManifest from the ServicePackage. The ServiceManifestName and ServiceManifestVersion 
       should match the Name and Version attributes of the ServiceManifest element defined in the 
       ServiceManifest.xml file. -->
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="Web1Pkg" ServiceManifestVersion="1.0.0" />
    <ConfigOverrides />
    <EnvironmentOverrides CodePackageRef="code">
      <EnvironmentVariable Name="ASPNETCORE_ENVIRONMENT" Value="[Web1_ASPNETCORE_ENVIRONMENT]" />
    </EnvironmentOverrides>
  </ServiceManifestImport>
</ApplicationManifest>

Exempel på StartupServices.xml fil

<?xml version="1.0" encoding="utf-8"?>
<StartupServicesManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                         xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="Web1_InstanceCount" DefaultValue="-1" />
  </Parameters>
  <Services>
    <!-- The section below creates instances of service types, when an instance of this 
         application type is created. You can also create one or more instances of service type using the 
         ServiceFabric PowerShell module.

         The attribute ServiceTypeName below must match the name defined in the imported ServiceManifest.xml file. -->
    <Service Name="Web1" ServicePackageActivationMode="ExclusiveProcess">
      <StatelessService ServiceTypeName="Web1Type" InstanceCount="[Web1_InstanceCount]">
        <SingletonPartition />
      </StatelessService>
    </Service>
  </Services>
</StartupServicesManifest>

Funktionen startupServices.xml är aktiverad för alla nya projekt i SF SDK version 5.0.516.9590 och senare. Projekt som skapats med äldre version av SDK är helt bakåtkompatibla med den senaste SDK:en. Migrering av gamla projekt till ny design stöds inte. Om användaren vill skapa ett Service Fabric-program utan StartupServices.xml i nyare version av SDK bör användaren välja länken "Hjälp mig att välja en projektmall" enligt följande bild.

Alternativet Skapa nytt program i Ny design

Nästa steg