Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
À medida que as organizações dependem cada vez mais do Power Platform para construir aplicações escaláveis e orientadas por dados, escolher a abordagem certa para implementar a lógica de negócio torna-se fundamental. Esta arquitetura de referência apresenta duas opções — funções Power Fx e APIs personalizadas do Dataverse — para otimizar o desempenho e a manutenibilidade em aplicações de canvas Power Apps.
Scenario
Por defeito, quando uma aplicação consulta dados ou realiza múltiplas modificações, envia pedidos individuais de rede HTTP para o Dataverse. O Dataverse devolve dados à aplicação, e a lógica da aplicação processa-os.
Este padrão de implementação causa tempos de espera, especialmente quando a aplicação envia múltiplos pedidos, como numa função ForAll. O tempo de espera afeta negativamente o desempenho e a experiência do utilizador. Por exemplo, se a aplicação recuperar e transformar dados várias vezes num ciclo ForAll, o tempo total de espera pode tornar-se substancial, levando a uma experiência de utilizador lenta e ineficiente.
Para otimizar a interação de dados, desloque a lógica e as operações de recuperação de dados da aplicação canvas para o Dataverse utilizando APIs personalizadas do Dataverse ou funções Power Fx. As operações de modificação de dados são concluídas dentro de uma transação, garantindo a consistência dos dados caso ocorra um erro.
Sugestão
Este artigo apresenta um cenário de exemplo e uma arquitetura de exemplo generalizada para ilustrar como aplicações canvas que utilizam Dataverse podem transferir lógica de negócio complexa para APIs personalizadas e funções Power Fx do Dataverse para melhorar o desempenho. Podes modificar o exemplo de arquitetura para muitos cenários e indústrias diferentes.
Diagrama da arquitetura
Neste diagrama, as funções Power Fx são usadas para transferir lógica de negócio complexa da aplicação canvas para o Dataverse. Também pode usar uma API personalizada do Dataverse para obter o mesmo resultado. Consulte as Recomendações para ajudar a decidir qual a opção a utilizar.
Workflow
A aplicação canvas Power Apps utiliza o Dataverse para gerir a alocação de recursos. A aplicação utiliza uma função Power Fx (uma API personalizada do Dataverse serviria o mesmo propósito) para operações pesadas de dados, em vez de usar diretamente capacidades de acesso integradas. A aplicação continua a utilizar capacidades integradas do Dataverse para operações de menor volume de dados e tarefas que não requerem suporte transacional.
A função Power Fx (com API personalizada do Dataverse) está configurada para passar parâmetros de entrada da aplicação que chama e receber o resultado (parâmetros de resposta) da função (ou API) através de parâmetros de saída definidos. Para:
Função Power Fx (pré-visualização): Implementa lógica no Power Apps Studio. Ao utilizar funções Power Fx, os criadores podem construir lógica complexa com pouca ou nenhuma experiência em programação. Saiba mais sobre as funções Power Fx.
API personalizada do Dataverse: Implemente lógica criando um plug-in Dataverse .NET. Plug-ins .NET personalizados requerem mais conhecimento de programação, mas oferecem maior controlo e extensibilidade. Saiba mais sobre APIs personalizadas do Dataverse.
Detalhes do caso de uso
O Power Apps permite às organizações criar experiências de utilizador personalizadas e centralizar a lógica de negócio. Ao usar Power Apps, pode alcançar uma arquitetura de dados mais eficiente e reduzir a carga de trabalho do lado do cliente.
No exemplo seguinte, a aplicação Power Apps canvas ajuda os criadores a alocar recursos de forma eficiente para equipas e tarefas. Pode aplicar este padrão de arquitetura a cenários semelhantes onde a aplicação canvas inclui operações de dados e exige:
- Vários ciclos na aplicação de tela, o que não é possível alcançar utilizando a capacidade função Concurrent.
- Cálculos intensivos para múltiplas transformações de dados.
- Tempo de execução consistente, independente do número de itens num ciclo ou da ligação à internet do utilizador.
- Consistência de dados em múltiplas operações de modificação de dados.
Para alocar recursos, o criador precisa de especificar as localizações, tarefas, subtarefas e outros metadados relacionados de alocação. Na aplicação canvas, o ecrã "Resumo de Recursos" mostra múltiplos níveis de dados correlacionados, tais como:
- Recursos
- Localização
- Tarefas
- Subtarefas
- Aprovação
- Subtarefas
- Tarefas
- Localização
Para alcançar este objetivo, pode implementar a lógica da aplicação usando Power Fx da seguinte forma:
ForAll(Resources,
//Transformations
ForAll(Location,
//Transformations...
ForAll(Tasks,
//Transformations ...
)
)
)
Esta lógica gera múltiplas chamadas HTTP para o Dataverse quando a aplicação é executada. Embora a melhor prática seja consolidar dados em vistas Dataverse ou usar funções concorrentes ou outras técnicas Power Fx, esta abordagem nem sempre é possível ou falha em cumprir os objetivos de desempenho.
Para resolver este problema, elimine múltiplas chamadas HTTP da aplicação canvas deslocando a transformação dos dados — processamento dos dados e dos resultados necessários — para uma única resposta. Esta abordagem reduz o tempo de espera para a recuperação de dados, melhora o desempenho global da aplicação canvas e proporciona uma experiência de utilizador mais fluida e responsiva. Ao centralizar a lógica de transformação de dados, assegura um processamento consistente e eficiente do lado do servidor, o que torna a solução escalável para grandes volumes de dados e transformações complexas.
Opções
Tanto as APIs personalizadas do Dataverse como as funções Power Fx estendem a lógica de negócio do Dataverse.
Funções do Power Fx
Uma função do Power Fx cria uma abstração da capacidade da API personalizada do Dataverse que permite utilizar o Power Fx para a lógica.
As funções Power Fx estendem a lógica de negócio do Dataverse e podem ser invocadas a pedido a partir de componentes Power Platform como aplicações canvas Power Apps, fluxos Power Automate e agentes personalizados criados com o Microsoft Copilot Studio. Esta funcionalidade suporta a implementação de lógica mais básica, que não é suficientemente complexa para exigir o uso total da capacidade de API personalizada do Dataverse.
APIs personalizadas do Dataverse
Um plug-in Dataverse é um gestor de eventos personalizado que é executado em resposta a eventos específicos. No caso de uma API personalizada do Dataverse, ao definir a API, cria-se um evento personalizado que a aplicação gera ao usar a API. Implementas estes plug-ins como classes personalizadas compiladas numa assembly .NET Framework, que depois carregas e registas no Dataverse.
Os plug-ins estendem a lógica de negócio do Dataverse ao permitir que os programadores escrevam código personalizado para execução quando certos eventos ocorrem, como criar, atualizar ou eliminar registos, ou através de chamadas diretas usando a API personalizada. Esta funcionalidade suporta a implementação de processos empresariais mais complexos e personalizados dentro do Power Platform, facilitando a integração total com aplicações canvas ou Power Automate.
Ao usar tanto funções Power Fx como APIs personalizadas do Dataverse, os criadores podem invocar uma ação de função diretamente dentro de uma fórmula, suportando tanto ações vinculadas como não vinculadas. Também podem adicionar um objeto de linguagem de ambiente Power Fx à sua aplicação, permitindo o acesso a funções. Ao utilizar APIs personalizadas do Dataverse, os criadores podem gerir campos de objeto não tipados tanto para entradas como para saídas.
Recommendations
Tanto as funções Power Fx como as APIs personalizadas do Dataverse completam operações de modificação de dados numa transação.
Escolha funções Power Fx se o seu caso de uso cumprir estes critérios:
- A tua lógica não é excessivamente complexa e pode ser expressa usando Power Fx.
- Queres capacitar os criadores (não programadores) para construir e manter a lógica.
- Prefere uma abordagem de código reduzido que se integre perfeitamente com o portal Power Apps.
- Precisas de consistência transacional , mas não precisas de capacidades avançadas em .NET.
- Queres centralizar a lógica para reutilização entre aplicações e fluxos sem envolver programadores .NET.
Saiba mais em Funções no Microsoft Dataverse (pré-visualização).
Escolha APIs personalizadas do Dataverse se o seu caso de uso exigir:
- Lógica de negócio complexa que o Power Fx não consegue expressar.
- Capacidades avançadas como gestão personalizada de erros, telemetria e integração com sistemas externos.
- A experiência em desenvolvimento .NET está disponível e é aceitável no seu fluxo de trabalho.
- Controlo total sobre o pipeline de execução, incluindo o registo e monitorização de plugins.
- Telemetria e diagnóstico, como Application Insights para monitorização da saúde.
Saiba mais em Criar e usar APIs personalizadas.
Se o seu objetivo é simplificar o desempenho das aplicações Canvas mantendo a solução acessível e sustentável pelos fabricantes, as funções Power Fx são a melhor escolha. Se está a construir um backend crítico e altamente personalizado, considere APIs personalizadas do Dataverse.
Alternatives
Outra abordagem a este padrão é transferir as operações de dados e a lógica para uma API REST e depois implementar um conector personalizado para permitir que as operações sejam usadas a partir do Power Apps. A diferença com esta abordagem reside no local onde as operações lógicas e de dados são executadas. Neste caso, executam o recurso de computação que implementa a API REST, como uma função Azure.
Como não correm dentro do sandbox de runtime do Dataverse, as operações de dados são mais rápidas do que as do cliente, mas mais lentas do que as realizadas no Dataverse. Da mesma forma, a lógica não corre dentro do contexto da transação Dataverse. A menos que sejam dados passos especiais, cada operação de dados é independente e não se completa como uma unidade transacional.
Saiba mais em Utilizar APIs REST para expandir a funcionalidade das aplicações canvas.
Considerações
Estas considerações implementam os pilares do Power Platform Well-Architected, um conjunto de princípios orientadores que melhoram a qualidade de uma carga de trabalho. Mais informações em Microsoft Power Platform Well-Architected.
Reliability
Projete a sua carga de trabalho para evitar complexidades desnecessárias: Deslocar as operações de dados e a lógica da sua aplicação canvas evita complexidades desnecessárias na aplicação. Esta abordagem também centraliza a lógica para que outras aplicações na organização possam utilizá-la. Além disso, os criadores de Power Apps beneficiam de melhorias de desempenho sem adicionar complexidade à aplicação.
Teste a resiliência e disponibilidade: Mover a lógica da app canvas para APIs personalizadas do Dataverse ou funções Power Fx permite-te testar a API ou função independentemente da app.
Medir e publicar indicadores de saúde (APIs personalizadas do Dataverse): As APIs personalizadas do Dataverse fornecem monitorização avançada e telemetria através do plug-in .NET. Para garantir um acompanhamento adequado, considere usar o registo do Application Insights .
Excelência Operacional
Adote práticas de implementação seguras: Padronize a implementação de alterações na aplicação Power Apps utilizando processos automatizados de implementação, como pipelines. Promova a aplicação para produção só depois de testar as alterações. Como componentes de solução, as APIs personalizadas do Dataverse e as funções Power Fx são implementadas juntamente com a aplicação quando estão na mesma solução Dataverse. Esta abordagem minimiza o risco de componentes desalinhados nos seus ambientes.
Implemente uma estratégia de mitigação de falhas de implementação: Quando implementa a aplicação e a API personalizada do Dataverse ou a função Power Fx em conjunto, a sua estratégia de mitigação é simplificada porque segue a mesma estratégia de rollback ou correção da aplicação.
Eficiência de desempenho
Projete para cumprir os requisitos de desempenho: Avalie os requisitos de desempenho e volume de dados da sua solução. Revise como a sua aplicação acede aos dados e se o uso de diferentes fontes de dados do Power Apps atrasa o desempenho devido à latência do pedido individual enviado para cada armazenamento de dados. Por exemplo, se a lógica da tua aplicação funciona em várias linhas na fonte de dados, podes conseguir transferir todo o tráfego de rede para a API ou função personalizada. Reduzir para uma única interação com a API ou função personalizada, que depois gere a comunicação com o Dataverse, torna as operações mais eficientes.
Otimizar lógica (APIs personalizadas do Dataverse): À medida que a lógica se torna mais complexa numa aplicação canvas, as APIs personalizadas do Dataverse permitem transferir essa lógica para um serviço centralizado e reutilizável.
Testar desempenho: Para além de testar funcionalidades e falhas, teste e desenvolva um ponto de referência para o desempenho. Avalie esta linha de base durante o ciclo de lançamento se a API personalizada do Dataverse ou a função do Power Fx for sensível a alterações no tempo de conclusão do trabalho.
Contribuidores
A Microsoft mantém este artigo. Os seguintes colaboradores escreveram este artigo.
Principais autores:
- Rui Santos, Gestor Principal de Programas
- Ravikiran Patil, Engenheiro de Software Sénior