Cursos
Módulo
Hospedaje de una aplicación web con Azure App Service - Training
Cree un sitio web con C#, Java, Python o Node.js e impleméntelo a través de la plataforma de aplicaciones web hospedadas en Azure App Service.
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
A partir de Windows 10, versión 2004, puedes crear aplicaciones hospedadas. Una aplicación hospedada comparte el mismo archivo ejecutable y definición que una aplicación host primaria, pero parece y se comporta como una aplicación independiente en el sistema.
Las aplicaciones hospedadas son útiles para los escenarios en los que deseas que un componente (como un archivo ejecutable o un archivo de script) se comporte como una aplicación de Windows 10 independiente, pero el componente requiere un proceso de host para poder ejecutarlo. Por ejemplo, un script de PowerShell o Python podría entregarse como una aplicación hospedada que requiere que se instale un host para poder ejecutarse. Una aplicación hospedada puede tener su propio icono de inicio e identidad, así como una profunda integración con las características de Windows 10, como tareas en segundo plano, notificaciones, iconos y destinos de recursos compartidos.
La característica de aplicaciones hospedadas es compatible con varios elementos y atributos del manifiesto del paquete que permiten que una aplicación hospedada use un archivo ejecutable y una definición en un paquete de aplicación host. Cuando un usuario ejecuta la aplicación hospedada, el sistema operativo inicia automáticamente el archivo ejecutable del host en la identidad de la aplicación hospedada. Después, el host puede cargar recursos visuales, contenido o LLAMADAS API como aplicación hospedada. La aplicación hospedada obtiene la intersección de las funcionalidades declaradas entre el host y la aplicación hospedada. Esto significa que una aplicación hospedada no puede solicitar más funcionalidades que lo que proporciona el host.
El host es el proceso principal ejecutable o en tiempo de ejecución de la aplicación hospedada. Actualmente, los únicos hosts admitidos son aplicaciones de escritorio (escritorio de .NET o C++) que tienen identidad de paquete. Hay varias maneras de que una aplicación de escritorio tenga la identidad del paquete:
La extensión uap10:HostRuntime declara el host en su manifiesto de paquete. Esta extensión tiene un atributo Id que se debe asignar a un valor al que también hace referencia el manifiesto del paquete para la aplicación hospedada. Cuando se activa la aplicación hospedada, el host se inicia bajo la identidad de la aplicación hospedada y puede cargar contenido o archivos binarios desde el paquete de la aplicación hospedada.
En el ejemplo siguiente se muestra cómo definir un host en un manifiesto de paquete. La extensión uap10:HostRuntime es en todo el paquete y, por tanto, se declara como elemento secundario del elemento Package .
<Package xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10">
<Extensions>
<uap10:Extension Category="windows.hostRuntime"
Executable="PyScriptEngine\PyScriptEngine.exe"
uap10:RuntimeBehavior="packagedClassicApp"
uap10:TrustLevel="mediumIL">
<uap10:HostRuntime Id="PythonHost" />
</uap10:Extension>
</Extensions>
</Package>
Tome nota de estos detalles importantes sobre los siguientes elementos.
Elemento | Detalles |
---|---|
uap10:Extension | La windows.hostRuntime categoría declara una extensión de todo el paquete que define la información en tiempo de ejecución que se usará al activar una aplicación hospedada. Una aplicación hospedada se ejecutará con las definiciones declaradas en la extensión. Al usar la aplicación host declarada en el ejemplo anterior, una aplicación hospedada se ejecutará como el archivo ejecutable PyScriptEngine.exe en el nivel de confianza mediumIL .Los atributos Ejecutable, uap10:RuntimeBehavior y uap10:TrustLevel especifican el nombre del archivo binario del proceso de host en el paquete y cómo se ejecutarán las aplicaciones hospedadas. Por ejemplo, una aplicación hospedada con los atributos del ejemplo anterior se ejecutará como el archivo ejecutable PyScriptEngine.exe en el nivel de confianza mediumIL. |
uap10:HostRuntime | El atributo Id declara el identificador único de esta aplicación host específica en el paquete. Un paquete puede tener varias aplicaciones host y cada una debe tener un elemento uap10:HostRuntime con un identificador único. |
Una aplicación hospedada declara una dependencia de paquete en un host. La aplicación hospedada aprovecha el identificador del host (es decir, el atributo Id de la extensión uap10:HostRuntime en el paquete host) para la activación en lugar de especificar un ejecutable de punto de entrada en su propio paquete. La aplicación hospedada normalmente contiene contenido, recursos visuales, scripts o archivos binarios a los que puede acceder el host. El valor TargetDeviceFamily del paquete de la aplicación hospedada debe tener como destino el mismo valor que el host.
Los paquetes de aplicaciones hospedados se pueden firmar o anular la firma:
OID
en su elemento Identity o no podrán registrarse. Esto impide que los paquetes sin firmar entren en conflicto con o suplantan la identidad de un paquete firmado.Para definir una aplicación hospedada, declare los siguientes elementos en el manifiesto del paquete:
En el ejemplo siguiente se muestran las secciones pertinentes de un manifiesto de paquete para una aplicación hospedada sin firmar.
<Package xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10">
<Identity Name="NumberGuesserManifest"
Publisher="CN=AppModelSamples, OID.2.25.311729368913984317654407730594956997722=1"
Version="1.0.0.0" />
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.19041.0" MaxVersionTested="10.0.19041.0" />
<uap10:HostRuntimeDependency Name="PyScriptEnginePackage" Publisher="CN=AppModelSamples" MinVersion="1.0.0.0"/>
</Dependencies>
<Applications>
<Application Id="NumberGuesserApp"
uap10:HostId="PythonHost"
uap10:Parameters="-Script "NumberGuesser.py"">
</Application>
</Applications>
</Package>
Tome nota de estos detalles importantes sobre los siguientes elementos.
Elemento | Detalles |
---|---|
Identidad | Dado que el paquete de la aplicación hospedada en este ejemplo no está firmado, el atributo Publisher debe incluir la OID.2.25.311729368913984317654407730594956997722=1 cadena. Esto garantiza que el paquete sin firmar no pueda suplantar la identidad de un paquete firmado. |
TargetDeviceFamily | El atributo MinVersion debe especificar 10.0.19041.0 o una versión posterior del sistema operativo. |
uap10:HostRuntimeDependency | Este elemento de elemento declara una dependencia en el paquete de la aplicación host. Esto consta del nombre y el publicador del paquete host, y el minversion del que depende. Estos valores se pueden encontrar en el elemento Identity del paquete host. |
Aplicación | El atributo uap10:HostId expresa la dependencia en el host. El paquete de la aplicación hospedada debe declarar este atributo en lugar de los atributos Ejecutable y EntryPoint habituales para un elemento Application o Extension. Como resultado, la aplicación hospedada hereda los atributos Ejecutable, EntryPoint y runtime del host con el valor host correspondiente. El atributo uap10:Parameters especifica los parámetros que se pasan a la función de punto de entrada del ejecutable del host. Dado que el host debe saber qué hacer con estos parámetros, hay un contrato implícito entre el host y la aplicación hospedada. |
Una ventaja de la extensión uap10:HostRuntime es que permite a un host generar dinámicamente un paquete de aplicación hospedado en tiempo de ejecución y registrarlo mediante la API PackageManager , sin necesidad de firmarlo. Esto permite a un host generar dinámicamente el contenido y el manifiesto para el paquete de aplicación hospedada y, a continuación, registrarlo.
Use los métodos siguientes de la clase PackageManager para registrar un paquete de aplicación hospedado sin firmar. Estos métodos están disponibles a partir de Windows 10, versión 2004.
<rescap:Capability Name="packageManagement" />
Para obtener una aplicación de ejemplo totalmente funcional que se declara como un host y, a continuación, registra dinámicamente un paquete de aplicación hospedada en tiempo de ejecución, consulte el ejemplo de aplicación hospedada.
El host se denomina PyScriptEngine. Se trata de un contenedor escrito en C# que ejecuta scripts de Python. Cuando se ejecuta con el -Register
parámetro , el motor de script instala una aplicación hospedada que contiene un script de Python. Cuando un usuario intenta iniciar la aplicación hospedada recién instalada, el host se inicia y ejecuta el script de Python NumberGuesser .
El manifiesto de paquete de la aplicación host (el archivo Package.appxmanifest en la carpeta PyScriptEnginePackage) contiene una extensión uap10:HostRuntime que declara la aplicación como host con el identificador PythonHost y el archivo ejecutable PyScriptEngine.exe.
Nota
En este ejemplo, el manifiesto del paquete se denomina Package.appxmanifest y forma parte de un proyecto de empaquetado de aplicaciones de Windows. Cuando se compila este proyecto, genera un manifiesto denominado AppxManifest.xml y compila el paquete MSIX para la aplicación host.
La aplicación hospedada consta de un script de Python y artefactos de paquete como el manifiesto del paquete. No contiene ningún archivo PE.
El manifiesto de paquete de la aplicación hospedada (el archivo NumberGuesser/AppxManifest.xml) contiene los siguientes elementos:
OID.2.25.311729368913984317654407730594956997722=1
identificador , que es necesario para un paquete sin firmar.El ejemplo requiere la versión 10.0.19041.0 o posterior de Windows 10 y Windows SDK.
Descargue el ejemplo en una carpeta del equipo de desarrollo.
Abra la solución PyScriptEngine.sln en Visual Studio y establezca el proyecto PyScriptEnginePackage como proyecto de inicio.
Compile el proyecto PyScriptEnginePackage .
En Explorador de soluciones, haga clic con el botón derecho en el proyecto PyScriptEnginePackage y elija Implementar.
Abra una ventana del símbolo del sistema en el directorio donde copió los archivos de ejemplo y ejecute el siguiente comando para registrar la aplicación NumberGuesser de ejemplo (la aplicación hospedada). Cambie D:\repos\HostedApps
a la ruta de acceso donde copió los archivos de ejemplo.
D:\repos\HostedApps>pyscriptengine -Register D:\repos\HostedApps\NumberGuesser\AppxManifest.xml
Abra el menú Inicio y haga clic en NumberGuesser para ejecutar la aplicación hospedada.
Cursos
Módulo
Hospedaje de una aplicación web con Azure App Service - Training
Cree un sitio web con C#, Java, Python o Node.js e impleméntelo a través de la plataforma de aplicaciones web hospedadas en Azure App Service.