Share via


Inleiding tot StartupServices.xml in Service Fabric-toepassing

Deze functie introduceert StartupServices.xml bestand in een Service Fabric-toepassingsontwerp. Dit bestand host de sectie DefaultServices van ApplicationManifest.xml. Met deze implementatie worden parameters met betrekking tot defaultservices en servicedefinities verplaatst van bestaande ApplicationManifest.xml naar dit nieuwe bestand met de naam StartupServices.xml. Dit bestand wordt gebruikt in elke functionaliteit (Build/Rebuild/F5/Ctrl+F5/Publish) in Visual Studio.

StartupServices.xml is alleen bedoeld voor Visual Studio-implementaties. Deze regeling is ervoor te zorgen dat pakketten die zijn geïmplementeerd met Visual Studio (met StartupServices.xml) geen conflicten hebben met door ARM geïmplementeerde services.

StartupServices.xml is niet verpakt als onderdeel van het toepassingspakket. Het wordt niet ondersteund in DevOps-pijplijn en klanten moeten afzonderlijke services implementeren in een toepassingsmanifest via ARM of via cmdlets met de gewenste configuratie.

Bestaand Service Fabric-toepassingsontwerp

Voor elke Service Fabric-toepassing is ApplicationManifest.xml de bron van alle servicegerelateerde informatie voor de toepassing. ApplicationManifest.xml bestaat uit alle parameters, ServiceManifestImport en DefaultServices. Configuratieparameters worden vermeld in Cloud.xml/Local1Node.xml/Local5Node.xml bestanden onder ApplicationParameters.

Wanneer een nieuwe service wordt toegevoegd in een toepassing, worden nieuwe serviceparameters, secties ServiceManifestImport en DefaultServices toegevoegd in ApplicationManifest.xml. Configuratieparameters worden toegevoegd in Cloud.xml/Local1Node.xml/Local5Node.xml-bestanden onder ApplicationParameters.

Wanneer de gebruiker de functie Build/Rebuild selecteert in Visual Studio, vindt het wijzigen van de secties ServiceManifestImport, Parameters en DefaultServices plaats in ApplicationManifest.xml. Configuratieparameters worden ook bewerkt in Cloud.xml/Local1Node.xml/Local5Node.xml-bestanden onder ApplicationParameters.

Wanneer de gebruiker F5/Ctrl+F5/Publish activeert, worden toepassing en services geïmplementeerd of gepubliceerd op basis van de informatie in ApplictionManifest.xml. Configuratieparameters worden gebruikt vanuit een van Cloud.xml/Local1Node.xml/Local5Node.xml bestanden onder ApplicationParameters.

Bestaand ontwerp voor een Service Fabric-toepassing

Voorbeeld van 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>

Nieuw Service Fabric-toepassingsontwerp met StartupServices.xml

In dit ontwerp is er een duidelijk onderscheid tussen serviceniveaugegevens (bijvoorbeeld servicedefinitie en serviceparameters) en informatie op toepassingsniveau (ServiceManifestImport en ApplicationParameters). StartupServices.xml bevat alle informatie op serviceniveau, terwijl ApplicationManifest.xml alle informatie op toepassingsniveau bevat. Een andere wijziging die is geïntroduceerd, is het toevoegen van Cloud.xml/Local1Node.xml/Local5Node.xml onder StartupServiceParameters, die alleen configuratie voor serviceparameters heeft. Bestaande Cloud.xml/Local1Node.xml/Local5Node.xml onder ApplicationParameters bevat alleen de configuratie van parameters op toepassingsniveau.

Wanneer er een nieuwe service wordt toegevoegd in de toepassing, worden parameters op toepassingsniveau en ServiceManifestImport toegevoegd in ApplicationManifest.xml. Configuratie voor toepassingsparameters worden toegevoegd in Cloud.xml/Local1Node.xml/Local5Node.xml-bestanden onder ApplicationParameters. Service-informatie en serviceparameters worden toegevoegd in StartupServices.xml en configuratie voor serviceparameters worden toegevoegd in Cloud.xml/Local1Node.xml/Local5Node.xml onder StartupServiceParameters.

Tijdens het bouwen/herbouwen van het project vindt het wijzigen van ServiceManifestImport toepassingsparameters plaats in ApplicationManifest.xml. De configuratie van toepassingsparameters wordt ook bewerkt in Cloud.xml/Local1Node.xml/Local5Node.xml bestanden onder ApplicationParameters. Servicegerelateerde informatie wordt bewerkt in StartupServices.xml en serviceparameters worden bewerkt in Cloud.xml/Local1Node.xml/Local5Node.xml onder StartupServiceParameters.

Wanneer F5/Ctrl+F5/Publish wordt geactiveerd in Visual Studio, wordt de toepassing geïmplementeerd/gepubliceerd op basis van informatie uit ApplictionManifest.xml en toepassingsparameters van een van Cloud.xml/Local1Node.xml/Local5Node.xml bestanden onder ApplicationParameters. Elke service wordt afzonderlijk gestart met servicegegevens uit StartupServices.xml en configuratie van serviceparameters vanuit een van Cloud.xml/Local1Node.xml/Local5Node.xml bestanden onder StartupServiceParameters.

Nieuw ontwerp voor een Service Fabric-toepassing met StartupServices.xml

Deze serviceparameters en toepassingsparameters kunnen worden bewerkt voordat u een toepassing publiceert (klik met> de rechtermuisknop op Publiceren), zoals wordt weergegeven in de afbeelding.

Optie Publiceren in Nieuw ontwerp

Voorbeeld van ApplicationManifest.xml in nieuw ontwerp

<?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>

Voorbeeldbestand StartupServices.xml

<?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>

De startupServices.xml-functie is ingeschakeld voor alle nieuwe projecten in SF SDK versie 5.0.516.9590 en hoger. Projecten die zijn gemaakt met een oudere versie van SDK, zijn volledig compatibel met de nieuwste SDK. Migratie van oude projecten naar nieuw ontwerp wordt niet ondersteund. Als de gebruiker een Service Fabric-toepassing wil maken zonder StartupServices.xml in een nieuwere versie van SDK, moet de gebruiker de koppeling Help mij een projectsjabloon kiezen, zoals wordt weergegeven in de volgende afbeelding.

Optie Nieuwe toepassing maken in Nieuw ontwerp

Volgende stappen