Aracılığıyla paylaş


Service Fabric uygulama ve hizmet bildirimleri

Bu makalede, Service Fabric uygulamalarının ve hizmetlerinin ApplicationManifest.xml ve ServiceManifest.xml dosyaları kullanılarak nasıl tanımlandığı ve sürümü açıklanmaktadır. Daha ayrıntılı örnekler için bkz . uygulama ve hizmet bildirimi örnekleri. Bu bildirim dosyalarının XML şeması ServiceFabricServiceModel.xsd şema belgelerinde belgelenmiştir.

Uyarı

Bildirim XML dosyası şeması, alt öğelerin doğru sıralanması için zorlar. Kısmi bir geçici çözüm olarak, Service Fabric bildirimlerinden herhangi birini yazarken veya değiştirirken Visual Studio'da "C:\Program Files\Microsoft SDKs\Service Fabric\schemas\ServiceFabricServiceModel.xsd" dosyasını açın. Bu, alt öğelerin sırasını denetlemenize olanak sağlar ve intelli-sense sağlar.

ServiceManifest.xml'de bir hizmeti açıklama

Hizmet bildirimi, hizmet türünü ve sürümünü bildirimli olarak tanımlar. Hizmet türü, sistem durumu özellikleri, yük dengeleme ölçümleri, hizmet ikili dosyaları ve yapılandırma dosyaları gibi hizmet meta verilerini belirtir. Başka bir ifadeyle, bir veya daha fazla hizmet türünü desteklemek için bir hizmet paketi oluşturan kod, yapılandırma ve veri paketlerini açıklar. Hizmet bildirimi, bağımsız olarak sürümlenebilen birden çok kod, yapılandırma ve veri paketi içerebilir. İşte Voting örnek uygulamasının ASP.NET Core web ön uç hizmeti için bir hizmet bildirimi (ve aşağıda daha ayrıntılı örnekler verilmiştir):

<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="VotingWebPkg"
                 Version="1.0.0"
                 xmlns="http://schemas.microsoft.com/2011/01/fabric"
                 xmlns:xsd="https://www.w3.org/2001/XMLSchema"
                 xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
  <ServiceTypes>
    <!-- This is the name of your ServiceType. 
         This name must match the string used in RegisterServiceType call in Program.cs. -->
    <StatelessServiceType ServiceTypeName="VotingWebType" />
  </ServiceTypes>

  <!-- Code package is your service executable. -->
  <CodePackage Name="Code" Version="1.0.0">
    <EntryPoint>
      <ExeHost>
        <Program>VotingWeb.exe</Program>
        <WorkingFolder>CodePackage</WorkingFolder>
      </ExeHost>
    </EntryPoint>
  </CodePackage>

  <!-- Config package is the contents of the Config directory under PackageRoot that contains an 
       independently-updateable and versioned set of custom configuration settings for your service. -->
  <ConfigPackage Name="Config" Version="1.0.0" />

  <Resources>
    <Endpoints>
      <!-- This endpoint is used by the communication listener to obtain the port on which to 
           listen. Please note that if your service is partitioned, this port is shared with 
           replicas of different partitions that are placed in your code. -->
      <Endpoint Protocol="http" Name="ServiceEndpoint" Type="Input" Port="8080" />
    </Endpoints>
  </Resources>
</ServiceManifest>

Sürüm öznitelikleri yapılandırılmamış dizelerdir ve sistem tarafından ayrıştırılmaz. Sürüm öznitelikleri, yükseltmeler için her bileşenin sürümü için kullanılır.

ServiceTypes, bu bildirimde CodePackages tarafından desteklenen hizmet türlerini bildirir. Bir hizmet bu hizmet türlerinden birinde örneklendiğinde, bu bildirimde bildirilen tüm kod paketleri giriş noktaları çalıştırılarak etkinleştirilir. Sonuçta elde edilen işlemlerin, desteklenen hizmet türlerini çalışma zamanında kaydetmesi beklenir. Hizmet türleri, kod paketi düzeyinde değil bildirim düzeyinde bildirilir. Bu nedenle, birden çok kod paketi olduğunda, sistem bildirilen hizmet türlerinden birini her ararken bunların tümü etkinleştirilir.

EntryPoint tarafından belirtilen yürütülebilir dosya genellikle uzun süre çalışan hizmet konağıdır. SetupEntryPoint , diğer giriş noktalarından önce Service Fabric (genellikle LocalSystem hesabı) ile aynı kimlik bilgileriyle çalışan ayrıcalıklı bir giriş noktasıdır. Ayrı bir kurulum giriş noktasının varlığı, hizmet ana bilgisayarını uzun süreler boyunca yüksek ayrıcalıklarla çalıştırmak zorunda kalmaktan kaçınıyor. EntryPoint tarafından belirtilen yürütülebilir dosya, SetupEntryPoint başarıyla çıktıktan sonra çalıştırılır. İşlem sonlandırılır veya kilitlenirse, sonuçta elde edilen işlem izlenir ve yeniden başlatılır (SetupEntryPoint ile yeniden başlar).

SetupEntryPoint'i kullanmaya yönelik tipik senaryolar, hizmet başlatılmadan önce yürütülebilir dosyayı çalıştırdığınız veya yükseltilmiş ayrıcalıklara sahip bir işlem gerçekleştirdiğiniz senaryolardır. Örneğin:

  • Hizmet yürütülebilir dosyasının ihtiyaç duyduğu ortam değişkenlerini ayarlama ve başlatma. Bu yalnızca Service Fabric programlama modelleri aracılığıyla yazılan yürütülebilir dosyalarla sınırlı değildir. Örneğin, npm.exe bir Node.js uygulaması dağıtmak için yapılandırılmış bazı ortam değişkenleri gerekir.
  • Güvenlik sertifikalarını yükleyerek erişim denetimini ayarlama.

SetupEntryPoint'i yapılandırma hakkında daha fazla bilgi için bkz . Hizmet kurulumu giriş noktası için ilkeyi yapılandırma.

EnvironmentVariables (önceki örnekte ayarlanmadı) bu kod paketi için ayarlanan ortam değişkenlerinin listesini sağlar. Farklı hizmet örnekleri için farklı değerler sağlamak için içinde ortam değişkenleri geçersiz kılınabilir ApplicationManifest.xml .

DataPackage (önceki örnekte ayarlanmamıştır), name özniteliği tarafından adlandırılan ve çalışma zamanında işlem tarafından kullanılacak rastgele statik veriler içeren bir klasör bildirir.

ConfigPackage, name özniteliği tarafından adlandırılan ve Settings.xml bir dosya içeren bir klasör bildirir. Ayarlar dosyası, işlemin çalışma zamanında geri okuduğu kullanıcı tanımlı anahtar-değer çifti ayarlarının bölümlerini içerir. Yükseltme sırasında yalnızca ConfigPackage sürümü değişirse, çalışan işlem yeniden başlatılmaz. Bunun yerine geri arama, yapılandırma ayarlarının dinamik olarak yeniden yüklenebilmesi için bu ayarların değiştiğini işleme bildirir. Aşağıda örnek bir Settings.xml dosyası verilmişti:

<Settings xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Section Name="MyConfigurationSection">
    <Parameter Name="MySettingA" Value="Example1" />
    <Parameter Name="MySettingB" Value="Example2" />
  </Section>
</Settings>

Service Fabric Hizmet Uç Noktası , Service Fabric Kaynağı örneğidir. Derlenen kod değiştirilmeden bir Service Fabric Kaynağı bildirilebilir/değiştirilebilir. Hizmet bildiriminde belirtilen Service Fabric Kaynaklarına erişim, uygulama bildirimindeki SecurityGroup aracılığıyla denetlenebilir. Hizmet bildiriminde bir Uç Nokta Kaynağı tanımlandığında, bir bağlantı noktası açıkça belirtilmediğinde Service Fabric ayrılmış uygulama bağlantı noktası aralığından bağlantı noktaları atar. Uç nokta kaynaklarını belirtme veya geçersiz kılma hakkında daha fazla bilgi edinin.

Uyarı

Tasarım gereği statik bağlantı noktaları ClusterManifest'te belirtilen uygulama bağlantı noktası aralığıyla çakışmamalıdır. Statik bir bağlantı noktası belirtirseniz, bunu uygulama bağlantı noktası aralığının dışına atayın, aksi takdirde bağlantı noktası çakışmaları ile sonuçlanır. 6.5CU2 sürümüyle, böyle bir çakışma algıladığımızda bir Sistem Durumu Uyarısı veririz ancak dağıtımın gönderilen 6.5 davranışıyla eşitlenmiş olarak devam etmesine izin veririz. Ancak, uygulama dağıtımını sonraki ana sürümlerden engelleyebiliriz.

ApplicationManifest.xml'de bir uygulamayı açıklama

Uygulama bildirimi, uygulama türünü ve sürümünü bildirimli olarak açıklar. Kararlı adlar, bölümleme düzeni, örnek sayısı/çoğaltma faktörü, güvenlik/yalıtım ilkesi, yerleştirme kısıtlamaları, yapılandırma geçersiz kılmaları ve bileşen hizmet türleri gibi hizmet oluşturma meta verilerini belirtir. Uygulamanın yerleştirildiği yük dengeleme etki alanları da açıklanmıştır.

Bu nedenle, bir uygulama bildirimi uygulama düzeyindeki öğeleri açıklar ve bir uygulama türü oluşturmak için bir veya daha fazla hizmet bildirimine başvurur. Voting örnek uygulamasının uygulama bildirimi aşağıda verilmiştir (ve aşağıda daha ayrıntılı örnekler verilmiştir):

<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VotingType" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="VotingData_MinReplicaSetSize" DefaultValue="3" />
    <Parameter Name="VotingData_PartitionCount" DefaultValue="1" />
    <Parameter Name="VotingData_TargetReplicaSetSize" DefaultValue="3" />
    <Parameter Name="VotingWeb_InstanceCount" DefaultValue="-1" />
  </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="VotingDataPkg" ServiceManifestVersion="1.0.0" />
    <ConfigOverrides />
  </ServiceManifestImport>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="VotingWebPkg" ServiceManifestVersion="1.0.0" />
    <ConfigOverrides />
  </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="VotingData">
      <StatefulService ServiceTypeName="VotingDataType" TargetReplicaSetSize="[VotingData_TargetReplicaSetSize]" MinReplicaSetSize="[VotingData_MinReplicaSetSize]">
        <UniformInt64Partition PartitionCount="[VotingData_PartitionCount]" LowKey="0" HighKey="25" />
      </StatefulService>
    </Service>
    <Service Name="VotingWeb" ServicePackageActivationMode="ExclusiveProcess">
      <StatelessService ServiceTypeName="VotingWebType" InstanceCount="[VotingWeb_InstanceCount]">
        <SingletonPartition />
         <PlacementConstraints>(NodeType==NodeType0)</PlacementConstraints
      </StatelessService>
    </Service>
  </DefaultServices>
</ApplicationManifest>

Hizmet bildirimleri gibi Sürüm öznitelikleri de yapılandırılmamış dizelerdir ve sistem tarafından ayrıştırılmaz. Sürüm öznitelikleri, yükseltmeler için her bileşenin sürümü için de kullanılır.

Parametreler , uygulama bildirimi boyunca kullanılan parametreleri tanımlar. Bu parametrelerin değerleri, uygulama örneği oluşturulurken sağlanabilir ve uygulama veya hizmet yapılandırma ayarlarını geçersiz kılabilir. Varsayılan parametre değeri, uygulama örneği oluşturma sırasında değerin değiştirilmemesi durumunda kullanılır. Tek tek ortamlar için farklı uygulama ve hizmet parametrelerini korumayı öğrenmek için bkz . Birden çok ortam için uygulama parametrelerini yönetme.

ServiceManifestImport , bu uygulama türünü oluşturan hizmet bildirimlerine başvurular içerir. Bir uygulama bildirimi birden çok hizmet bildirimi içeri aktarması içerebilir ve her birinin sürümü bağımsız olarak oluşturulabilir. İçeri aktarılan hizmet bildirimleri, bu uygulama türü içinde hangi hizmet türlerinin geçerli olduğunu belirler. ServiceManifestImport içinde, Settings.xml yapılandırma değerlerini ve ServiceManifest.xml dosyalarındaki ortam değişkenlerini geçersiz kılarsınız. İçeri aktarılan hizmet bildirimlerinde son nokta bağlama, güvenlik ve erişim ve paket paylaşımı için ilkeler (önceki örnekte ayarlanmamıştır) ayarlanabilir. Daha fazla bilgi için bkz . Uygulamanız için güvenlik ilkelerini yapılandırma.

DefaultServices , bir uygulama bu uygulama türüne göre her örneklendiğinde otomatik olarak oluşturulan hizmet örneklerini bildirir. Varsayılan hizmetler yalnızca kolaylık sağlar ve oluşturulduktan sonra her bakımdan normal hizmetler gibi davranır. Bunlar, uygulama örneğindeki diğer hizmetlerle birlikte yükseltilir ve kaldırılabilir. Uygulama bildirimi birden çok varsayılan hizmet içerebilir.

Uyarı

DefaultServices , yerine StartupServices.xmlkullanım dışı bırakılmıştır. service fabric uygulamasında StartupServices.xml giriş bölümünden StartupServices.xml hakkında bilgi edinebilirsiniz.

Sertifikalar (önceki örnekte ayarlanmadı) HTTPS uç noktalarını ayarlamak veya uygulama bildirimindeki gizli dizileri şifrelemek için kullanılan sertifikaları bildirir.

Yerleştirme Kısıtlamaları , hizmetlerin nerede çalıştırılacağını tanımlayan deyimlerdir. Bu deyimler, bir veya daha fazla düğüm özelliği için seçtiğiniz tek tek hizmetlere eklenir. Daha fazla bilgi için bkz . Yerleştirme kısıtlamaları ve düğüm özelliği söz dizimi.

İlkeler (önceki örnekte ayarlanmadı) hizmetlerde Service Fabric çalışma zamanına erişimi olup olmadığı da dahil olmak üzere uygulama düzeyinde ayarlanacağı günlük toplama, varsayılan farklı çalıştır, sistem durumu ve güvenlik erişim ilkelerini açıklar.

Not

Service Fabric kümesi tasarım gereği tek kiracıdır ve barındırılan uygulamalar güvenilir olarak kabul edilir. Güvenilmeyen uygulamaları barındırmayı düşünüyorsanız bkz. Service Fabric kümesinde güvenilmeyen uygulamaları barındırma.

Sorumlular (önceki örnekte ayarlanmadı) hizmetleri çalıştırmak ve hizmet kaynaklarının güvenliğini sağlamak için gereken güvenlik sorumlularını (kullanıcılar veya gruplar) açıklar. İlkeler bölümlerinde sorumlulara başvurulur.

Sonraki adımlar