Uygulama ve hizmet bildirimlerini Service Fabric

Bu makalede, ApplicationManifest.xml ve ServiceManifest.xml dosyalarını kullanarak uygulama ve hizmetlerin Service Fabric nasıl tanımlandığı ve sürümü oluşturulduğu açıklanmaktadır. Daha ayrıntılı örnekler için bkz. uygulama ve hizmet bildirimi örnekleri. Bu bildirim dosyaları için XML şeması Servicefabricservicemodel. xsd şema belgelerindebelgelenmiştir.

Uyarı

Manifest XML dosya şeması alt öğelerin doğru sıralamasını zorlar. Kısmi bir geçici çözüm olarak, Service Fabric bildirimlerini 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ıralamasını kontrol etmeniz ve ıntellı bir fikir sağlar.

ServiceManifest.xml bir hizmeti açıkla

Hizmet bildirimi, hizmet türünü ve sürümü 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 yöntem de, bir veya daha fazla hizmet türünü desteklemek üzere bir hizmet paketi oluşturan kod, yapılandırma ve veri paketlerini açıklar. Bir hizmet bildirimi, bağımsız olarak sürümlü birden çok kod, yapılandırma ve veri paketleri içerebilir. Aşağıda, Oylama örnek uygulamasının ASP.NET Core Web ön uç hizmeti için bir hizmet bildirimi verilmiştir (ve daha ayrıntılı örnekleraşağıda 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, her bileşenin yükseltme için sürümü için kullanılır.

ServiceType , bu bildirimde codepackages tarafından desteklenen hizmet türlerini bildirir. Bu hizmet türlerinden birine karşı bir hizmet örneği oluşturulduğunda, bu bildirimde belirtilen 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 bildirildi. Bu nedenle, birden çok kod paketi olduğunda, sistem bildirilen hizmet türlerinden herhangi birini her arayınca bunların hepsi etkinleştirilir.

EntryPoint tarafından belirtilen yürütülebilir dosya genellikle uzun süre çalışan hizmet ana bilgisayarıdır. SetupEntryPoint, başka bir giriş noktasından önce Service Fabric kimlik bilgileriyle (genellikle LocalSystem hesabı) çalışan ayrıcalıklı bir giriş noktasıdır. Ayrı bir kurulum giriş noktasının olması, uzun süreler boyunca yüksek ayrıcalıklarla hizmet ana bilgisayarı çalıştırmak zorunda kalmamaktır. EntryPoint tarafından belirtilen yürütülebilir dosya, SetupEntryPoint başarıyla çıkıldıktan sonra çalıştırılıyor. İş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 kullanmaya yönelik tipik senaryolar, hizmet başlamadan önce bir yürütülebilir dosyayı çalıştırmanız veya yükseltilmiş ayrıcalıklarla bir işlem gerçekleştirmenizdir. Örnek:

  • Hizmet yürütülebilir dosyası için gereken 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 uygulama dağıtmak için yapılandırılmış bazı ortam değişkenlerine node.js gerekir.
  • Güvenlik sertifikalarını yükleyerek erişim denetimi 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 ayarlanmaz) bu kod paketi için ayarlanmış ortam değişkenlerinin bir listesini sağlar. Ortam değişkenleri, farklı hizmet örnekleri için ApplicationManifest.xml farklı değerler sağlamak için içinde geçersiz kılınabilir.

DataPackage (önceki örnekte ayarlı değil), çalışma zamanında işlem tarafından tüketilen rastgele statik verileri içeren Name özniteliğiyle adlandırılan bir klasörü bildirir.

Configpackage , bir Settings.xml dosyası içeren Name özniteliğiyle adlandırılan bir klasörü bildirir. Ayarlar dosyası, Kullanıcı tanımlı, anahtar-değer çifti ayarlarının, işlemin çalışma zamanında geri okuduğu bölümler içerir. Yükseltme sırasında, yalnızca Configpackage sürümü değiştiyse, çalışan işlem yeniden başlatılmaz. Bunun yerine, bir geri çağırma işlemi, dinamik olarak yeniden yüklenmesi için yapılandırma ayarlarının değiştiği süreci bilgilendirir. Aşağıda bir örnek Settings.xml dosyası verilmiştir:

<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 hizmeti uç noktası bir Service Fabric kaynağına örnektir. Bir Service Fabric kaynak, derlenen kod değiştirilmeden bildirilemez/değiştirilebilir. Hizmet bildiriminde belirtilen Service Fabric kaynaklarına erişim uygulama bildiriminde SecurityGroup aracılığıyla denetlenebilir. Hizmet bildiriminde bir uç nokta kaynağı tanımlandığında Service Fabric, bir bağlantı noktası açıkça belirtilmediğinde, ayrılmış uygulama bağlantı noktası aralığından bağlantı noktaları atar. Uç nokta kaynaklarını belirtme veya geçersiz kılmahakkında daha fazla bilgi edinin.

Uyarı

Tasarım statik bağlantı noktaları, kümele bildiriminde belirtilen uygulama bağlantı noktası aralığıyla çakışmamalıdır. Statik bir bağlantı noktası belirtirseniz, uygulamayı uygulama bağlantı noktası aralığı dışında atarsanız, bağlantı noktası çakışmalarına neden olur. Sürüm 6.5 CU2 UYGULAMAZSANıZ, bu tür bir çakışmayı tespit ettiğimiz ancak dağıtımın sevk edilen 6,5 davranışı ile eşitlenmiş halde devam etmesine izin veren bir sistem durumu uyarısı vereceğiz. Ancak, uygulama dağıtımını bir sonraki Ana sürümlerden önleyebiliriz.

ApplicationManifest.xml bir uygulamayı açıkla

Uygulama bildiriminde, uygulama türü ve sürümü bildirimli olarak açıklanmaktadır. 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 bağlı hizmet türleri gibi hizmet oluşturma meta verilerini belirtir. Uygulamanın yerleştiril olduğu yük dengeleme etki alanları da açıklanmıştır.

Bu nedenle, bir uygulama bildirimi uygulama düzeyinde öğeleri açıklar ve bir uygulama türü oluşturmak için bir veya daha fazla hizmet bildirimine başvurur. Voting örnek uygulamasına ilişkin uygulama bildirimi aşağıda 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ırlanmaz. Sürüm öznitelikleri, yükseltmeler için her bileşeni sürüme almak için de kullanılır.

Parametreler, uygulama bildirimi boyunca kullanılan parametreleri tanımlar. Bu parametrelerin değerleri, uygulama örneği yapılandırmasını sağladığında sağlanmalıdır ve uygulama veya hizmet yapılandırma ayarlarını geçersiz kabilirsiniz. Uygulama örneği sırasında değer değiştirilemezse varsayılan parametre değeri 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, her biri bağımsız olarak sürüme edilebilir. İçe aktarılan hizmet bildirimleri, bu uygulama türü içinde geçerli olan hizmet türlerini belirler. ServiceManifestImport içinde, dosyalarda bulunan Settings.xml ve ortam değişkenlerini ServiceManifest.xml geçersiz kılarsınız. nokta bağlama, güvenlik ve erişim ve paket paylaşımına yönelik ilkeler (önceki örnekte ayarlanmaz) içe aktarılan hizmet bildirimlerini de işaret ediyor olabilir. Daha fazla bilgi için bkz. Uygulamanıza yönelik güvenlik ilkelerini yapılandırma.

DefaultServices , bu uygulama türüne karşı her uygulama oluşturulduğunda otomatik olarak oluşturulan hizmet örneklerini bildirir. Varsayılan hizmetler, yalnızca bir kolaydır ve oluşturulduktan sonra her bakımdan normal hizmetler gibi davranır. Bunlar, uygulama örneğindeki diğer hizmetlerle birlikte yükseltilecektir ve de kaldırılabilir. Bir uygulama bildiriminde birden çok varsayılan hizmet bulunabilir.

Sertifikalar (önceki örnekte ayarlı değil), https uç noktalarını kurmak veya uygulama bildiriminde gizli dizileri şifrelemekiçin kullanılan sertifikaları bildirir.

Yerleştirme kısıtlamaları , hizmetlerin nerede çalışacağını tanımlayan deyimlerdir. Bu deyimler bir veya daha fazla düğüm özelliği için seçtiğiniz ayrı hizmetlere iliştirilir. Daha fazla bilgi için bkz. yerleştirme kısıtlamaları ve Node özelliği sözdizimi

İlkeler (önceki örnekte ayarlı değil), uygulamaların Service Fabric çalışma zamanına erişimi olup olmadığı dahil olmak üzere, uygulama düzeyinde ayarlanacak günlük toplama, varsayılan farklı çalıştır, sağlıkve güvenlik erişim ilkelerini açıklar.

Not

Varsayılan olarak, Service Fabric uygulamalar, uygulamaya özgü istekleri kabul eden bir uç nokta biçiminde Service Fabric çalışma zamanına ve yapı ve uygulamaya özgü dosyaları içeren konaktaki dosya yollarına işaret eden ortam değişkenlerine erişebilir. Uygulama güvenilmeyen kod barındırınca bu erişimi devre dışı bırakmayı düşünün (örneğin, provenance bilinmiyor veya uygulama sahibinin yürütülmesi güvenli olmadığı bilen kod). Daha fazla bilgi için lütfen Service Fabric en iyi güvenlik uygulamalarıbölümüne bakın.

Sorumlular (önceki örnekte ayarlı değil) Hizmetleri ve hizmet kaynaklarını güvenli halegetirmek için gereken güvenlik sorumlularını (Kullanıcı veya gruplar) anlatmaktadır. Sorumlular ilkeler bölümlerinde başvurulur.

Sonraki adımlar