Wprowadzenie do StartupServices.xml w aplikacji usługi Service Fabric

Ta funkcja wprowadza plik StartupServices.xml w projekcie aplikacji usługi Service Fabric. Ten plik hostuje sekcję DefaultServices ApplicationManifest.xml. W tej implementacji parametry związane z definicją usługi DefaultServices i Service są przenoszone z istniejących ApplicationManifest.xml do tego nowego pliku o nazwie StartupServices.xml. Ten plik jest używany w poszczególnych funkcjach (Build/Rebuild/F5/Ctrl+F5/Publish) w programie Visual Studio.

StartupServices.xml jest przeznaczona tylko dla wdrożeń programu Visual Studio. To rozwiązanie polega na upewnieniu się, że pakiety wdrożone za pomocą programu Visual Studio (z StartupServices.xml) nie mają konfliktów z wdrożonych usług arm.

StartupServices.xml nie jest pakowana w ramach pakietu aplikacji. Nie jest ona obsługiwana w potoku DevOps, a klienci powinni wdrażać poszczególne usługi w manifeście aplikacji za pośrednictwem usługi ARM lub za pośrednictwem poleceń cmdlet z żądaną konfiguracją.

Istniejący projekt aplikacji usługi Service Fabric

Dla każdej aplikacji usługi Service Fabric ApplicationManifest.xml jest źródłem wszystkich informacji związanych z usługą dla aplikacji. ApplicationManifest.xml składa się ze wszystkich parametrów, serviceManifestImport i DefaultServices. Parametry konfiguracji są wymienione w plikach Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze ApplicationParameters.

Po dodaniu nowej usługi w aplikacji nowe parametry usługi, sekcje ServiceManifestImport i DefaultServices są dodawane wewnątrz ApplicationManifest.xml. Parametry konfiguracji są dodawane w plikach Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze ApplicationParameters.

Gdy użytkownik wybierze funkcję Kompilowanie/odbudowywanie w programie Visual Studio, modyfikacja sekcji ServiceManifestImport, Parameters i DefaultServices odbywa się w ApplicationManifest.xml. Parametry konfiguracji są również edytowane w plikach Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze ApplicationParameters.

Gdy użytkownik wyzwala klawisz F5/Ctrl+F5/Publish, aplikacja i usługi są wdrażane lub publikowane na podstawie informacji w ApplictionManifest.xml. Parametry konfiguracji są używane z dowolnych plików Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze ApplicationParameters.

Istniejący projekt dla aplikacji usługi Service Fabric

Przykładowe 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>

Nowy projekt aplikacji usługi Service Fabric z StartupServices.xml

W tym projekcie istnieje wyraźne rozróżnienie między informacjami o poziomie usług (na przykład definicją usługi i parametrami usługi) oraz informacjami na poziomie aplikacji (ServiceManifestImport i ApplicationParameters). StartupServices.xml zawiera wszystkie informacje o poziomie usług, natomiast ApplicationManifest.xml zawiera wszystkie informacje na poziomie aplikacji. Kolejna wprowadzona zmiana polega na dodaniu Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze StartupServiceParameters, który ma tylko konfigurację parametrów usługi. Istniejące Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze ApplicationParameters zawierają tylko konfigurację parametrów na poziomie aplikacji.

Po dodaniu nowej usługi w aplikacji parametry na poziomie aplikacji i polecenie ServiceManifestImport zostaną dodane w ApplicationManifest.xml. Konfiguracja parametrów aplikacji jest dodawana w plikach Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze ApplicationParameters. Informacje o usłudze i parametry usługi są dodawane w StartupServices.xml i konfiguracji parametrów usługi są dodawane w Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze StartupServiceParameters.

Podczas kompilowania/ponownego kompilowania projektu modyfikacja elementu ServiceManifestImport parametry aplikacji są wykonywane w ApplicationManifest.xml. Konfiguracja parametrów aplikacji jest również edytowana w plikach Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze ApplicationParameters. Informacje dotyczące usługi są edytowane w StartupServices.xml, a parametry usługi są edytowane w Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze StartupServiceParameters.

Po wyzwoleniu klawiszy F5/Ctrl+F5/Publish w programie Visual Studio aplikacja jest wdrażana/publikowana na podstawie informacji z parametrów ApplictionManifest.xml i aplikacji z dowolnych plików Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze ApplicationParameters. Każda usługa jest uruchamiana indywidualnie z informacjami o usłudze z StartupServices.xml i konfiguracji parametrów usługi z dowolnej z plików Cloud.xml/Local1Node.xml/Local5Node.xml w obszarze StartupServiceParameters.

Nowy projekt aplikacji usługi Service Fabric z StartupServices.xml

Te parametry usługi i parametry aplikacji można edytować przed opublikowaniem aplikacji (kliknij prawym przyciskiem myszy i> opublikować), jak pokazano na ilustracji.

Opcja Publikuj w nowym projekcie

Przykładowe ApplicationManifest.xml w nowym projekcie

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

Przykładowy plik 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>

Funkcja startupServices.xml jest włączona dla wszystkich nowych projektów w zestawie SF SDK w wersji 5.0.516.9590 lub nowszej. Projekty utworzone ze starszą wersją zestawu SDK są w pełni zgodne z poprzednimi wersjami zestawu SDK. Migracja starych projektów do nowego projektu nie jest obsługiwana. Jeśli użytkownik chce utworzyć aplikację usługi Service Fabric bez StartupServices.xml w nowszej wersji zestawu SDK, użytkownik powinien wybrać link "Pomóż mi wybrać szablon projektu", jak pokazano na poniższej ilustracji.

Opcja Utwórz nową aplikację w nowym projekcie

Następne kroki

  • Dowiedz się więcej o modelu aplikacji usługi Service Fabric.
  • Dowiedz się więcej o manifestach aplikacji i usługi Service Fabric.