Udostępnij za pośrednictwem


Przykłady manifestu aplikacji i usługi Reliable Services

Poniżej przedstawiono przykłady manifestów aplikacji i usługi dla aplikacji usługi Service Fabric z frontonem internetowym platformy ASP.NET Core i stanowym zapleczem. Celem tych przykładów jest pokazanie, jakie ustawienia są dostępne i jak ich używać. Te manifesty aplikacji i usługi są oparte na manifestach szybkiego startu platformy .NET usługi Service Fabric.

Poniżej przedstawiono następujące funkcje:

Manifest Funkcje
Manifest aplikacji zarządzanie zasobami, uruchamianie usługi jako konta administratora lokalnego, stosowanie domyślnych zasad do wszystkich pakietów kodu usługi, tworzenie jednostek użytkowników i grup, udostępnianie pakietu danych między wystąpieniami usługi, zastępowanie punktów końcowych usługi
Manifest usługi FrontEndService Uruchamianie skryptu podczas uruchamiania usługi, definiowanie punktu końcowego HTTPS
Manifest usługi BackEndService Deklarowanie pakietu konfiguracji, deklarowanie pakietu danych, konfigurowanie punktu końcowego

Zobacz Elementy manifestu aplikacji, elementy manifestu usługi VotingWeb i elementy manifestu usługi VotingData, aby uzyskać więcej informacji na temat określonych elementów XML.

Manifest aplikacji

<?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" />
    <Parameter Name="CpuCores" DefaultValue="2" />
    <Parameter Name="Memory" DefaultValue="4084" />
    <Parameter Name="BlockIOWeight" DefaultValue="200" />
    <Parameter Name="MaximumIOBandwidth" DefaultValue="1024" />
    <Parameter Name="MemoryReservationInMB" DefaultValue="1024" />
    <Parameter Name="MemorySwapInMB" DefaultValue="4084"/>
    <Parameter Name="Port" DefaultValue="8081" />
    <Parameter Name="Protocol" DefaultValue="tcp" />
    <Parameter Name="Type" DefaultValue="internal" />
  </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" />
    <!-- Override endpoints declared in the service manifest. -->
    <ResourceOverrides>
      <Endpoints>
        <Endpoint Name="DataEndpoint" Port="[Port]" Protocol="[Protocol]" Type="[Type]" />
      </Endpoints>
    </ResourceOverrides>

    <!-- Policies to be applied to the imported service manifest. -->
    <Policies>
      
      <!-- Set resource governance at the service package level. -->
      <ServicePackageResourceGovernancePolicy CpuCores="[CpuCores]" MemoryInMB="[Memory]"/>

      <!-- Set resource governance at the code package level. -->
      <ResourceGovernancePolicy CodePackageRef="Code" CpuPercent="10" MemoryInMB="[Memory]" BlockIOWeight="[BlockIOWeight]" 
                                MaximumIOBandwidth="[MaximumIOBandwidth]" MaximumIOps="[MaximumIOps]" MemoryReservationInMB="[MemoryReservationInMB]" 
                                MemorySwapInMB="[MemorySwapInMB]"/>

      <!-- Share the data package across multiple instances of the VotingData service-->
      <PackageSharingPolicy PackageRef="Data"/>

      <!-- Give read rights on the "DataEndpoint" endpoint to the Customer2 account.-->
      <SecurityAccessPolicy GrantRights="Read" PrincipalRef="Customer2" ResourceRef="DataEndpoint" ResourceType="Endpoint"/>         
    </Policies>
  </ServiceManifestImport>
  
  <!-- 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="VotingWebPkg" ServiceManifestVersion="1.0.0" />
    
    <!-- Policies to be applied to the imported service manifest. -->
    <Policies>
      <!-- Run the setup entry point (defined in the imported service manifest) as the SetupAdminUser account 
      (declared in the following Principals section). -->
      <RunAsPolicy CodePackageRef="Code" UserRef="SetupAdminUser" EntryPointType="Setup" />
      
    </Policies>

  </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 />
      </StatelessService>
    </Service>
  </DefaultServices>
  <!-- Define users and groups required to run the services and access resources.  Principals are used in the Policies section(s). -->
  <Principals>
    <!-- Declare a set of groups as security principals, which can be referenced in policies. Groups are useful if there are multiple users 
    for different service entry points and they need to have certain common privileges that are available at the group level. -->
    <Groups>
      <!-- Create a group that has administrator privileges. -->
      <Group Name="LocalAdminGroup">
        <Membership>
          <SystemGroup Name="Administrators" />
        </Membership>
      </Group>
    </Groups>
    <Users>
      <!-- Declare a user and add the user to the Administrators system group. The SetupAdminUser account is used to run the 
      setup entry point of the VotingWebPkg code package (described in the preceding Policies section).-->
      <User Name="SetupAdminUser">
        <MemberOf>
          <SystemGroup Name="Administrators" />
        </MemberOf>
      </User>
      <!-- Create a user. Local user accounts are created on the machines where the application is deployed. By default, these accounts 
      do not have the same names as those specified here. Instead, they are dynamically generated and have random passwords. -->
      <User Name="Customer1" >
        <MemberOf>
          <!-- Add the user to the local administrators group.-->
          <Group NameRef="LocalAdminGroup" />
        </MemberOf>
      </User>
      <!-- Create a user as a local user with the specified account name and password. Local user accounts are created on the machines 
      where the application is deployed. -->
      <User Name="Customer2" AccountType="LocalUser" AccountName="Customer1" Password="MyPassword">
        <MemberOf>
          <!-- Add the user to the local administrators group.-->
          <Group NameRef="LocalAdminGroup" />
        </MemberOf>
      </User>
      <!-- Create a user as NetworkService. -->
      <User Name="MyDefaultAccount" AccountType="NetworkService" />      
    </Users>
  </Principals>
  <!-- Policies applied at the application level. -->
  <Policies>
    <!-- Specify a default user account for all code packages that don’t have a specific RunAsPolicy defined in 
    the ServiceManifestImport section(s). -->
    <DefaultRunAsPolicy UserRef="MyDefaultAccount" />
    
  </Policies>
</ApplicationManifest>

Manifest usługi VotingWeb

<?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">
    <!-- A privileged entry point that by default runs with the same credentials as Service Fabric (typically the NetworkService account) before 
    any other entry point. Use the setup entry point to set system environment variables, give the account running the service (NETWORK SERVICE, by default) 
    access to a certificate's private key, or perform other setup tasks. In the application manifest, you can change the security permissions to run the startup script 
    under a local system account or an administrator account.  -->
    <SetupEntryPoint>
      <ExeHost>
        <!-- The setup script to run. -->
        <Program>Setup.bat</Program>
        <!-- Pass arguments to the script when it runs.-->
        <Arguments>MyValue</Arguments>
        <!-- The working directory for the process in the code package on the node where the application is deployed. CodePackage sets the working directory to be 
        the root of the code package regardless of where the EXE is defined in the code package directory. This is where the processes can write the data. Writing data 
        in the code package or code base is not recommended as those folders could be shared between different application instances and may get deleted.-->
        <WorkingFolder>CodePackage</WorkingFolder>
        <!-- Warning! Do not use console redirection in a production application, only use it for local development and debugging. Redirects console output from the startup
        script to an output file in the application folder called "log" on the cluster node where the application is deployed and run. Also set the number of output files
        to retain and the maximum file size (in KB). -->
        <ConsoleRedirection FileRetentionCount="10" FileMaxSizeInKb="20480"/>
      </ExeHost>
    </SetupEntryPoint>
    <EntryPoint>
      <ExeHost>
        <Program>VotingWeb.exe</Program>
        <!-- The working directory for the process in the code package on the node where the application is deployed. CodePackage sets the working directory to be 
        the root of the code package regardless of where the EXE is defined in the code package directory. This is where the processes can write the data. Writing data 
        in the code package or code base is not recommended as those folders could be shared between different application instances and may get deleted.-->
        <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>
      <!-- Configure a HTTPS endpoint on port 443. 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="https" Name="EndpointHttps" Type="Input" Port="443" />
    </Endpoints>
  </Resources>
</ServiceManifest>

Manifest usługi VotingData

<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="VotingDataPkg"
                 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. -->
    <StatefulServiceType ServiceTypeName="VotingDataType"  HasPersistedState="true" />
  </ServiceTypes>

  <!-- Code package is your service executable. -->
  <CodePackage Name="Code" Version="1.0.0">
    <EntryPoint>
      <ExeHost>
        <Program>VotingData.exe</Program>
        <!-- The working directory for the process in the code package on the node where the application is deployed. CodePackage sets the working directory to be 
        the root of the code package regardless of where the EXE is defined in the code package directory. This is where the processes can write the data. Writing data 
        in the code package or code base is not recommended as those folders could be shared between different application instances and may get deleted.-->
        <WorkingFolder>CodePackage</WorkingFolder>
      </ExeHost>
    </EntryPoint>
  </CodePackage>

  <!-- Declares a folder, named by the Name attribute, under PackageRoot that contains a Settings.xml file. This file contains sections of user-defined, 
  key-value pair settings that the process can read back at run time. During an upgrade, if only the ConfigPackage version has changed, 
  then the running process is not restarted. Instead, a callback notifies the process that configuration settings have changed so they can be reloaded dynamically. -->
  <ConfigPackage Name="Config" Version="1.0.0" />
  
  <!-- Declares a folder, named by the Name attribute, under PackageRoot which contains static data files to be consumed by the process at run time. -->
  <DataPackage Name="Data" Version="1.0.0"/>

  <Resources>
    <Endpoints>
      <!-- Define an internal (used for intra-application communication) TCP endpoint. Since no port is specified, one is created and assigned dynamically
           to the service.-->
      <Endpoint Name="DataEndpoint" Protocol="tcp" Type="Internal" />
    </Endpoints>
  </Resources>

</ServiceManifest>

Elementy manifestu aplikacji

ApplicationManifest, element

Deklaratywnie opisuje typ i wersję aplikacji. Do tworzenia typu aplikacji odwołuje się co najmniej jeden manifest usługi składowej. Ustawienia konfiguracji usług składowych można zastąpić przy użyciu sparametryzowanych ustawień aplikacji. Domyślne usługi, szablony usług, jednostki, zasady, konfiguracja diagnostyki i certyfikaty można również zadeklarować na poziomie aplikacji. Aby uzyskać więcej informacji, zobacz ApplicationManifest, element

Parameters, element

Deklaruje parametry używane w tym manifeście aplikacji. Wartość tych parametrów można podać, gdy aplikacja jest tworzone i może służyć do zastępowania ustawień konfiguracji aplikacji lub usługi. Aby uzyskać więcej informacji, zobacz Parameters, element

Parameter — Element

Parametr aplikacji do użycia w tym manifeście. Wartość parametru można zmienić podczas tworzenia wystąpienia aplikacji lub, jeśli nie podano wartości domyślnej. Aby uzyskać więcej informacji, zobacz Element parametru

ServiceManifestImport, element

Importuje manifest usługi utworzony przez dewelopera usługi. Manifest usługi musi zostać zaimportowany dla każdej usługi składowej w aplikacji. Przesłonięcia konfiguracji i zasady można zadeklarować dla manifestu usługi. Aby uzyskać więcej informacji, zobacz ServiceManifestImport, element

ServiceManifestRef, element

Importuje manifest usługi według odwołania. Obecnie plik manifestu usługi (ServiceManifest.xml) musi znajdować się w pakiecie kompilacji. Aby uzyskać więcej informacji, zobacz ServiceManifestRef, element

ResourceOverrides, element

Określa przesłonięcia zasobów dla punktów końcowych zadeklarowanych w zasobach manifestu usługi. Aby uzyskać więcej informacji, zobacz ResourceOverrides, element

Endpoints, element

Punkty końcowe do zastąpienia. Aby uzyskać więcej informacji, zobacz Endpoints, element

Element punktu końcowego

Punkt końcowy zadeklarowany w manifeście usługi, aby zastąpić. Aby uzyskać więcej informacji, zobacz Element punktu końcowego

Policies, element

Opisuje zasady (powiązanie punktu końcowego, udostępnianie pakietów, uruchamianie jako i dostęp zabezpieczeń) do zastosowania w zaimportowanym manifeście usługi. Aby uzyskać więcej informacji, zobacz Policies, element

ServicePackageResourceGovernancePolicy, element

Definiuje zasady ładu zasobów, które są stosowane na poziomie całego pakietu usług. Aby uzyskać więcej informacji, zobacz ServicePackageResourceGovernancePolicy, element

ResourceGovernancePolicy, element

Określa limity zasobów dla pakietu kodu. Aby uzyskać więcej informacji, zobacz ResourceGovernancePolicy, element

PackageSharingPolicy, element

Wskazuje, czy kod, konfiguracja lub pakiet danych powinien być współużytkowany między wystąpieniami usługi tego samego typu usługi. Aby uzyskać więcej informacji, zobacz PackageSharingPolicy, element

SecurityAccessPolicy, element

Udziela uprawnień dostępu do jednostki w zasobie (takim jak punkt końcowy) zdefiniowanym w manifeście usługi. Zazwyczaj bardzo przydatne jest kontrolowanie i ograniczanie dostępu do usług do różnych zasobów w celu zminimalizowania ryzyka bezpieczeństwa. Jest to szczególnie ważne, gdy aplikacja jest tworzona na podstawie kolekcji usług z platformy handlowej, które są opracowywane przez różnych deweloperów. Aby uzyskać więcej informacji, zobacz SecurityAccessPolicy, element

RunAsPolicy, element

Określa konto użytkownika lokalnego lub lokalnego systemu, w ramach którego zostanie uruchomiony pakiet kodu usługi. Konta domeny są obsługiwane we wdrożeniach systemu Windows Server, w których jest dostępny identyfikator Entra firmy Microsoft. Domyślnie aplikacje są uruchamiane na koncie, w ramach którego działa proces Fabric.exe. Aplikacje mogą być również uruchamiane jako inne konta, które muszą być zadeklarowane w sekcji Podmioty zabezpieczeń. Jeśli zastosujesz zasady Uruchom jako do usługi, a manifest usługi deklaruje zasoby punktu końcowego przy użyciu protokołu HTTP, należy również określić zasadę SecurityAccessPolicy, aby upewnić się, że porty przydzielone do tych punktów końcowych są prawidłowo kontrolowane przez użytkownika wymienione dla konta użytkownika Uruchom jako uruchomione przez usługę. W przypadku punktu końcowego HTTPS należy również zdefiniować punkt końcowyBindingPolicy, aby wskazać nazwę certyfikatu, który ma powrócić do klienta. Aby uzyskać więcej informacji, zobacz RunAsPolicy, element

DefaultServices, element

Deklaruje wystąpienia usługi, które są tworzone automatycznie za każdym razem, gdy aplikacja zostanie utworzona wystąpienie względem tego typu aplikacji. Aby uzyskać więcej informacji, zobacz DefaultServices, element

Service, element

Deklaruje usługę, która ma zostać utworzona automatycznie po utworzeniu wystąpienia aplikacji. Aby uzyskać więcej informacji, zobacz Service, element

StatefulService, element

Definiuje usługę stanową. Aby uzyskać więcej informacji, zobacz StatefulService, element

StatelessService, element

Definiuje usługę bezstanową. Aby uzyskać więcej informacji, zobacz StatelessService, element

Principals, element

Opisuje podmioty zabezpieczeń (użytkowników, grupy) wymagane dla tej aplikacji do uruchamiania usług i zabezpieczania zasobów. Podmioty zabezpieczeń są przywołyne w sekcjach zasad. Aby uzyskać więcej informacji, zobacz Principals, element

Groups, element

Deklaruje zestaw grup jako podmiotów zabezpieczeń, do których można się odwoływać w zasadach. Grupy są przydatne, jeśli istnieje wielu użytkowników dla różnych punktów wejścia usługi i muszą mieć pewne wspólne uprawnienia, które są dostępne na poziomie grupy. Aby uzyskać więcej informacji, zobacz Groups, element

Group, element

Deklaruje grupę jako podmiot zabezpieczeń, do którego można się odwoływać w zasadach. Aby uzyskać więcej informacji, zobacz Group, element

Element członkostwa

Aby uzyskać więcej informacji, zobacz Element członkostwa

SystemGroup, element

Aby uzyskać więcej informacji, zobacz SystemGroup, element

Users, element

Deklaruje zestaw użytkowników jako podmioty zabezpieczeń, do których można się odwoływać w zasadach. Aby uzyskać więcej informacji, zobacz Users, element

User, element

Deklaruje użytkownika jako podmiot zabezpieczeń, do którego można się odwoływać w zasadach. Aby uzyskać więcej informacji, zobacz User, element

MemberOf, element

Użytkownicy mogą być dodawani do dowolnej istniejącej grupy członkostwa, dzięki czemu mogą dziedziczyć wszystkie właściwości i ustawienia zabezpieczeń tej grupy członkostwa. Grupa członkostwa może służyć do zabezpieczania zasobów zewnętrznych, które muszą być dostępne przez różne usługi lub tę samą usługę (na innym komputerze). Aby uzyskać więcej informacji, zobacz MemberOf, element

SystemGroup, element

Grupa systemowa, do których ma zostać dodany użytkownik. Grupa systemowa musi być zdefiniowana w sekcji Grupy. Aby uzyskać więcej informacji, zobacz SystemGroup, element

Group, element

Grupa do dodania użytkownika. Grupa musi być zdefiniowana w sekcji Grupy. Aby uzyskać więcej informacji, zobacz Group, element

Policies, element

Opisuje zasady (zbieranie dzienników, domyślne uruchamianie jako, kondycja i dostęp zabezpieczeń) do zastosowania na poziomie aplikacji. Aby uzyskać więcej informacji, zobacz Policies, element

DefaultRunAsPolicy, element

Określ domyślne konto użytkownika dla wszystkich pakietów kodu usługi, które nie mają określonego elementu RunAsPolicy zdefiniowanego w sekcji ServiceManifestImport. Aby uzyskać więcej informacji, zobacz DefaultRunAsPolicy, element

Elementy manifestu usługi VotingWeb

ServiceManifest, element

Deklaratywnie opisuje typ i wersję usługi. Zawiera on listę niezależnie uaktualnianego kodu, konfiguracji i pakietów danych, które razem tworzą pakiet usługi w celu obsługi co najmniej jednego typu usługi. Określono również zasoby, ustawienia diagnostyczne i metadane usługi, takie jak typ usługi, właściwości kondycji i metryki równoważenia obciążenia. Aby uzyskać więcej informacji, zobacz ServiceManifest, element

ServiceTypes, element

Definiuje typy usług obsługiwane przez pakiet CodePackage w tym manifeście. Po utworzeniu wystąpienia usługi względem jednego z tych typów usług wszystkie pakiety kodu zadeklarowane w tym manifeście są aktywowane przez uruchomienie punktów wejścia. Typy usług są deklarowane na poziomie manifestu, a nie na poziomie pakietu kodu. Aby uzyskać więcej informacji, zobacz ServiceTypes, element

StatelessServiceType, element

Opisuje typ usługi bezstanowej. Aby uzyskać więcej informacji, zobacz StatelessServiceType, element

CodePackage, element

Opisuje pakiet kodu obsługujący zdefiniowany typ usługi. Po utworzeniu wystąpienia usługi względem jednego z tych typów usług wszystkie pakiety kodu zadeklarowane w tym manifeście są aktywowane przez uruchomienie punktów wejścia. Oczekuje się, że wynikowe procesy będą rejestrować obsługiwane typy usług w czasie wykonywania. Gdy istnieje wiele pakietów kodu, wszystkie są aktywowane za każdym razem, gdy system szuka dowolnego z zadeklarowanych typów usług. Aby uzyskać więcej informacji, zobacz CodePackage, element

SetupEntryPoint, element

Uprzywilejowany punkt wejścia, który domyślnie jest uruchamiany z tymi samymi poświadczeniami co usługa Service Fabric (zazwyczaj konto NETWORKSERVICE) przed innym punktem wejścia. Plik wykonywalny określony przez program EntryPoint jest zazwyczaj długotrwałym hostem usługi. Obecność oddzielnego punktu wejścia konfiguracji pozwala uniknąć konieczności uruchamiania hosta usługi z wysokimi uprawnieniami przez dłuższy czas. Aby uzyskać więcej informacji, zobacz SetupEntryPoint, element

ExeHost, element

Aby uzyskać więcej informacji, zobacz ExeHost, element

Program, element

Nazwa pliku wykonywalnego. Na przykład "MySetup.bat" lub "MyServiceHost.exe". Aby uzyskać więcej informacji, zobacz Program, element

Argumenty, element

Aby uzyskać więcej informacji, zobacz Arguments, element

WorkingFolder, element

Katalog roboczy procesu w pakiecie kodu w węźle klastra, w którym jest wdrażana aplikacja. Można określić trzy wartości: Work (wartość domyślna), CodePackage lub CodeBase. CodeBase określa, że katalog roboczy jest ustawiony na katalog, w którym plik EXE jest zdefiniowany w pakiecie kodu. Pakiet CodePackage ustawia katalog roboczy jako katalog główny pakietu kodu niezależnie od tego, gdzie plik EXE jest zdefiniowany w katalogu pakietu kodu. Praca ustawia katalog roboczy na unikatowy folder utworzony w węźle. Ten folder jest taki sam dla całego wystąpienia aplikacji. Domyślnie katalog roboczy wszystkich procesów w aplikacji jest ustawiony na folder roboczy aplikacji. W tym miejscu procesy mogą zapisywać dane. Zapisywanie danych w pakiecie kodu lub bazie kodu nie jest zalecane, ponieważ te foldery mogą być współużytkowane między różnymi wystąpieniami aplikacji i mogą zostać usunięte. Aby uzyskać więcej informacji, zobacz WorkingFolder, element

ConsoleRedirection, element

Ostrzeżenie

Nie używaj przekierowania konsoli w aplikacji produkcyjnej, używaj jej tylko do lokalnego programowania i debugowania. Przekierowuje dane wyjściowe konsoli ze skryptu uruchamiania do pliku wyjściowego w folderze aplikacji o nazwie "log" w węźle klastra, w którym aplikacja jest wdrażana i uruchamiana. Aby uzyskać więcej informacji, zobacz ConsoleRedirection, element

EntryPoint, element

Plik wykonywalny określony przez program EntryPoint jest zazwyczaj długotrwałym hostem usługi. Obecność oddzielnego punktu wejścia konfiguracji pozwala uniknąć konieczności uruchamiania hosta usługi z wysokimi uprawnieniami przez dłuższy czas. Plik wykonywalny określony przez program EntryPoint jest uruchamiany po pomyślnym zakończeniu instalacjiEntryPoint. Wynikowy proces jest monitorowany i uruchamiany ponownie (począwszy od instalatoraEntryPoint), jeśli kiedykolwiek zakończy się lub ulegnie awarii. Aby uzyskać więcej informacji, zobacz EntryPoint, element

ExeHost, element

Aby uzyskać więcej informacji, zobacz ExeHost, element

ConfigPackage, element

Deklaruje folder o nazwie według atrybutu Name w obszarze PackageRoot, który zawiera plik Settings.xml. Ten plik zawiera sekcje ustawień pary klucz-wartość zdefiniowanych przez użytkownika, które proces może odczytywać w czasie wykonywania. Jeśli podczas uaktualniania zmieniono tylko wersję pakietu ConfigPackage, uruchomiony proces nie zostanie uruchomiony ponownie. Zamiast tego wywołanie zwrotne powiadamia proces, że ustawienia konfiguracji zostały zmienione, aby można było je ponownie załadować dynamicznie. Aby uzyskać więcej informacji, zobacz ConfigPackage, element

Resources, element

Opisuje zasoby używane przez tę usługę, które można zadeklarować bez modyfikowania skompilowanego kodu i zmieniane podczas wdrażania usługi. Dostęp do tych zasobów jest kontrolowany za pośrednictwem sekcji Podmioty zabezpieczeń i zasady manifestu aplikacji. Aby uzyskać więcej informacji, zobacz Resources, element

Endpoints, element

Definiuje punkty końcowe dla usługi. Aby uzyskać więcej informacji, zobacz Endpoints, element

Element punktu końcowego

Punkt końcowy zadeklarowany w manifeście usługi, aby zastąpić. Aby uzyskać więcej informacji, zobacz Element punktu końcowego

Elementy manifestu usługi VotingData

ServiceManifest, element

Deklaratywnie opisuje typ i wersję usługi. Zawiera on listę niezależnie uaktualnianego kodu, konfiguracji i pakietów danych, które razem tworzą pakiet usługi w celu obsługi co najmniej jednego typu usługi. Określono również zasoby, ustawienia diagnostyczne i metadane usługi, takie jak typ usługi, właściwości kondycji i metryki równoważenia obciążenia. Aby uzyskać więcej informacji, zobacz ServiceManifest, element

ServiceTypes, element

Definiuje typy usług obsługiwane przez pakiet CodePackage w tym manifeście. Po utworzeniu wystąpienia usługi względem jednego z tych typów usług wszystkie pakiety kodu zadeklarowane w tym manifeście są aktywowane przez uruchomienie punktów wejścia. Typy usług są deklarowane na poziomie manifestu, a nie na poziomie pakietu kodu. Aby uzyskać więcej informacji, zobacz ServiceTypes, element

StatefulServiceType, element

Opisuje stanowy typ usługi. Aby uzyskać więcej informacji, zobacz StatefulServiceType, element

CodePackage, element

Opisuje pakiet kodu obsługujący zdefiniowany typ usługi. Po utworzeniu wystąpienia usługi względem jednego z tych typów usług wszystkie pakiety kodu zadeklarowane w tym manifeście są aktywowane przez uruchomienie punktów wejścia. Oczekuje się, że wynikowe procesy będą rejestrować obsługiwane typy usług w czasie wykonywania. Gdy istnieje wiele pakietów kodu, wszystkie są aktywowane za każdym razem, gdy system szuka dowolnego z zadeklarowanych typów usług. Aby uzyskać więcej informacji, zobacz CodePackage, element

EntryPoint, element

Plik wykonywalny określony przez program EntryPoint jest zazwyczaj długotrwałym hostem usługi. Obecność oddzielnego punktu wejścia konfiguracji pozwala uniknąć konieczności uruchamiania hosta usługi z wysokimi uprawnieniami przez dłuższy czas. Plik wykonywalny określony przez program EntryPoint jest uruchamiany po pomyślnym zakończeniu instalacjiEntryPoint. Wynikowy proces jest monitorowany i uruchamiany ponownie (począwszy od instalatoraEntryPoint), jeśli kiedykolwiek zakończy się lub ulegnie awarii. Aby uzyskać więcej informacji, zobacz EntryPoint, element

ExeHost, element

Aby uzyskać więcej informacji, zobacz ExeHost, element

Program, element

Nazwa pliku wykonywalnego. Na przykład "MySetup.bat" lub "MyServiceHost.exe". Aby uzyskać więcej informacji, zobacz Program, element

WorkingFolder, element

Katalog roboczy procesu w pakiecie kodu w węźle klastra, w którym jest wdrażana aplikacja. Można określić trzy wartości: Work (wartość domyślna), CodePackage lub CodeBase. CodeBase określa, że katalog roboczy jest ustawiony na katalog, w którym plik EXE jest zdefiniowany w pakiecie kodu. Pakiet CodePackage ustawia katalog roboczy jako katalog główny pakietu kodu niezależnie od tego, gdzie plik EXE jest zdefiniowany w katalogu pakietu kodu. Praca ustawia katalog roboczy na unikatowy folder utworzony w węźle. Ten folder jest taki sam dla całego wystąpienia aplikacji. Domyślnie katalog roboczy wszystkich procesów w aplikacji jest ustawiony na folder roboczy aplikacji. W tym miejscu procesy mogą zapisywać dane. Zapisywanie danych w pakiecie kodu lub bazie kodu nie jest zalecane, ponieważ te foldery mogą być współużytkowane między różnymi wystąpieniami aplikacji i mogą zostać usunięte. Aby uzyskać więcej informacji, zobacz WorkingFolder, element

ConfigPackage, element

Deklaruje folder o nazwie według atrybutu Name w obszarze PackageRoot, który zawiera plik Settings.xml. Ten plik zawiera sekcje ustawień pary klucz-wartość zdefiniowanych przez użytkownika, które proces może odczytywać w czasie wykonywania. Jeśli podczas uaktualniania zmieniono tylko wersję pakietu ConfigPackage, uruchomiony proces nie zostanie uruchomiony ponownie. Zamiast tego wywołanie zwrotne powiadamia proces, że ustawienia konfiguracji zostały zmienione, aby można było je ponownie załadować dynamicznie. Aby uzyskać więcej informacji, zobacz ConfigPackage, element

DataPackage, element

Deklaruje folder o nazwie według atrybutu Name w obszarze PackageRoot, który zawiera pliki danych statycznych, które mają być używane przez proces w czasie wykonywania. Usługa Service Fabric będzie odtwarzać wszystkie pliki EXEs i DLLHOSTs określone w hostach i pakietach pomocy technicznej po uaktualnieniu dowolnego z pakietów danych wymienionych w manifeście usługi. Aby uzyskać więcej informacji, zobacz DataPackage, element

Resources, element

Opisuje zasoby używane przez tę usługę, które można zadeklarować bez modyfikowania skompilowanego kodu i zmieniane podczas wdrażania usługi. Dostęp do tych zasobów jest kontrolowany za pośrednictwem sekcji Podmioty zabezpieczeń i zasady manifestu aplikacji. Aby uzyskać więcej informacji, zobacz Resources, element

Endpoints, element

Definiuje punkty końcowe dla usługi. Aby uzyskać więcej informacji, zobacz Endpoints, element

Element punktu końcowego

Punkt końcowy zadeklarowany w manifeście usługi, aby zastąpić. Aby uzyskać więcej informacji, zobacz Element punktu końcowego