Představujeme StartupServices.xml v aplikaci Service Fabric
Tato funkce představuje soubor StartupServices.xml v návrhu aplikace Service Fabric. Tento soubor hostuje část DefaultServices ApplicationManifest.xml. Při této implementaci se výchozí služby a parametry související s definicí služby přesunou z existujících ApplicationManifest.xml do tohoto nového souboru s názvem StartupServices.xml. Tento soubor se používá v jednotlivých funkcích (sestavení, opětovné sestavení, F5/Ctrl+F5/Publikování) v sadě Visual Studio.
StartupServices.xml je určen pouze pro nasazení sady Visual Studio. Toto uspořádání spočívá v tom, že balíčky nasazené se sadou Visual Studio (s StartupServices.xml) nemají konflikty s nasazenými službami ARM.
StartupServices.xml není zabalený jako součást balíčku aplikace. Kanál DevOps se nepodporuje a zákazníci by měli nasadit jednotlivé služby v manifestu aplikace prostřednictvím ARM nebo prostřednictvím rutin s požadovanou konfigurací.
Stávající návrh aplikace Service Fabric
Pro každou aplikaci Service Fabric je ApplicationManifest.xml zdrojem všech informací souvisejících se službou pro aplikaci. ApplicationManifest.xml se skládá ze všech parametrů, ServiceManifestImport a DefaultServices. Parametry konfigurace jsou uvedené v souborech Cloud.xml/Local1Node.xml/Local5Node.xml v části ApplicationParameters.
Při přidání nové služby do aplikace se do ApplicationManifest.xml přidají nové parametry služby, oddíly ServiceManifestImport a DefaultServices. Parametry konfigurace se přidávají do souborů Cloud.xml/Local1Node.xml/Local5Node.xml v části ApplicationParameters.
Když uživatel vybere funkci Sestavení/opětovné sestavení v sadě Visual Studio, dojde k úpravě oddílů ServiceManifestImport, Parameters a DefaultServices v ApplicationManifest.xml. Parametry konfigurace se také upravují v souborech Cloud.xml/Local1Node.xml/Local5Node.xml v části ApplicationParameters.
Když uživatel aktivuje F5/Ctrl+F5/Publish, aplikace a služby se nasadí nebo publikují na základě informací v ApplictionManifest.xml. Parametry konfigurace se používají z libovolného souboru Cloud.xml/Local1Node.xml/Local5Node.xml v části ApplicationParameters.
Ukázková 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>
Nový návrh aplikace Service Fabric s využitím StartupServices.xml
V tomto návrhu je jasný rozdíl mezi informacemi o úrovni služby (například definice služby a parametry služby) a informacemi na úrovni aplikace (ServiceManifestImport a ApplicationParameters). StartupServices.xml obsahuje všechny informace o úrovni služby, zatímco ApplicationManifest.xml obsahuje všechny informace na úrovni aplikace. Další zaváděnou změnou je přidání Cloud.xml/Local1Node.xml/Local5Node.xml v části StartupServiceParameters, která má pouze konfiguraci parametrů služby. Existující Cloud.xml/Local1Node.xml/Local5Node.xml v části ApplicationParameters obsahuje pouze konfiguraci parametrů na úrovni aplikace.
Při přidání nové služby do aplikace se do ApplicationManifest.xml přidají parametry na úrovni aplikace a ServiceManifestImport. Konfigurace parametrů aplikace se přidá do souborů Cloud.xml/Local1Node.xml/Local5Node.xml v části ApplicationParameters. Informace o službě a parametry služby se přidávají do StartupServices.xml a konfigurace parametrů služby se přidávají do Cloud.xml/Local1Node.xml/Local5Node.xml v části StartupServiceParameters.
Během sestavení/opětovného sestavení projektu, úprava ServiceManifestImport, parametry aplikace probíhají v ApplicationManifest.xml. Konfigurace parametrů aplikace se také upravuje v souborech Cloud.xml/Local1Node.xml/Local5Node.xml v části ApplicationParameters. Informace související se službami se upravují v StartupServices.xml a parametry služby se upravují v části StartupServiceParameters v části Cloud.xml/Local1Node.xml/Local5Node.xml.
Když se v sadě Visual Studio aktivuje klávesa F5/Ctrl+F5/Publish, aplikace se nasadí nebo publikuje na základě informací z ApplictionManifest.xml a parametrů aplikace z libovolného souboru Cloud.xml/Local1Node.xml/Local5Node.xml v části ApplicationParameters. Každá služba se spouští jednotlivě s informacemi o službě z StartupServices.xml a konfigurace parametrů služby z libovolného souboru Cloud.xml/Local1Node.xml/Local5Node.xml v části StartupServiceParameters.
Tyto parametry služby a parametry aplikace je možné upravit před publikováním aplikace (kliknutím pravým tlačítkem myši>) tak, jak je znázorněno na obrázku.
Ukázkové ApplicationManifest.xml v novém návrhu
<?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>
Ukázkový soubor 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>
Funkce startupServices.xml je povolená pro všechny nové projekty v sadě SF SDK verze 5.0.516.9590 a vyšší. Projekty vytvořené pomocí starší verze sady SDK jsou plně zpětně kompatibilní s nejnovější sadou SDK. Migrace starých projektů do nového návrhu se nepodporuje. Pokud chce uživatel vytvořit aplikaci Service Fabric bez StartupServices.xml v novější verzi sady SDK, měl by uživatel vybrat odkaz "Pomozte mi zvolit šablonu projektu", jak je znázorněno na následujícím obrázku.