Partajați prin


Optimizează performanța aplicațiilor canvas care necesită logică de business complexă

Pe măsură ce organizațiile se bazează tot mai mult pe Power Platform pentru a construi aplicații scalabile, bazate pe date, alegerea abordării potrivite pentru implementarea logicii de business devine esențială. Această arhitectură de referință oferă două opțiuni — funcții Power Fx și API-uri personalizate Dataverse — pentru optimizarea performanței și mentenanței în aplicațiile Canvas Power Apps.

Scenariu

În mod implicit, când o aplicație interoghează date sau efectuează multiple modificări, ea trimite cereri individuale de rețea HTTP către Dataverse. Dataverse returnează datele aplicației, iar logica aplicației le procesează.

Acest tipar de implementare cauzează timpi de așteptare, mai ales când aplicația trimite mai multe cereri, cum ar fi într-o funcție ForAll. Timpul de așteptare afectează negativ performanța și experiența utilizatorului. De exemplu, dacă aplicația recuperează și transformă datele de mai multe ori într-o buclă ForAll, timpul total de așteptare poate deveni substanțial, ceea ce duce la o experiență de utilizare lentă și ineficientă.

Pentru a optimiza interacțiunea datelor, mută logica și operațiunile de recuperare a datelor din aplicația canvas către Dataverse folosind fie API-uri personalizate Dataverse, fie funcții Power Fx. Operațiunile de modificare a datelor se completează în cadrul unei tranzacții, asigurând consistența datelor în cazul în care apare o eroare.

Sfat

Acest articol oferă un scenariu exemplu și o arhitectură generală de exemplu pentru a ilustra cum aplicațiile canvas care folosesc Dataverse pot transforma logica de business complexă către API-uri personalizate Dataverse și funcții Power Fx pentru a îmbunătăți performanța. Poți modifica exemplul de arhitectură pentru multe scenarii și industrii diferite.

Diagrama arhitecturii

În această diagramă, funcțiile Power Fx sunt folosite pentru a muta logica de business complexă din aplicația canvas în Dataverse. Poți folosi și un API personalizat Dataverse pentru a obține același rezultat. Consultați Recomandările pentru a decide ce opțiune să folosiți.

Diagramă de arhitectură care arată diferența dintre folosirea capabilităților integrate ale aplicației Canvas pentru operațiuni de date și utilizarea funcțiilor Power Fx.

Workflow

  1. Aplicația Power Apps Canvas folosește Dataverse pentru a gestiona alocarea resurselor. Aplicația folosește o funcție Power Fx (un API personalizat Dataverse ar avea același scop) pentru operațiuni cu date grele, în loc să folosească direct capabilități de acces integrate. Aplicația folosește în continuare capabilități încorporate Dataverse pentru operațiuni și sarcini cu volum redus de date care nu necesită suport tranzacțional.

  2. Funcția Power Fx (cu API-ul personalizat Dataverse) este configurată să transmită parametrii de intrare din aplicația apelantă și să primească rezultatul (parametrii de răspuns) de la funcție (sau API) prin parametrii de ieșire definiți. Pentru:

    • Funcție Power Fx (previzualizare): Implementează logica în Power Apps Studio. Prin utilizarea funcțiilor Power Fx, producătorii pot construi logică complexă cu puțină sau deloc expertiză în programare. Află mai multe despre funcțiile Power Fx.

    • API-ul personalizat Dataverse: Implementează logica creând un plug-in Dataverse .NET. Plug-in-urile personalizate .NET necesită mai multe cunoștințe de programare, dar oferă un control și o extensibilitate mai mare. Află mai multe despre API-urile personalizate Dataverse.

Detalii despre cazurile de utilizare

Power Apps permite organizațiilor să creeze experiențe personalizate pentru utilizatori și să centralizeze logica de business. Prin utilizarea Power Apps, poți obține o arhitectură a datelor mai eficientă și reduce volumul de lucru pe partea clientului.

În exemplul următor, aplicația canvas Power Apps ajută creatorii să aloce eficient resurse către echipe și sarcini. Poți aplica acest model arhitectural în scenarii similare în care aplicația canvas include operații de date și necesită:

  • Mai multe bucle în aplicația canvas, lucru pe care nu îl poți realiza folosind funcția Concurentă .
  • Calcule intensive pentru multiple transformări de date.
  • Timp de execuție constant, independent de numărul de elemente dintr-o buclă sau de conexiunea la internet a utilizatorului.
  • Consistența datelor prin mai multe operații de modificare a datelor.

Pentru a aloca resursele, un creator trebuie să specifice locațiile, sarcinile, sub-sarcinile și alte metadate aferente alocării. În aplicația canvas, ecranul "Prezentare generală a resurselor" afișează mai multe niveluri de date corelate, cum ar fi:

  • Resurse
    • Localizare
      • Sarcini
        • Sub-sarcini
          • Aprobare

Pentru a atinge acest scop, poți implementa logica aplicației folosind Power Fx după cum urmează:

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

Această logică generează mai multe apeluri HTTP către Dataverse atunci când aplicația rulează. Deși cea mai bună practică este să consolidezi datele în vizualizările Dataverse sau să folosești funcții concurente sau alte tehnici Power Fx, această abordare nu este întotdeauna posibilă sau nu atinge obiectivele de performanță.

Pentru a rezolva această problemă, eliminați apelurile HTTP multiple din aplicația canvas prin transformarea datelor — procesarea datelor și rezultatele necesare — într-un singur răspuns. Această abordare reduce timpul de așteptare pentru recuperarea datelor, îmbunătățește performanța generală a aplicației canvas și oferă o experiență mai fluidă și mai receptivă utilizatorului. Prin centralizarea logicii transformării datelor, asiguri o procesare consistentă și eficientă pe partea de server, ceea ce face soluția scalabilă pentru volume mari de date și transformări complexe.

Opțiuni

Atât API-urile personalizate Dataverse, cât și funcțiile Power Fx extind logica de business a Dataverse.

Funcții Power Fx

O funcție Power Fx creează o abstracție a capabilității API personalizate Dataverse pe care o poți folosi pentru logică.

Funcțiile Power Fx extind logica de business a Dataverse și pot fi invocate la cerere din componente Power Platform precum aplicațiile Canvas Power Apps, fluxurile Power Automate și din agenți custom creați cu Microsoft Copilot Studio. Această funcționalitate suportă implementarea unei logici mai de bază, care nu este suficient de complexă pentru a necesita utilizarea completă a capabilității API personalizate Dataverse.

API-uri personalizate Dataverse

Un plug-in Dataverse este un handler de evenimente personalizat care rulează ca răspuns la evenimente specifice. În cazul unui API personalizat Dataverse, când definești API-ul, acesta creează un eveniment personalizat pe care aplicația îl generează când folosește API-ul. Implementezi aceste plug-in-uri ca clase personalizate compilate într-un ansamblu .NET Framework, pe care apoi îl încarci și îl înregistrezi în Dataverse.

Plug-in-urile extind logica de afaceri a Dataverse permițând dezvoltatorilor să scrie cod personalizat pentru execuție atunci când apar anumite evenimente, cum ar fi crearea, actualizarea sau ștergerea înregistrărilor, sau prin apeluri directe folosind API-ul personalizat. Această funcționalitate susține implementarea unor procese de afaceri mai complexe și personalizate în cadrul Power Platform, facilitând integrarea completă cu aplicațiile canvas sau Power Automate.

Folosind atât funcții Power Fx, cât și API-uri personalizate Dataverse, creatorii pot invoca o acțiune de funcție direct într-o formulă, suportând atât acțiuni legate, cât și nelegate. De asemenea, pot adăuga un obiect de limbaj de mediu Power Fx în aplicația lor, permițând accesul la funcții. Prin utilizarea API-urilor personalizate Dataverse, creatorii pot gestiona câmpuri de obiect netipizate atât pentru intrări, cât și pentru ieșiri.

Recomandări

Atât funcțiile Power Fx, cât și API-urile personalizate Dataverse efectuează operații de modificare a datelor într-o tranzacție.

Alege funcțiile Power Fx dacă cazul tău de utilizare îndeplinește aceste criterii:

  • Logica ta nu este excesiv de complexă și poate fi exprimată folosind Power Fx.
  • Vrei să dai putere creatorilor (non-dezvoltatorilor) să construiască și să mențină logica.
  • Preferi o abordare low-code care să se integreze perfect cu portalul Power Apps.
  • Ai nevoie de consistență tranzacțională , dar nu ai nevoie de capabilități avansate .NET.
  • Vrei să centralizezi logica pentru reutilizare între aplicații și fluxuri fără a implica dezvoltatorii .NET.

Află mai multe în secțiunea Funcții în Microsoft Dataverse (previzualizare).

Alege API-uri personalizate Dataverse dacă cazul tău de utilizare cere:

  • Logică de afaceri complexă pe care Power Fx nu o poate exprima.
  • Capabilități avansate precum gestionarea personalizată a erorilor, telemetria și integrarea cu sisteme externe.
  • Expertiza în dezvoltarea .NET este disponibilă și acceptabilă în fluxul tău de lucru.
  • Control total asupra pipeline-ului de execuție, inclusiv înregistrarea plug-in-urilor și monitorizarea.
  • Telemetrie și diagnostic, cum ar fi Application Insights pentru monitorizarea sănătății.

Află mai multe în Creează și folosește API-uri personalizate.

Dacă scopul tău este să eficientizezi performanța aplicațiilor Canvas, menținând în același timp soluția accesibilă și ușor de întreținut de către producători, funcțiile Power Fx sunt alegerea mai bună. Dacă construiești un backend critic pentru misiune, foarte personalizat, ia în considerare API-urile personalizate Dataverse.

Alternative

O altă abordare a acestui tipar este mutarea operațiunilor de date și logicii către un API REST și apoi implementarea unui conector personalizat pentru a permite utilizarea operațiunilor din Power Apps. Diferența față de această abordare constă în locul unde se execută operațiunile logice și de date. În acest caz, rulează în resursa de calcul care implementează API-ul REST, cum ar fi o funcție Azure.

Pentru că nu rulează în sandbox-ul runtime Dataverse, operațiunile de date sunt mai rapide decât cele ale clientului, dar mai lente decât cele efectuate în Dataverse. În mod similar, logica nu rulează în contextul tranzacției Dataverse. Dacă nu se fac pași speciali, fiecare operație de date este independentă și nu se finalizează ca unitate tranzacțională.

Află mai multe în Folosește API-urile REST pentru a extinde funcționalitatea aplicațiilor canvas.

Considerații

Aceste considerații implementează pilonii principiului *Well-Arhitected*, un set de principii directoare care îmbunătățesc calitatea unui volum de muncă. Power Platform Aflați mai multe în *Well-Architected* Microsoft Power Platform .

Fiabilitate

Proiectează-ți volumul de muncă pentru a evita complexitatea inutilă: Deplasarea operațiunilor și logicii datelor din aplicația canvas evită complexitatea inutilă a aplicației. Această abordare centralizează și logica astfel încât alte aplicații din organizație să o poată folosi. În plus, producătorii Power Apps beneficiază de îmbunătățiri de performanță fără a adăuga complexitate aplicației.

Testează reziliența și disponibilitatea: Mutarea logicii din aplicația canvas către API-urile personalizate Dataverse sau funcții Power Fx îți permite să testezi API-ul sau funcția independent de aplicație.

Măsoară și publică indicatori de sănătate (API-uri personalizate Dataverse): API-urile personalizate Dataverse oferă monitorizare avansată și telemetrie prin plug-in-ul .NET. Pentru a asigura o urmărire adecvată, luați în considerare utilizarea jurnalizării Application Insights .

Excelență operațională

Adoptați practici sigure de implementare: Standardizați implementarea modificărilor în aplicația Power Apps folosind procese automatizate de implementare, cum ar fi pipeline-urile. Promovați aplicația în producție numai după testarea modificărilor. Ca componente de soluție, API-urile personalizate Dataverse și funcțiile Power Fx se implementează împreună cu aplicația atunci când sunt în aceeași soluție Dataverse. Această abordare minimizează riscul ca componentele să nu fie sincronizate în mediile tale.

Implementează o strategie de atenuare a eșecului de implementare: Când implementezi aplicația și API-ul personalizat Dataverse sau funcția Power Fx împreună, strategia ta de atenuare este simplificată deoarece urmează aceeași strategie de rollback sau fix ca aplicația.

Eficiența performanței

Proiectează pentru a îndeplini cerințele de performanță: Evaluează cerințele de performanță și volum de date ale soluției tale. Revizuiește modul în care aplicația ta accesează datele și dacă folosirea unor surse de date diferite de Power Apps încetinește performanța din cauza latenței cererii individuale trimise fiecărui depozit de date. De exemplu, dacă logica aplicației tale funcționează pe mai multe rânduri din sursa de date, ai putea transfera tot traficul de rețea către API-ul sau funcția personalizată. Reducerea la o singură interacțiune cu API-ul sau funcția personalizată, care apoi gestionează comunicarea cu Dataverse, face operațiunile mai eficiente.

Optimizează logica (API-uri personalizate Dataverse): Pe măsură ce logica devine mai complexă într-o aplicație canvas, API-urile personalizate Dataverse îți permit să transferi acea logică către un serviciu centralizat și reutilizabil.

Performanța testării: Pe lângă testarea funcționalității și a eșecurilor, testează și dezvoltă un punct de referință pentru performanță. Evaluează această bază în timpul ciclului de lansare dacă API-ul personalizat Dataverse sau funcția Power Fx este sensibilă la modificările timpului de finalizare a muncii.

Colegi

Microsoft menține acest articol. Următorii colaboratori au scris acest articol.

Autori principali: