Знакомство с StartupServices.xml в приложении Service Fabric
Эта функция представляет файл StartupServices.xml в макете приложения Service Fabric. В этом файле размещается раздел DefaultServices ApplicationManifest.xml. В этой реализации DefaultServices и параметры, связанные с определением сервиса, перемещаются из существующего файла ApplicationManifest.xml в новый файл с именем StartupServices.xml. Этот файл используется в каждой функции (Собрать/Перестроить/F5/Ctrl+F5/Опубликовать) в Visual Studio.
StartupServices.xml предназначен только для развертываний Visual Studio. Это позволяет гарантировать, что пакеты, развернутые с помощью Visual Studio (с StartupServices.xml), не имеют конфликтов с развернутыми службами ARM.
StartupServices.xml не упаковано в пакет приложения. Он не поддерживается в конвейере DevOps, и клиенты должны развертывать отдельные службы в манифесте приложения либо с помощью ARM, либо с помощью командлетов с требуемой конфигурацией.
Существующий макет приложения Service Fabric
Для каждого приложения Service Fabric файл ApplicationManifest.xml является источником всех сведений для приложения, которые относятся к службе. ApplicationManifest.xml содержит все параметры, а также ServiceManifestImport и DefaultServices. Параметры конфигурации находятся в файлах Cloud.xml/Local1Node.xml/Local5Node.xml в ApplicationParameters.
При добавлении новой службы в приложение новые параметры службы, разделы ServiceManifestImport и DefaultServices добавляются в ApplicationManifest.xml. Параметры конфигурации добавляются в файлах Cloud.xml/Local1Node.xml/Local5Node.xml в ApplicationParameters.
Когда пользователь выбирает функцию сборки и перестроения в Visual Studio, изменения разделов ServiceManifestImport, Parameters и DefaultServices происходит в ApplicationManifest.xml. Параметры конфигурации также редактируются в файлах Cloud.xml/Local1Node.xml/Local5Node.xml в ApplicationParameters.
Когда пользователь запускает функцию F5/CTRL+F5/Опубликовать, приложения и службы развертываются или публикуются на основе информации в файле ApplictionManifest.xml. Параметры конфигурации также редактируются в файлах Cloud.xml/Local1Node.xml/Local5Node.xml в ApplicationParameters.
Пример файла 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>
Новый макет приложения Service Fabric с помощью StartupServices.xml
В этой структуре есть четкое различие между сведениями об уровне обслуживания (например, определение службы и параметры службы) и сведениями на уровне приложения (ServiceManifestImport и ApplicationParameters). StartupServices.xml содержит все сведения на уровне службы, в то время как ApplicationManifest.xml содержит все сведения на уровне приложения. Другим внесенным изменением является добавление файлов Cloud.xml/Local1Node.xml/Local5Node.xml в StartupServiceParameters, которые сконфигурированы только для параметров службы. Существующие файлы Cloud.xml/Local1Node.xml/Local5Node.xml в ApplicationParameters содержат только конфигурацию параметров на уровне приложения.
Когда добавляется новая служба в приложение, в файл ApplicationManifest.xml добавляются параметры уровня приложения и ApplicationManifest.xml. Параметры конфигурации для приложения добавляются в файлах Cloud.xml/Local1Node.xml/Local5Node.xml в ApplicationParameters. Сведения о службах и параметры служб добавляются в StartupServices.xml, а конфигурация для параметров службы добавляется в Cloud.xml/Local1Node.xml/Local5Node.xml в StartupServiceParameters.
При сборке/перестроении проекта изменения ServiceManifestImport и параметров приложения выполняются в ApplicationManifest.xml. Параметры конфигурации приложения также редактируются в файлах Cloud.xml/Local1Node.xml/Local5Node.xml в ApplicationParameters. Сведения, относящиеся к службе, редактируются в StartupServices.xml, а параметры службы редактируются в Cloud.xml/Local1Node.xml/Local5Node.xml в StartupServiceParameters.
Когда в Visual Studio запускается функция F5/CTRL+F5/Опубликовать, приложение развертывается и публикуется на основе сведений из файла ApplictionManifest.xml и параметров приложения из файлов Cloud.xml/Local1Node.xml/Local5Node.xml в ApplicationParameters. Каждая служба запускается отдельно со сведениями о службах из файла StartupServices.xml и конфигурацией параметров службы из любого из файлов Cloud.xml/Local1Node.xml/Local5Node.xml в StartupServiceParameters.
Эти параметры службы и параметры приложения можно изменить перед публикацией приложения (Щелкнуть правой кнопкой мыши->Опубликовать), как показано на рисунке.
Пример файла 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="" />
</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>
Пример файла 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>
Функция startupServices.xml включена для всех новых проектов в пакете SDK для SF версии 5.0.516.9590 и выше. Проекты, созданные с более старой версией пакета SDK, полностью совместимы с последним пакетом SDK. Миграция старых проектов в новый дизайн не поддерживается. Если пользователь хочет создать приложение Service Fabric без StartupServices.xml в новой версии ПАКЕТА SDK, пользователь должен выбрать ссылку "Справка по выбору шаблона проекта", как показано на рисунке ниже.
Следующие шаги
- Дополнительная информация о модели приложения Service Fabric.
- Дополнительная информация о манифестах службы и приложении Service Fabric.