Service Fabric Uygulamasında StartupServices.xml Tanıtımı
Bu özellik, Service Fabric Uygulaması tasarımında StartupServices.xml dosya tanıtır. Bu dosya ApplicationManifest.xml DefaultServices bölümünü barındırıyor. Bu uygulamayla, DefaultServices ve Hizmet tanımıyla ilgili parametreler mevcut ApplicationManifest.xml StartupServices.xml adlı bu yeni dosyaya taşınır. Bu dosya Visual Studio'daki her işlevde (Derleme/Yeniden Derleme/F5/Ctrl+F5/Yayımlama) kullanılır.
StartupServices.xml yalnızca Visual Studio dağıtımlarına yöneliktir. Bu düzenleme, Visual Studio ile dağıtılan paketlerin (StartupServices.xml ile) ARM dağıtılan hizmetlerle çakışma olmadığından emin olmaktır.
StartupServices.xml, uygulama paketinin bir parçası olarak paketlenmemiş. DevOps işlem hattında desteklenmez ve müşterilerin arm aracılığıyla veya istenen yapılandırmaya sahip cmdlet'ler aracılığıyla bir uygulama bildiriminde tek tek hizmetler dağıtması gerekir.
Mevcut Service Fabric Uygulama Tasarımı
Her service fabric uygulaması için ApplicationManifest.xml, uygulama için hizmetle ilgili tüm bilgilerin kaynağıdır. ApplicationManifest.xml tüm Parametreler, ServiceManifestImport ve DefaultServices'lerden oluşur. Yapılandırma parametreleri ApplicationParameters altındaki Cloud.xml/Local1Node.xml/Local5Node.xml dosyalarında belirtilir.
Bir uygulamaya yeni bir hizmet eklendiğinde, ApplicationManifest.xml içine yeni hizmet Parametreleri, ServiceManifestImport ve DefaultServices bölümleri eklenir. Yapılandırma parametreleri ApplicationParameters altında Cloud.xml/Local1Node.xml/Local5Node.xml dosyalarına eklenir.
Kullanıcı Visual Studio'da Build/Rebuild işlevini seçtiğinde ServiceManifestImport, Parameters ve DefaultServices bölümlerinin değiştirilmesi ApplicationManifest.xml. Yapılandırma parametreleri, ApplicationParameters altındaki Cloud.xml/Local1Node.xml/Local5Node.xml dosyalarında da düzenlenir.
Kullanıcı F5/Ctrl+F5/Yayımla'yı tetiklediğinde, uygulama ve hizmetler ApplictionManifest.xml'daki bilgilere göre dağıtılır veya yayımlanır. Yapılandırma parametreleri ApplicationParameters altındaki Cloud.xml/Local1Node.xml/Local5Node.xml dosyalarından herhangi birinden kullanılır.
Örnek 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>
StartupServices.xml ile Yeni Service Fabric Uygulama Tasarımı
Bu tasarımda, hizmet düzeyi bilgileri (örneğin, Hizmet tanımı ve Hizmet parametreleri) ile uygulama düzeyi bilgileri (ServiceManifestImport ve ApplicationParameters) arasında net bir ayrım vardır. StartupServices.xml tüm hizmet düzeyi bilgilerini içerirken ApplicationManifest.xml tüm uygulama düzeyi bilgilerini içerir. Yapılan bir diğer değişiklik de, yalnızca hizmet parametreleri için yapılandırmaya sahip startupServiceParameters altında Cloud.xml/Local1Node.xml/Local5Node.xml eklenmesidir. ApplicationParameters altında var olan Cloud.xml/Local1Node.xml/Local5Node.xml yalnızca uygulama düzeyinde parametre yapılandırmasını içerir.
Uygulamaya yeni bir hizmet eklendiğinde, uygulama düzeyi Parametreler ve ServiceManifestImport ApplicationManifest.xml eklenir. Uygulama parametreleri için yapılandırma, ApplicationParameters altında Cloud.xml/Local1Node.xml/Local5Node.xml dosyalarına eklenir. Hizmet bilgileri ve Hizmet Parametreleri StartupServices.xml eklenir ve hizmet parametreleri için yapılandırma, StartupServiceParameters altında Cloud.xml/Local1Node.xml/Local5Node.xml eklenir.
Projenin Derlenmesi/Yeniden Derlenmesi sırasında ServiceManifestImport'un değiştirilmesi, Uygulama Parametreleri ApplicationManifest.xml gerçekleşir. Uygulama Parametrelerinin yapılandırması, ApplicationParameters altındaki Cloud.xml/Local1Node.xml/Local5Node.xml dosyalarında da düzenlenir. Hizmetle ilgili bilgiler StartupServices.xml ve Hizmet Parametreleri de StartupServiceParameters altında Cloud.xml/Local1Node.xml/Local5Node.xml düzenlenir.
Visual Studio'da F5/Ctrl+F5/Publish tetiklendiğinde uygulama, applicationParameters altındaki Cloud.xml/Local1Node.xml/Local5Node.xml dosyalarından ApplictionManifest.xml ve uygulama parametrelerinden alınan bilgilere göre dağıtılır/yayımlanır. Her hizmet, StartupServiceParameters altındaki Cloud.xml/Local1Node.xml/Local5Node.xml dosyalarından StartupServices.xml hizmet bilgileri ve hizmet parametreleri yapılandırmasıyla tek tek başlatılır.
Bu hizmet parametreleri ve uygulama parametreleri, resimde gösterildiği gibi bir uygulamayı yayımlamadan önce düzenlenebilir (Sağ tıklama-Yayımlama>).
Yeni tasarımda örnek 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>
Örnek StartupServices.xml dosyası
<?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 özelliği SF SDK sürüm 5.0.516.9590 ve üzeri tüm yeni projelerde etkinleştirilir. SDK'nın eski sürümüyle oluşturulan projeler en son SDK ile tamamen geriye dönük olarak uyumludur. Eski projelerin yeni tasarıma geçirilmesi desteklenmez. Kullanıcı, SDK'nın daha yeni sürümünde StartupServices.xml olmadan bir Service Fabric Uygulaması oluşturmak istiyorsa, aşağıdaki resimde gösterildiği gibi "Proje şablonu seçmeme yardımcı olun" bağlantısını seçmelidir.