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