Condividi tramite


Introduzione alle StartupServices.xml nell'applicazione di Service Fabric

Questa funzionalità introduce StartupServices.xml file in una progettazione di un'applicazione di Service Fabric. Questo file ospita la sezione DefaultServices di ApplicationManifest.xml. Con questa implementazione, i parametri correlati a DefaultServices e Definizione del servizio vengono spostati da ApplicationManifest.xml esistenti a questo nuovo file denominato StartupServices.xml. Questo file viene usato in ogni funzionalità (Build/Rebuild/F5/CTRL+F5/Publish) in Visual Studio.

StartupServices.xml è destinato solo alle distribuzioni di Visual Studio. Questa disposizione consiste nel garantire che i pacchetti distribuiti con Visual Studio (con StartupServices.xml) non abbiano conflitti con i servizi distribuiti arm.

StartupServices.xml non è incluso nel pacchetto dell'applicazione. Non è supportato nella pipeline DevOps e i clienti devono distribuire singoli servizi in un manifesto dell'applicazione tramite ARM o tramite i cmdlet con la configurazione desiderata.

Progettazione di applicazioni di Service Fabric esistente

Per ogni applicazione di Service Fabric, ApplicationManifest.xml è l'origine di tutte le informazioni correlate al servizio per l'applicazione. ApplicationManifest.xml è costituito da tutti i parametri, ServiceManifestImport e DefaultServices. I parametri di configurazione sono indicati nei file Cloud.xml/Local1Node.xml/Local5Node.xml in ApplicationParameters.

Quando viene aggiunto un nuovo servizio in un'applicazione, all'interno di ApplicationManifest.xml vengono aggiunti nuovi parametri del servizio, ServiceManifestImport e DefaultServices. I parametri di configurazione vengono aggiunti nei file Cloud.xml/Local1Node.xml/Local5Node.xml in ApplicationParameters.

Quando l'utente seleziona la funzione Build/Rebuild in Visual Studio, la modifica delle sezioni ServiceManifestImport, Parameters e DefaultServices si verifica in ApplicationManifest.xml. I parametri di configurazione vengono modificati anche nei file Cloud.xml/Local1Node.xml/Local5Node.xml in ApplicationParameters.

Quando l'utente attiva F5/CTRL+F5/Pubblica, le applicazioni e i servizi vengono distribuiti o pubblicati in base alle informazioni contenute in ApplictionManifest.xml. I parametri di configurazione vengono usati da qualsiasi file di Cloud.xml/Local1Node.xml/Local5Node.xml in ApplicationParameters.

Progettazione esistente per un'applicazione di Service Fabric

ApplicationManifest.xml di esempio

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

Nuova progettazione di applicazioni di Service Fabric con StartupServices.xml

In questa progettazione esiste una chiara distinzione tra le informazioni sul livello di servizio (ad esempio, definizione del servizio e parametri del servizio) e le informazioni a livello di applicazione (ServiceManifestImport e ApplicationParameters). StartupServices.xml contiene tutte le informazioni a livello di servizio, mentre ApplicationManifest.xml contiene tutte le informazioni a livello di applicazione. Un'altra modifica introdotta è l'aggiunta di Cloud.xml/Local1Node.xml/Local5Node.xml in StartupServiceParameters, che include solo la configurazione per i parametri del servizio. Le Cloud.xml/Local1Node.xml/Local5Node.xml esistenti in ApplicationParameters contengono solo la configurazione dei parametri a livello di applicazione.

Quando viene aggiunto un nuovo servizio nell'applicazione, i parametri a livello di applicazione e ServiceManifestImport vengono aggiunti in ApplicationManifest.xml. La configurazione per i parametri dell'applicazione viene aggiunta nei file Cloud.xml/Local1Node.xml/Local5Node.xml in ApplicationParameters. Le informazioni sul servizio e i parametri del servizio vengono aggiunti in StartupServices.xml e la configurazione per i parametri del servizio vengono aggiunti in Cloud.xml/Local1Node.xml/Local5Node.xml in StartupServiceParameters.

Durante la compilazione/ricompilazione del progetto, la modifica di ServiceManifestImport, i parametri dell'applicazione si verificano in ApplicationManifest.xml. La configurazione dei parametri dell'applicazione viene modificata anche nei file Cloud.xml/Local1Node.xml/Local5Node.xml in ApplicationParameters. Le informazioni relative al servizio vengono modificate in StartupServices.xml e i parametri del servizio vengono modificati in Cloud.xml/Local1Node.xml/Local5Node.xml in StartupServiceParameters.

Quando viene attivato F5/CTRL+F5/Publish in Visual Studio, l'applicazione viene distribuita/pubblicata in base alle informazioni provenienti da ApplictionManifest.xml e parametri dell'applicazione da uno qualsiasi dei file Cloud.xml/Local1Node.xml/Local5Node.xml in ApplicationParameters. Ogni servizio viene avviato singolarmente con le informazioni sul servizio da StartupServices.xml e dalla configurazione dei parametri del servizio da qualsiasi file di Cloud.xml/Local1Node.xml/Local5Node.xml in StartupServiceParameters.

Nuova progettazione per un'applicazione di Service Fabric con StartupServices.xml

Questi parametri del servizio e i parametri dell'applicazione possono essere modificati prima di pubblicare un'applicazione (clic con il pulsante destro del mouse su> Pubblica), come illustrato nell'immagine.

Opzione Pubblica in Nuova progettazione

ApplicationManifest.xml di esempio nella nuova progettazione

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

File di StartupServices.xml di esempio

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

La funzionalità startupServices.xml è abilitata per tutti i nuovi progetti in SF SDK versione 5.0.516.9590 e successive. I progetti creati con la versione precedente di SDK sono completamente compatibili con l'SDK più recente. La migrazione dei progetti precedenti in una nuova progettazione non è supportata. Se l'utente vuole creare un'applicazione di Service Fabric senza StartupServices.xml nella versione più recente di SDK, l'utente deve selezionare il collegamento "Help me choose a project template", come illustrato nell'immagine seguente.

Opzione Crea nuova applicazione in Nuova progettazione

Passaggi successivi