Ejemplos de manifiesto de servicio y de aplicación de servicios confiables
Los siguientes son ejemplos de los manifiestos de aplicación y de servicio para una aplicación de Service Fabric con un front-end web de ASP.NET Core y un back-end con estado. El propósito de estos ejemplos es mostrar qué opciones están disponibles y cómo usarlas. Estos manifiestos de aplicación y de servicio se basan en los manifiestos de la Guía de inicio rápido de Service Fabric .NET.
Se muestran las características siguientes:
Manifest | Características |
---|---|
Manifiesto de aplicación | gobernanza de recursos, ejecutar un servicio como una cuenta de administrador local, aplicar una directiva predeterminada para todos los paquetes de código de servicio, crear entidades de seguridad de usuario y grupo, compartir un paquete de datos entre instancias de servicio, invalidar los extremos de servicio |
Manifiesto del servicio FrontEndService | Ejecutar un script al inicio del servicio, definir un punto de conexión HTTPS |
Manifiesto del servicio BackEndService | Declarar un paquete de configuración, declarar un paquete de datos, configurar un punto de conexión |
Consulte Elementos del manifiesto de aplicación, Elementos del manifiesto del servicio VotingWeb, y Elementos del manifiesto del servicio VotingData para más información sobre elementos específicos XML.
Manifiesto de aplicación
<?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>
Manifiesto del servicio 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>
Manifiesto del servicio 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>
Elementos del manifiesto de aplicación
Elemento ApplicationManifest
Describe mediante declaración el tipo de aplicación y la versión. Para crear un tipo de aplicación, se hace referencia a uno o varios manifiestos de servicio de los servicios constituyentes. Los valores de configuración de los servicios constituyentes pueden invalidarse mediante la configuración de aplicación parametrizada. También se pueden declarar servicios predeterminados, plantillas de servicio, entidades de seguridad, directivas, configuraciones de diagnóstico y certificados en el nivel de aplicación. Para más información, consulte Elemento ApplicationManifest
Elemento Parameters
Declara los parámetros que se usan en este manifiesto de aplicación. El valor de estos parámetros puede proporcionarse cuando se crea una instancia de la aplicación y se puede usar para invalidar los valores de configuración del servicio o de la aplicación. Para más información, consulte Elemento Parameters
Elemento Parameter
Un parámetro de aplicación que se usará en este manifiesto. El valor del parámetro puede cambiarse durante la creación de instancias de la aplicación, o, si no se proporciona ningún valor, se usa el valor predeterminado. Para más información, consulte Elemento Parameter
Elemento ServiceManifestImport
Importa un manifiesto de servicio creado por el desarrollador del servicio. Para cada servicio constituyente de la aplicación se debe importar un manifiesto de servicio. Se invalida la configuración y se pueden declarar directivas para el manifiesto de servicio. Para más información, consulte Elemento ServiceManifestImport
Elemento ServiceManifestRef
Importa el manifiesto de servicio por referencia. Actualmente el archivo de manifiesto de servicio (ServiceManifest.xml) debe estar presente en el paquete de compilación. Para más información, consulte Elemento ServiceManifestRef
Elemento ResourceOverrides
Especifica las invalidaciones de recursos para los puntos de conexión declarados en recursos de manifiesto de servicio. Para más información, consulte Elemento ResourceOverrides
Elemento Endpoints
Los puntos de conexión que invalidar. Para más información, consulte Elemento Endpoints
Elemento Endpoint
El punto de conexión, declarado en el manifiesto de servicio, que invalidar. Para más información, consulte Elemento Endpoint
Elemento Policies
Describe las directivas (enlace de punto de conexión, uso compartido de paquetes, ejecutar como y acceso de seguridad) que se van a aplicar en el manifiesto de servicio importado. Para más información, consulte Elemento Policies
Elemento ServicePackageResourceGovernancePolicy
Define la directiva de gobernanza de recursos que se aplica en el nivel del paquete de servicio completo. Para más información, consulte Elemento ServicePackageResourceGovernancePolicy
Elemento ResourceGovernancePolicy
Especifica los límites de recursos de un paquete de código. Para más información, consulte Elemento ResourceGovernancePolicy
Elemento PackageSharingPolicy
Indica si se debe compartir un paquete de código, configuración o datos entre las instancias de servicio del mismo tipo de servicio. Para más información, consulte Elemento PackageSharingPolicy
Elemento SecurityAccessPolicy
Concede permisos de acceso a una entidad de seguridad en un recurso (por ejemplo, un punto de conexión) definido en un manifiesto de servicio. Por lo general, resulta muy útil controlar y restringir el acceso de los servicios a diferentes recursos con el fin de reducir los riesgos de seguridad. Esto es especialmente importante cuando la aplicación se crea a partir de una colección de servicios de un catálogo de soluciones, desarrollados por distintas personas. Para más información, consulte Elemento SecurityAccessPolicy
Elemento RunAsPolicy
Especifica el usuario local o la cuenta del sistema local que ejecutará un paquete de código de servicio. Se admiten cuentas de dominio en implementaciones de Windows Server donde esté disponible Microsoft Entra ID. De forma predeterminada, las aplicaciones se ejecutan con la cuenta con la que se ejecuta el proceso Fabric.exe. Las aplicaciones también pueden ejecutarse con otras cuentas, lo que se debe declarar en la sección Entidades de seguridad. Si se aplica una directiva RunAs a un servicio y el manifiesto de servicio declara que hay recursos de puntos de conexión con el protocolo HTTP, es preciso especificar también una directiva SecurityAccessPolicy para asegurarse de que los puertos asignados a dichos puntos de conexión aparezcan correctamente en la lista de control de acceso de la cuenta de usuario RunAs en la que se ejecuta el servicio. Para un punto de conexión HTTPS, también debe definir un elemento EndpointBindingPolicy para indicar el nombre del certificado que se devuelve al cliente. Para más información, consulte Elemento RunAsPolicy
Elemento DefaultServices
Declara instancias de servicio que se crean automáticamente cada vez que se crea una instancia de una aplicación en este tipo de aplicación. Para más información, consulte Elemento DefaultServices
Elemento Service
Declara que un servicio se cree automáticamente cuando se crea una instancia de la aplicación. Para más información, consulte Elemento Service
Elemento StatefulService
Define un servicio con estado. Para más información, consulte Elemento StatefulService
Elemento StatelessService
Define un servicio sin estado. Para más información, consulte Elemento StatelessService
Elemento Principals
Describe las entidades de seguridad (usuarios, grupos) necesarias para que esta aplicación ejecute servicios y proteja recursos. Se hace referencia a las entidades de seguridad en las secciones de directivas. Para más información, consulte Elemento Principals
Elemento Groups
Declara un conjunto de grupos como entidades de seguridad, a las que se puede hacer referencia en las directivas. Los grupos son útiles si hay varios usuarios para distintos puntos de entrada de servicio y es preciso que tengan ciertos privilegios comunes disponibles en el nivel de grupo. Para más información, consulte Elemento Groups
Elemento Group
Declara un grupo como una entidad de seguridad, a la que se puede hacer referencia en las directivas. Para más información, consulte Elemento Group
Elemento Membership
Para más información, consulte Elemento Membership
Elemento SystemGroup
Para más información, consulte Elemento SystemGroup
Elemento Users
Declara un conjunto de usuarios como entidades de seguridad, a las que se puede hacer referencia en las directivas. Para más información, consulte Elemento Users
Elemento User
Declara un usuario como una entidad de seguridad, a la que se puede hacer referencia en las directivas. Para más información, consulte Elemento User
Elemento MemberOf
Los usuarios se pueden agregar a cualquier grupo de pertenencia existente, por lo que puede heredar todas las propiedades y la configuración de seguridad de ese grupo de pertenencia. El grupo de pertenencia se puede usar para proteger los recursos externos a los que deben acceder distintos servicios o el mismo servicio (en otra máquina). Para más información, consulte Elemento MemberOf
Elemento SystemGroup
El grupo del sistema al que agregar el usuario. El grupo del sistema debe definirse en la sección Grupos. Para más información, consulte Elemento SystemGroup
Elemento Group
El grupo al que se agrega el usuario. El grupo debe estar definido en la sección Grupos. Para más información, consulte Elemento Group
Elemento Policies
Describe las directivas (recopilación de registros, ejecución predeterminada, mantenimiento y acceso de seguridad) que se van a aplicar en el nivel de aplicación. Para más información, consulte Elemento Policies
Elemento DefaultRunAsPolicy
Especifique una cuenta de usuario predeterminada para todos los paquetes de código de servicio que no tengan ningún elemento RunAsPolicy específico definido en la sección ServiceManifestImport. Para más información, consulte Elemento DefaultRunAsPolicy
Elementos del manifiesto del servicio VotingWeb
Elemento ServiceManifest
Describe mediante declaración el tipo de servicio y la versión. Enumera los paquetes de código, configuración y datos que se pueden actualizar de manera independiente que, juntos, constituyen un paquete de servicio para admitir uno o más tipos de servicio. También se especifican los recursos, la configuración de diagnóstico y los metadatos de servicio, como el tipo de servicio, las propiedades de mantenimiento y las métricas de equilibrio de carga. Para más información, consulte Elemento ServiceManifest
Elemento ServiceTypes
Define los tipos de servicios que son compatibles con CodePackage en este manifiesto. Cuando se crea una instancia de un servicio en uno de estos tipos de servicio, todos los paquetes de código declarados en este manifiesto se activan mediante la ejecución de sus puntos de entrada. Los tipos de servicio se declaran en el nivel de manifiesto y no en el nivel de paquete de código. Para más información, consulte Elemento ServiceTypes
Elemento StatelessServiceType
Describe un tipo de servicio sin estado. Para más información, consulte Elemento StatelessServiceType
Elemento CodePackage
Describe un paquete de código que admite un tipo de servicio definido. Cuando se crea una instancia de un servicio en uno de estos tipos de servicio, todos los paquetes de código declarados en este manifiesto se activan mediante la ejecución de sus puntos de entrada. Se espera que los procesos resultantes registren los tipos de servicio admitidos en tiempo de ejecución. Cuando hay varios paquetes de código, se activan todos cada vez que el sistema busca cualquiera de los tipos de servicios declarados. Para más información, consulte Elemento CodePackage
Elemento SetupEntryPoint
Es un punto de entrada con privilegios que se ejecuta de forma predeterminada con las mismas credenciales que Service Fabric (normalmente, la cuenta NETWORKSERVICE) antes que cualquier otro punto de entrada. El archivo ejecutable especificado por EntryPoint suele ser el host de servicios de ejecución prolongada. La presencia de un punto de entrada de configuración independiente evita tener que ejecutar el host de servicio con privilegios elevados durante largos períodos de tiempo. Para más información, consulte Elemento SetupEntryPoint
Elemento ExeHost
Para más información, consulte Elemento ExeHost
Elemento Program
El nombre del archivo ejecutable. Por ejemplo, "MySetup.bat" o "MyServiceHost.exe". Para más información, consulte Elemento Program
Elemento Arguments
Para más información, consulte Elemento Arguments
Elemento WorkingFolder
El directorio de trabajo para el proceso en el paquete de código en el nodo de clúster donde se implementa la aplicación. Puede especificar tres valores: Work (el valor predeterminado), CodePackage o CodeBase. CodeBase especifica que el directorio de trabajo está establecido en el directorio en el que se define el archivo EXE en el paquete de código. CodePackage establece que el directorio de trabajo sea la raíz del paquete de código, independientemente de dónde se defina el archivo EXE en el directorio del paquete de código. Work establece que el directorio de trabajo sea una carpeta única creada en el nodo. Esta carpeta es la misma para la instancia de aplicación completa. De forma predeterminada, el directorio de trabajo de todos los procesos en la aplicación se establece en la carpeta de trabajo de aplicación. Aquí es donde los procesos pueden escribir los datos. No se recomienda escribir datos en el paquete de código ni en el código base ya que esas carpetas podrían compartirse entre diferentes instancias de aplicación y es posible que se eliminen. Para más información, consulte Elemento WorkingFolder
Elemento ConsoleRedirection
Advertencia
No use la redirección de consola en una aplicación de producción, solo se usa para la depuración y el desarrollo locales. Redirige la salida de la consola del script de inicio a un archivo de salida en la carpeta de aplicación denominada "log", en el nodo del clúster donde se implementa y ejecuta la aplicación. Para más información, consulte Elemento ConsoleRedirection
Elemento EntryPoint
El archivo ejecutable especificado por EntryPoint suele ser el host de servicios de ejecución prolongada. La presencia de un punto de entrada de configuración independiente evita tener que ejecutar el host de servicio con privilegios elevados durante largos períodos de tiempo. El archivo ejecutable especificado por EntryPoint se ejecuta después de que SetupEntryPoint se cierra correctamente. El proceso resultante se supervisa y reinicia (comenzando de nuevo con SetupEntryPoint) si alguna vez finaliza o se bloquea. Para más información, consulte Elemento EntryPoint
Elemento ExeHost
Para más información, consulte Elemento ExeHost
Elemento ConfigPackage
Declara una carpeta, denominada por el atributo Nombre, debajo de PackageRoot que contiene un archivo Settings.xml. Este archivo contiene secciones de configuración del par clave-valor definida por el usuario que el proceso puede volver a leer en tiempo de ejecución. Durante una actualización, si solo ha cambiado la versión de ConfigPackage, no se reiniciará el proceso en ejecución. En su lugar, una devolución de llamada notifica el proceso que los ajustes de configuración han cambiado, por lo que pueden volver a cargarse de forma dinámica. Para más información, consulte Elemento ConfigPackage
Elemento Resources
Describe los recursos utilizados por este servicio, que se pueden declarar sin modificar el código compilado y cambiar cuando se implemente el servicio. El acceso a estos recursos se controla mediante las secciones Entidades de seguridad y Directivas del manifiesto de aplicación. Para más información, consulte Elemento Resources
Elemento Endpoints
Define los puntos de conexión del servicio. Para más información, consulte Elemento Endpoints
Elemento Endpoint
El punto de conexión, declarado en el manifiesto de servicio, que invalidar. Para más información, consulte Elemento Endpoint
Elementos del manifiesto del servicio VotingData
Elemento ServiceManifest
Describe mediante declaración el tipo de servicio y la versión. Enumera los paquetes de código, configuración y datos que se pueden actualizar de manera independiente que, juntos, constituyen un paquete de servicio para admitir uno o más tipos de servicio. También se especifican los recursos, la configuración de diagnóstico y los metadatos de servicio, como el tipo de servicio, las propiedades de mantenimiento y las métricas de equilibrio de carga. Para más información, consulte Elemento ServiceManifest
Elemento ServiceTypes
Define los tipos de servicios que son compatibles con CodePackage en este manifiesto. Cuando se crea una instancia de un servicio en uno de estos tipos de servicio, todos los paquetes de código declarados en este manifiesto se activan mediante la ejecución de sus puntos de entrada. Los tipos de servicio se declaran en el nivel de manifiesto y no en el nivel de paquete de código. Para más información, consulte Elemento ServiceTypes
Elemento StatefulServiceType
Describe un tipo de servicio con estado. Para más información, consulte Elemento StatefulServiceType
Elemento CodePackage
Describe un paquete de código que admite un tipo de servicio definido. Cuando se crea una instancia de un servicio en uno de estos tipos de servicio, todos los paquetes de código declarados en este manifiesto se activan mediante la ejecución de sus puntos de entrada. Se espera que los procesos resultantes registren los tipos de servicio admitidos en tiempo de ejecución. Cuando hay varios paquetes de código, se activan todos cada vez que el sistema busca cualquiera de los tipos de servicios declarados. Para más información, consulte Elemento CodePackage
Elemento EntryPoint
El archivo ejecutable especificado por EntryPoint suele ser el host de servicios de ejecución prolongada. La presencia de un punto de entrada de configuración independiente evita tener que ejecutar el host de servicio con privilegios elevados durante largos períodos de tiempo. El archivo ejecutable especificado por EntryPoint se ejecuta después de que SetupEntryPoint se cierra correctamente. El proceso resultante se supervisa y reinicia (comenzando de nuevo con SetupEntryPoint) si alguna vez finaliza o se bloquea. Para más información, consulte Elemento EntryPoint
Elemento ExeHost
Para más información, consulte Elemento ExeHost
Elemento Program
El nombre del archivo ejecutable. Por ejemplo, "MySetup.bat" o "MyServiceHost.exe". Para más información, consulte Elemento Program
Elemento WorkingFolder
El directorio de trabajo para el proceso en el paquete de código en el nodo de clúster donde se implementa la aplicación. Puede especificar tres valores: Work (el valor predeterminado), CodePackage o CodeBase. CodeBase especifica que el directorio de trabajo está establecido en el directorio en el que se define el archivo EXE en el paquete de código. CodePackage establece que el directorio de trabajo sea la raíz del paquete de código, independientemente de dónde se defina el archivo EXE en el directorio del paquete de código. Work establece que el directorio de trabajo sea una carpeta única creada en el nodo. Esta carpeta es la misma para la instancia de aplicación completa. De forma predeterminada, el directorio de trabajo de todos los procesos en la aplicación se establece en la carpeta de trabajo de aplicación. Aquí es donde los procesos pueden escribir los datos. No se recomienda escribir datos en el paquete de código ni en el código base ya que esas carpetas podrían compartirse entre diferentes instancias de aplicación y es posible que se eliminen. Para más información, consulte Elemento WorkingFolder
Elemento ConfigPackage
Declara una carpeta, denominada por el atributo Nombre, debajo de PackageRoot que contiene un archivo Settings.xml. Este archivo contiene secciones de configuración del par clave-valor definida por el usuario que el proceso puede volver a leer en tiempo de ejecución. Durante una actualización, si solo ha cambiado la versión de ConfigPackage, no se reiniciará el proceso en ejecución. En su lugar, una devolución de llamada notifica el proceso que los ajustes de configuración han cambiado, por lo que pueden volver a cargarse de forma dinámica. Para más información, consulte Elemento ConfigPackage
Elemento DataPackage
Declara una carpeta, denominada por el atributo Nombre, debajo de PackageRoot que contiene archivos de datos estáticos que el proceso en tiempo de ejecución va a consumir. Service Fabric reciclará todos los archivos EXE y DLLHOST especificados en los paquetes de host y soporte técnico cuando cualquiera de los paquetes de datos enumerados en el manifiesto de servicio se actualice. Para más información, consulte Elemento DataPackage
Elemento Resources
Describe los recursos utilizados por este servicio, que se pueden declarar sin modificar el código compilado y cambiar cuando se implemente el servicio. El acceso a estos recursos se controla mediante las secciones Entidades de seguridad y Directivas del manifiesto de aplicación. Para más información, consulte Elemento Resources
Elemento Endpoints
Define los puntos de conexión del servicio. Para más información, consulte Elemento Endpoints
Elemento Endpoint
El punto de conexión, declarado en el manifiesto de servicio, que invalidar. Para más información, consulte Elemento Endpoint