Apresentando StartupServices.xml no aplicativo Service Fabric
Esse recurso introduz StartupServices.xml arquivo em um design de aplicativo do Service Fabric. Este arquivo hospeda a seção DefaultServices do ApplicationManifest.xml. Com essa implementação, DefaultServices e parâmetros relacionados à definição de serviço são movidos de ApplicationManifest.xml existentes para esse novo arquivo chamado StartupServices.xml. Esse arquivo é usado em cada funcionalidade (Build/Rebuild/F5/Ctrl+F5/Publish) no Visual Studio.
StartupServices.xml destina-se apenas a implantações do Visual Studio. Essa disposição é para garantir que os pacotes implantados com o Visual Studio (com StartupServices.xml) não tenham conflitos com os serviços implantados do ARM.
StartupServices.xml não é empacotado como parte do pacote de aplicativos. Ele não é suportado no pipeline de DevOps e os clientes devem implantar serviços individuais em um manifesto de aplicativo via ARM ou por meio de cmdlets com a configuração desejada.
Design de aplicativo do Service Fabric existente
Para cada aplicativo de malha de serviço, ApplicationManifest.xml é a fonte de todas as informações relacionadas ao serviço para o aplicativo. ApplicationManifest.xml consiste em todos os parâmetros, ServiceManifestImport e DefaultServices. Os parâmetros de configuração são mencionados em arquivos Cloud.xml/Local1Node.xml/Local5Node.xml em ApplicationParameters.
Quando um novo serviço é adicionado em um aplicativo, novas seções de serviço Parameters, ServiceManifestImport e DefaultServices são adicionadas dentro ApplicationManifest.xml. Os parâmetros de configuração são adicionados em arquivos Cloud.xml/Local1Node.xml/Local5Node.xml em ApplicationParameters.
Quando o usuário seleciona a função Build/Rebuild no Visual Studio, a modificação das seções ServiceManifestImport, Parameters e DefaultServices acontece no ApplicationManifest.xml. Os parâmetros de configuração também são editados em arquivos Cloud.xml/Local1Node.xml/Local5Node.xml em ApplicationParameters.
Quando o usuário aciona F5/Ctrl+F5/Publicar, o aplicativo e os serviços são implantados ou publicados com base nas informações do ApplictionManifest.xml. Os parâmetros de configuração são usados a partir de qualquer um dos arquivos Cloud.xml/Local1Node.xml/Local5Node.xml em ApplicationParameters.
Exemplo 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>
Novo design de aplicativo do Service Fabric com StartupServices.xml
Neste design, há uma distinção clara entre informações de nível de serviço (por exemplo, definição de serviço e parâmetros de serviço) e informações de nível de aplicativo (ServiceManifestImport e ApplicationParameters). StartupServices.xml contém todas as informações de nível de serviço, enquanto ApplicationManifest.xml contém todas as informações de nível de aplicativo. Outra alteração introduzida é a adição de Cloud.xml/Local1Node.xml/Local5Node.xml em StartupServiceParameters, que tem configuração apenas para parâmetros de serviço. O Cloud.xml/Local1Node.xml/Local5Node.xml existente em ApplicationParameters contém apenas a configuração de parâmetros no nível do aplicativo.
Quando um novo serviço é adicionado no aplicativo, Parâmetros de nível de aplicativo e ServiceManifestImport são adicionados em ApplicationManifest.xml. A configuração para parâmetros de aplicativo é adicionada em arquivos Cloud.xml/Local1Node.xml/Local5Node.xml em ApplicationParameters. Informações de serviço e parâmetros de serviço são adicionados em StartupServices.xml e configuração para parâmetros de serviço são adicionados em Cloud.xml/Local1Node.xml/Local5Node.xml em StartupServiceParameters.
Durante a compilação/reconstrução do projeto, a modificação de ServiceManifestImport, Application Parameters acontece em ApplicationManifest.xml. A configuração dos parâmetros do aplicativo também é editada em arquivos Cloud.xml/Local1Node.xml/Local5Node.xml em ApplicationParameters. As informações relacionadas ao serviço são editadas em StartupServices.xml e os parâmetros de serviço são editados em Cloud.xml/Local1Node.xml/Local5Node.xml em StartupServiceParameters.
Quando F5/Ctrl+F5/Publish é acionado no Visual Studio, o aplicativo é implantado/publicado com base em informações de ApplictionManifest.xml e parâmetros de aplicativo de qualquer um dos arquivos Cloud.xml/Local1Node.xml/Local5Node.xml em ApplicationParameters. Cada serviço é iniciado individualmente com informações de serviço de StartupServices.xml e configuração de parâmetros de serviço de qualquer um dos arquivos Cloud.xml/Local1Node.xml/Local5Node.xml em StartupServiceParameters.
Esses parâmetros de serviço e parâmetros de aplicativo podem ser editados antes de publicar um aplicativo (clique com o botão direito do mouse-Publicar>), conforme mostrado na imagem.
Exemplo de ApplicationManifest.xml no novo 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>
Exemplo de arquivo 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>
O recurso startupServices.xml está habilitado para todos os novos projetos no SF SDK versão 5.0.516.9590 e superior. Os projetos criados com a versão mais antiga do SDK são totalmente compatíveis com o SDK mais recente. A migração de projetos antigos para um novo design não é suportada. Se o usuário quiser criar um aplicativo do Service Fabric sem StartupServices.xml na versão mais recente do SDK, deverá selecionar o link "Ajude-me a escolher um modelo de projeto", conforme mostrado na imagem a seguir.
Próximos passos
- Saiba mais sobre o Modelo de Aplicativo do Service Fabric.
- Saiba mais sobre o Aplicativo do Service Fabric e os Manifestos de Serviço.