Compartir vía


Optimización del rendimiento de las aplicaciones de lienzo que requieren una lógica empresarial compleja

A medida que las organizaciones dependen cada vez más de Power Platform para crear aplicaciones escalables y controladas por datos, elegir el enfoque adecuado para implementar la lógica de negocios se vuelve fundamental. Esta arquitectura de referencia presenta dos opciones( funciones de Power Fx y API personalizadas de Dataverse) para optimizar el rendimiento y la capacidad de mantenimiento en las aplicaciones de lienzo de Power Apps.

Scenario

De forma predeterminada, cuando una aplicación consulta datos o realiza varias modificaciones, envía solicitudes de red HTTP individuales a Dataverse. Dataverse devuelve datos a la aplicación y la lógica de la aplicación la procesa.

Este patrón de implementación provoca tiempos de espera, especialmente cuando la aplicación envía varias solicitudes, como en una función ForAll. El tiempo de espera afecta negativamente al rendimiento y a la experiencia del usuario. Por ejemplo, si la aplicación recupera y transforma datos varias veces en un bucle ForAll, el tiempo de espera general puede ser sustancial, lo que conduce a una experiencia de usuario lenta e ineficaz.

Para optimizar la interacción de datos, cambie la lógica y las operaciones de recuperación de datos de la aplicación de lienzo a Dataverse mediante las API personalizadas de Dataverse o las funciones de Power Fx. Las operaciones de modificación de datos se completan dentro de una transacción, lo que garantiza la coherencia de los datos si se produce un error.

Sugerencia

En este artículo se proporciona un escenario de ejemplo y una arquitectura de ejemplo generalizada para ilustrar cómo las aplicaciones de lienzo que usan Dataverse pueden cambiar la lógica de negocios compleja a las API personalizadas de Dataverse y la función Power Fx para mejorar el rendimiento. Puede modificar el ejemplo de arquitectura para muchos escenarios y sectores diferentes.

Diagrama de arquitectura

En este diagrama, las funciones de Power Fx se utilizan para trasladar la lógica empresarial compleja de la aplicación de lienzo a Dataverse. También puede usar una API personalizada de Dataverse para lograr el mismo resultado. Consulte Recomendaciones para ayudar a decidir qué opción usar.

Diagrama de arquitectura que muestra la diferencia entre el uso de las capacidades integradas del canvas app para las operaciones de datos y el uso de funciones de Power Fx.

Flujo de trabajo

  1. La aplicación de lienzo de Power Apps usa Dataverse para administrar la asignación de recursos. La aplicación usa una función de Power Fx (una API personalizada de Dataverse serviría para el mismo propósito) para operaciones de datos intensivas en lugar de usar directamente funcionalidades de acceso integradas. La aplicación sigue usando funcionalidades integradas de Dataverse para las operaciones y tareas de datos de menor volumen que no requieren compatibilidad transaccional.

  2. La función Power Fx (con la API personalizada de Dataverse) está configurada para pasar parámetros de entrada desde la aplicación que realiza la llamada y recibir el resultado (parámetros de respuesta) de la función (o API) a través de parámetros de salida definidos. Para:

    • Función Power Fx (versión preliminar): Implemente la lógica en Power Apps Studio. Mediante el uso de funciones de Power Fx, los creadores pueden construir lógica compleja con poca o ninguna experiencia en codificación. Obtenga más información en Funciones de Power Fx.

    • API personalizada de Dataverse: Implemente la lógica mediante la creación de un complemento de .NET de Dataverse. Los complementos de .NET personalizados requieren más conocimientos de codificación, pero proporcionan un mayor control y extensibilidad. Obtenga más información en Api personalizadas de Dataverse.

Detalles del caso de uso

Power Apps permite a las organizaciones crear experiencias de usuario personalizadas y centralizar la lógica de negocios. Con Power Apps, puede lograr una arquitectura de datos más eficaz y reducir la carga de trabajo del lado cliente.

En el ejemplo siguiente, la aplicación de lienzo de Power Apps ayuda a los creadores a asignar recursos de forma eficaz a equipos y tareas. Puede aplicar este patrón de arquitectura a escenarios similares en los que la aplicación de lienzo incluye operaciones sobre datos y requiere:

  • Hay varios bucles en la aplicación Canvas que no se pueden lograr mediante la capacidad de la función Concurrent.
  • Cálculos intensivos para varias transformaciones de datos.
  • Tiempo de ejecución coherente, independientemente del número de elementos de un bucle o de la conexión a Internet del usuario.
  • Coherencia de datos en varias operaciones de modificación de datos.

Para asignar recursos, un creador debe especificar las ubicaciones, las tareas, las subtareas y otros metadatos relacionados de la asignación. En la aplicación de lienzo, la pantalla "Información general de recursos" muestra varios niveles de datos correlacionados, como:

  • Recursos
    • Ubicación
      • Tareas
        • Subtareas
          • Approval

Para lograr este objetivo, puede implementar la lógica de la aplicación mediante Power Fx de la siguiente manera:

ForAll(Resources,
    //Transformations
    ForAll(Location,
        //Transformations...
        ForAll(Tasks,
            //Transformations ...
        )
    )
)

Esta lógica genera varias llamadas HTTP a Dataverse cuando se ejecuta la aplicación. Aunque el procedimiento recomendado es consolidar los datos en vistas de Dataverse o usar funciones simultáneas u otras técnicas de Power Fx, este enfoque no siempre es posible o no cumple los objetivos de rendimiento.

Para solucionar este problema, elimine múltiples llamadas HTTP desde la aplicación de lienzo trasladando la transformación de datos —el procesamiento de los datos y los resultados requeridos— a una única respuesta. Este enfoque reduce el tiempo de espera para la recuperación de datos, mejora el rendimiento general de la aplicación de lienzo y proporciona una experiencia de usuario más fluida y con mayor capacidad de respuesta. Al centralizar la lógica de transformación de datos, se garantiza un procesamiento coherente y eficaz en el lado servidor, lo que hace que la solución sea escalable para grandes volúmenes de datos y transformaciones complejas.

Options

Tanto las API personalizadas de Dataverse como las funciones de Power Fx amplían la lógica de negocios de Dataverse.

Funciones de Power Fx

Una función de Power Fx crea una abstracción de la funcionalidad de API personalizada de Dataverse, que puede usar Power Fx para la lógica.

Las funciones de Power Fx amplían la lógica empresarial de Dataverse y se pueden invocar a petición desde componentes de Power Platform, como aplicaciones de lienzo de Power Apps, flujos de Power Automate y desde agentes personalizados creados con Microsoft Copilot Studio. Esta funcionalidad admite la implementación de lógica más básica que no es lo suficientemente compleja como para requerir el uso de la funcionalidad completa de API personalizada de Dataverse.

API personalizadas de Dataverse

Un complemento de Dataverse es un controlador de eventos personalizado que se ejecuta en respuesta a eventos específicos. En el caso de una API personalizada de Dataverse, al definir la API, crea un evento personalizado que la aplicación genera cuando usa la API. Estos complementos se implementan como clases personalizadas compiladas en un ensamblado de .NET Framework, que luego carga y registra en Dataverse.

Los complementos amplían la lógica empresarial de Dataverse al permitir que los desarrolladores escriban código personalizado para su ejecución cuando se produzcan determinados eventos, como crear, actualizar o eliminar registros, o a través de llamadas directas mediante la API personalizada. Esta funcionalidad admite la implementación de procesos empresariales más complejos y adaptados dentro de Power Platform, lo que facilita la integración completa con aplicaciones de canvas o Power Automate.

Mediante el uso de funciones de Power Fx y de las API personalizadas de Dataverse, los creadores pueden invocar una acción de la función directamente dentro de una fórmula, permitiendo tanto acciones vinculadas como no vinculadas. También pueden agregar un objeto de lenguaje de entorno de Power Fx a su aplicación, lo que permite el acceso a las funciones. Mediante el uso de las API personalizadas de Dataverse, los creadores pueden manejar campos de objeto sin tipo para entradas y salidas.

Recommendations

Tanto las funciones de Power Fx como las API personalizadas de Dataverse completan las operaciones de modificación de datos en una transacción.

Elija funciones de Power Fx si su caso de uso cumple estos criterios:

  • La lógica no es demasiado compleja y se puede expresar mediante Power Fx.
  • Quiere permitir a los creadores (no desarrolladores) construir y mantener la lógica.
  • Prefiere un enfoque de poco código que se integre sin problemas con el portal de Power Apps.
  • Necesita coherencia transaccional , pero no requiere funcionalidades avanzadas de .NET.
  • Quiere centralizar la lógica para reutilizar entre aplicaciones y flujos sin implicar a desarrolladores de .NET.

Obtenga más información en Funciones en Microsoft Dataverse (versión preliminar).

Elija API personalizadas de Dataverse si el caso de uso requiere lo siguiente:

  • Lógica de negocios compleja que Power Fx no puede expresar.
  • Funcionalidades avanzadas , como el control de errores personalizado, la telemetría y la integración con sistemas externos.
  • La experiencia en desarrollo de .NET está disponible y es aceptable en el flujo de trabajo.
  • Control total sobre el pipeline de ejecución, incluido el registro y la supervisión del plugin.
  • Telemetría y diagnósticos, como Application Insights para el seguimiento del estado de salud.

Obtenga más información en Creación y uso de API personalizadas.

Si su objetivo es optimizar el rendimiento de las aplicaciones de lienzo, al mismo tiempo que mantiene la solución accesible y sostenible por los desarrolladores, las funciones de Power Fx constituyen la mejor opción. Si va a crear un back-end altamente personalizado y crítico, considere la posibilidad de usar las API personalizadas de Dataverse.

Alternatives

Otro enfoque de este patrón es cambiar las operaciones de datos y la lógica a una API REST y, a continuación, implementar un conector personalizado para permitir que las operaciones se usen desde Power Apps. La diferencia con este enfoque radica en dónde se ejecutan las operaciones lógicas y de datos. En este caso, se ejecutan en el recurso de proceso que implementa la API REST, como una función de Azure.

Dado que no se ejecutan en el espacio aislado del entorno de ejecución de Dataverse, las operaciones de datos son más rápidas que las del cliente, pero más lentas que las realizadas en Dataverse. Del mismo modo, la lógica no se ejecuta dentro del contexto de la transacción de Dataverse. A menos que se realicen pasos especiales, cada operación de datos es independiente y no se completa como una unidad transaccional.

Obtenga más información en Uso de las API REST para ampliar la funcionalidad de las aplicaciones de lienzo.

Consideraciones

Estas consideraciones implementan los pilares de Power Platform Well-Architected, un conjunto de principios rectores que mejoran la calidad de una carga de trabajo. Obtenga más información en Buena arquitectura de Microsoft Power Platform.

Reliability

Diseñe su flujo de trabajo para evitar la complejidad innecesaria: trasladar las operaciones de datos y la lógica fuera de la aplicación de lienzo evita una complejidad innecesaria en la misma. Este enfoque también centraliza la lógica para que otras aplicaciones de la organización puedan usarlas. Además, los creadores de Power Apps se benefician de mejoras de rendimiento sin agregar complejidad a la aplicación.

Prueba de resistencia y disponibilidad: el traslado de la lógica de la aplicación de lienzo a las API personalizadas de Dataverse o las funciones de Power Fx le permite probar la API o la función independientemente de la aplicación.

Medición y publicación de indicadores de estado (API personalizadas de Dataverse): las API personalizadas de Dataverse proporcionan supervisión avanzada y telemetría a través del complemento .NET. Para garantizar un seguimiento adecuado, considere la posibilidad de usar el registro de Application Insights .

Excelencia operativa

Adopción de prácticas de implementación seguras: normalice la implementación de cambios en la aplicación Power Apps mediante procesos de implementación automatizados, como canalizaciones. Promocione la aplicación a producción solo después de probar esos cambios. Como componentes de la solución, las API personalizadas de Dataverse y las funciones de Power Fx se implementan junto con la aplicación cuando están en la misma solución de Dataverse. Este enfoque minimiza el riesgo de componentes fuera de sincronización en los entornos.

Implementar una estrategia de mitigación de errores de implementación: al implementar la aplicación y la API personalizada de Dataverse o la función Power Fx conjuntamente, la estrategia de mitigación se simplifica porque sigue la misma estrategia de reversión o corrección que la aplicación.

Eficiencia del rendimiento

Diseño para satisfacer los requisitos de rendimiento: evalúe los requisitos de rendimiento y volumen de datos de la solución. Revise cómo la aplicación accede a los datos y si Power Apps con distintos orígenes de datos ralentiza el rendimiento debido a la latencia de la solicitud individual enviada a cada almacén de datos. Por ejemplo, si la lógica de la aplicación funciona en muchas filas del origen de datos, es posible que pueda cambiar todo el tráfico de red a la API o función personalizada. Reducir a una sola interacción con la API o función personalizada, que luego controla la comunicación con Dataverse, hace que las operaciones sean más eficaces.

Optimización de lógica (API personalizadas de Dataverse): A medida que la lógica se vuelve más compleja en una aplicación de lienzo, las API personalizadas de Dataverse permiten descargar esa lógica en un servicio centralizado y reutilizable.

Prueba del rendimiento: junto con las pruebas de funcionalidad y fallos, prueben y desarrollen una línea de referencia para el rendimiento. Evalúe esta línea base durante el ciclo de lanzamiento si la API personalizada de Dataverse o la función Power Fx son sensibles a los cambios en el tiempo de finalización del trabajo.

Colaboradores

Microsoft mantiene este artículo. Los colaboradores siguientes escribieron este artículo.

Autores principales: