Megosztás a következőn keresztül:


Service Fabric-alkalmazás és szolgáltatásjegyzékek

Ez a cikk a Service Fabric-alkalmazások és -szolgáltatások ApplicationManifest.xml és ServiceManifest.xml fájlok használatával történő meghatározását és verziószámozását ismerteti. Részletesebb példákért tekintse meg az alkalmazás- és szolgáltatásjegyzék-példákat. A jegyzékfájlok XML-sémáját a ServiceFabricServiceModel.xsd sémadokumentációja dokumentálja.

Figyelmeztetés

A jegyzék XML-fájlséma a gyermekelemek helyes sorrendjét kényszeríti ki. Részleges áthidaló megoldásként nyissa meg a "C:\Program Files\Microsoft SDKs\Service Fabric\schemas\ServiceFabricServiceModel.xsd" fájlt a Visual Studióban, miközben a Service Fabric-jegyzékek bármelyikét szerkeszti vagy módosítja. Ez lehetővé teszi, hogy ellenőrizze a gyermekelemek sorrendjét, és értelmet biztosít.

Szolgáltatás leírása ServiceManifest.xml

A szolgáltatásjegyzék deklaratív módon határozza meg a szolgáltatás típusát és verzióját. Megadja a szolgáltatás metaadatait, például a szolgáltatás típusát, az állapottulajdonságokat, a terheléselosztási metrikákat, a szolgáltatás bináris fájljait és a konfigurációs fájlokat. Másként fogalmazva leírja azokat a kódot, konfigurációt és adatcsomagokat, amelyek egy szolgáltatáscsomagot alkotnak egy vagy több szolgáltatástípus támogatásához. A szolgáltatásjegyzékek több kódot, konfigurációt és adatcsomagot tartalmazhatnak, amelyek egymástól függetlenül is verziószámozottak lehetnek. Íme egy szolgáltatásjegyzék a szavazási mintaalkalmazás ASP.NET Core webes előtér-szolgáltatásához (és íme néhány részletesebb példa):

<?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>

A verzióattribútumok strukturálatlan sztringek, és nem elemzik a rendszer. A verzióattribútumok az egyes összetevők verziószámának frissítéséhez használhatók.

A ServiceTypes deklarálja, hogy a CodePackages mely szolgáltatástípusokat támogatja ebben a jegyzékben. Amikor egy szolgáltatás példányosított egy ilyen szolgáltatástípussal, a jegyzékben deklarált összes kódcsomag a belépési pontok futtatásával aktiválódik. Az eredményként kapott folyamatok várhatóan futásidőben regisztrálják a támogatott szolgáltatástípusokat. A szolgáltatástípusok a jegyzék szintjén vannak deklarálva, nem pedig a kódcsomag szintjén. Így ha több kódcsomag is létezik, az összes aktiválva lesz, amikor a rendszer a deklarált szolgáltatástípusok bármelyikét keresi.

Az EntryPoint által megadott végrehajtható fájl általában a hosszú ideig futó szolgáltatásgazda. A SetupEntryPoint egy olyan kiemelt belépési pont, amely ugyanazokkal a hitelesítő adatokkal fut, mint a Service Fabric (általában a LocalSystem-fiók ) bármely más belépési pont előtt. Egy külön beállítási belépési pont jelenléte esetén nem kell hosszú ideig magas jogosultságokkal futtatni a szolgáltatás gazdagépét. Az EntryPoint által megadott végrehajtható fájl a SetupEntryPoint sikeres kilépése után fut. Ha a folyamat bármikor leáll vagy összeomlik, a rendszer figyeli és újraindítja az eredményül kapott folyamatot (újra a SetupEntryPointtal kezdve).

A SetupEntryPoint használatára általában akkor kerül sor, ha futtat egy végrehajtható fájlt a szolgáltatás elindítása előtt, vagy emelt szintű jogosultságokkal hajt végre egy műveletet. Példa:

  • A szolgáltatás által végrehajtható környezeti változók beállítása és inicializálása. Ez nem korlátozódik csak a Service Fabric programozási modelleken keresztül írt végrehajtható fájlokra. A npm.exe például Node.js-alkalmazások üzembe helyezéséhez konfigurált környezeti változókra van szükség.
  • Hozzáférés-vezérlés beállítása biztonsági tanúsítványok telepítésével.

A SetupEntryPoint konfigurálásáról további információt a szolgáltatásbeállítási belépési pont házirendjének konfigurálása című témakörben talál.

A (fenti példában nem szereplő) EnvironmentVariables a kódcsomaghoz beállított környezeti változók listáját tartalmazza. A környezeti változók felülírhatók a ApplicationManifest.xml különböző szolgáltatáspéldányok különböző értékeinek megadásához.

A DataPackage (amely nem szerepel az előző példában) deklarál egy, a Name attribútum által elnevezett mappát, amely tetszőleges statikus adatokat tartalmaz, amelyeket a folyamat futásidőben használ fel.

A ConfigPackage deklarál egy mappát a Name attribútummal, amely egy Settings.xml fájlt tartalmaz. A beállításfájl a felhasználó által definiált kulcs-érték pár beállításainak azon szakaszait tartalmazza, amelyeket a folyamat futásidőben olvas vissza. A frissítés során, ha csak a ConfigPackage verziója változik, a futó folyamat nem indul újra. Ehelyett a visszahívás értesíti a konfigurációs beállítások módosításának folyamatát, hogy azok dinamikusan betölthetők legyenek. Íme egy példa Settings.xml fájlra:

<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>

A Service Fabric szolgáltatásvégpont egy Service Fabric-erőforrás példája. A Service Fabric-erőforrás deklarálható/módosítható a lefordított kód módosítása nélkül. A szolgáltatásjegyzékben megadott Service Fabric-erőforrásokhoz való hozzáférés az alkalmazásjegyzékben található SecurityGroupon keresztül szabályozható. Amikor egy végponterőforrást definiál a szolgáltatásjegyzékben, a Service Fabric portokat rendel a fenntartott alkalmazásport-tartományhoz, ha a port nincs explicit módon megadva. További információ a végponterőforrások megadásáról vagy felülírásáról.

Figyelmeztetés

A tervezés során a statikus portok nem lehetnek átfedésben a ClusterManifestben megadott alkalmazásport-tartománnyal. Ha statikus portot ad meg, rendelje hozzá az alkalmazásport-tartományon kívülre, különben portütközésekhez vezet. A 6.5CU2-es kiadással állapotjelzést adunk ki, ha ilyen ütközést észlelünk, de hagyjuk, hogy az üzembe helyezés szinkronban maradjon a szállított 6.5-ös viselkedéssel. Azonban megakadályozhatjuk, hogy az alkalmazás üzembe helyezése a következő fő kiadásokban is elérhető lesz.

Alkalmazás leírása ApplicationManifest.xml

Az alkalmazásjegyzék deklaratív módon ismerteti az alkalmazás típusát és verzióját. Meghatározza a szolgáltatásösszetétel metaadatait, például a stabil neveket, a particionálási sémát, a példányszám-/replikációs tényezőt, a biztonsági/elkülönítési szabályzatot, az elhelyezési korlátozásokat, a konfiguráció felülbírálásait és a rendszerösszetevő szolgáltatástípusokat. Azokat a terheléselosztási tartományokat is ismertetjük, amelyekbe az alkalmazást helyezik.

Az alkalmazásjegyzék tehát az alkalmazás szintjén ismerteti az elemeket, és egy vagy több szolgáltatásjegyzékre hivatkozik egy alkalmazástípus megírásához. Íme a szavazási mintaalkalmazás alkalmazásjegyzéke (és íme néhány részletesebb példa):

<?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>

A szolgáltatásjegyzékekhez hasonlóan a verzióattribútumok strukturálatlan sztringek, és nem elemzik a rendszer. A verzióattribútumok az egyes összetevők verziószámának frissítéséhez is használhatók.

A paraméterek az alkalmazásjegyzékben használt paramétereket határozzák meg. Ezeknek a paramétereknek az értékei az alkalmazás példányosításakor adhatók meg, és felülbírálhatják az alkalmazás- vagy szolgáltatáskonfigurációs beállításokat. Az alapértelmezett paraméterértéket akkor használja a rendszer, ha az érték nem változik az alkalmazás példányosítása során. Az egyes környezetek különböző alkalmazás- és szolgáltatásparamétereinek karbantartásáról további információt a Több környezet alkalmazásparamétereinek kezelése című témakörben talál.

A ServiceManifestImport az ilyen alkalmazástípust alkotó szolgáltatásjegyzékekre mutató hivatkozásokat tartalmaz. Az alkalmazásjegyzékek több szolgáltatásjegyzék-importálást is tartalmazhatnak, és mindegyik külön verziószámozott lehet. Az importált szolgáltatásjegyzékek határozzák meg, hogy mely szolgáltatástípusok érvényesek ebben az alkalmazástípusban. A ServiceManifestImportban felülbírálhatja Settings.xml konfigurációs értékeit, és ServiceManifest.xml fájlok környezeti változóit. A végpontok kötésére, a biztonságra és a hozzáférésre, valamint a csomagmegosztásra vonatkozó (az előző példában nem szereplő) szabályzatok az importált szolgáltatásjegyzékeken állíthatók be. További információ: Biztonsági szabályzatok konfigurálása az alkalmazáshoz.

A DefaultServices deklarálja azokat a szolgáltatáspéldányokat, amelyek automatikusan létrejönnek, amikor egy alkalmazás példányosítva van ezzel az alkalmazástípussal. Az alapértelmezett szolgáltatások egyszerűen kezelhetők, és a létrehozásuk után minden tekintetben ugyanúgy viselkednek, mint a normál szolgáltatások. Az alkalmazáspéldány többi szolgáltatásával együtt frissülnek, és eltávolíthatók is. Az alkalmazásjegyzék több alapértelmezett szolgáltatást is tartalmazhat.

Figyelmeztetés

A DefaultServices elavult a StartupServices.xml. A StartupServices.xml bemutatása a Service Fabric-alkalmazásban című témakörben olvashat a StartupServices.xml.

A tanúsítványok (nem az előző példában vannak beállítva) deklarálja a HTTPS-végpontok beállításához vagy titkos kulcsok titkosításához használt tanúsítványokat az alkalmazásjegyzékben.

Az elhelyezési korlátozások azok az utasítások, amelyek meghatározzák a szolgáltatások futtatásának helyét. Ezek az utasítások egy vagy több csomóponttulajdonsághoz kiválasztott egyes szolgáltatásokhoz vannak csatolva. További információ: Elhelyezési korlátozások és csomóponttulajdonságok szintaxisa.

A szabályzatok (amelyek nem az előző példában vannak beállítva) az alkalmazás szintjén beállított naplógyűjtési, alapértelmezett futtatókörnyezeti, állapot- és biztonsági hozzáférési szabályzatokat ismertetik, beleértve azt is, hogy a szolgáltatás(ok) rendelkeznek-e hozzáféréssel a Service Fabric-futtatókörnyezethez.

Feljegyzés

A Service Fabric-fürt tervezés szerint egyetlen bérlő, és a üzemeltetett alkalmazások megbízhatónak minősülnek. Ha nem megbízható alkalmazások üzemeltetését fontolgatja, tekintse meg a Nem megbízható alkalmazások üzemeltetése Service Fabric-fürtökben című témakört.

A rendszerbiztonsági tagok (az előző példában nem szereplő) a szolgáltatások és a szolgáltatáserőforrások futtatásához szükséges biztonsági tagokat (felhasználókat vagy csoportokat) írják le. A rendszer a szabályzatok szakaszában hivatkozik a tagokra.

Következő lépések