Freigeben über


Optimieren der Leistung von Canvas-Apps, die komplexe Geschäftslogik erfordern

Da Organisationen zunehmend auf Power Platform angewiesen sind, skalierbare, datengesteuerte Anwendungen zu erstellen, wird die Auswahl des richtigen Ansatzes für die Implementierung von Geschäftslogik entscheidend. Diese Referenzarchitektur bietet zwei Optionen: Power Fx-Funktionen und benutzerdefinierte Dataverse-APIs zur Optimierung der Leistung und Wartung in Power Apps-Canvasanwendungen.

Scenario

Wenn eine Anwendung Daten abfragt oder mehrere Änderungen ausführt, sendet sie standardmäßig einzelne HTTP-Netzwerkanforderungen an Dataverse. Dataverse gibt Daten an die Anwendung zurück, und die Anwendungslogik verarbeitet sie.

Dieses Implementierungsmuster verursacht Wartezeiten, insbesondere wenn die App mehrere Anforderungen sendet, z. B. in einer ForAll-Funktion. Die Wartezeit wirkt sich negativ auf die Leistung und die Benutzererfahrung aus. Wenn die App beispielsweise Daten mehrmals in einer ForAll-Schleife abruft und transformiert, kann die Wartezeit erheblich werden, was zu einer langsamen und ineffizienten Benutzererfahrung führt.

Um die Dateninteraktion zu optimieren, verschieben Sie Logik- und Datenabrufvorgänge aus der Canvas-App in Dataverse, indem Sie entweder benutzerdefinierte Dataverse-APIs oder Power Fx-Funktionen verwenden. Datenänderungsvorgänge werden innerhalb einer Transaktion abgeschlossen, wodurch die Datenkonsistenz sichergestellt wird, wenn ein Fehler auftritt.

Tipp

Dieser Artikel enthält ein Beispielszenario und eine generalisierte Beispielarchitektur, um zu veranschaulichen, wie Canvas-Apps, die Dataverse verwenden, komplexe Geschäftslogik in benutzerdefinierte Dataverse-APIs und Power Fx-Funktion verschieben können, um die Leistung zu verbessern. Sie können das Architekturbeispiel für viele verschiedene Szenarien und Branchen ändern.

Architekturdiagramm

In diesem Diagramm werden Power Fx-Funktionen verwendet, um komplexe Geschäftslogik von der Canvas-App auf Dataverse zu verschieben. Sie können auch eine benutzerdefinierte Dataverse-API verwenden, um dasselbe Ergebnis zu erzielen. Weitere Hinweise finden Sie in den Empfehlungen, um zu entscheiden, welche Option verwendet werden soll.

Architekturdiagramm, das den Unterschied zwischen der Verwendung integrierter Canvas-App-Funktionen für Datenvorgänge und die Verwendung von Power Fx-Funktionen zeigt.

Arbeitsablauf

  1. Die Power Apps-Canvasanwendung verwendet Dataverse, um die Zuordnung von Ressourcen zu verwalten. Die App verwendet eine Power Fx-Funktion (eine benutzerdefinierte Dataverse-API würde denselben Zweck erfüllen) für schwere Datenvorgänge anstelle von integrierten Zugriffsfunktionen. Die App verwendet weiterhin integrierte Dataverse-Funktionen für Vorgänge mit niedrigeren Datenmengen und Aufgaben, die keine Transaktionsunterstützung erfordern.

  2. Die Power Fx-Funktion (mit benutzerdefinierter Dataverse-API) ist so konfiguriert, dass Eingabeparameter aus der aufrufenden App übergeben und das Ergebnis (Antwortparameter) von der Funktion (oder API) über definierte Ausgabeparameter empfangen werden. Für:

    • Power Fx-Funktion (Vorschau): Implementieren Sie Logik im Power Apps-Studio. Mithilfe von Power Fx-Funktionen können Hersteller komplexe Logik mit wenig oder ohne Codierungskompetenz erstellen. Weitere Informationen finden Sie in Power Fx-Funktionen.

    • Benutzerdefinierte Dataverse-API: Implementieren Sie Logik, indem Sie ein Dataverse .NET-Plug-In erstellen. Benutzerdefinierte .NET-Plug-Ins erfordern mehr Codierungskenntnisse, bieten jedoch eine größere Kontrolle und Erweiterbarkeit. Weitere Informationen finden Sie in benutzerdefinierten Dataverse-APIs.

Anwendungsfalldetails

Mit Power Apps können Organisationen benutzerdefinierte Benutzeroberflächen erstellen und Geschäftslogik zentralisieren. Mithilfe von Power Apps können Sie eine effizientere Datenarchitektur erreichen und die clientseitige Arbeitsauslastung reduzieren.

Im folgenden Beispiel hilft die Power Apps-Canvasanwendung den Herstellern, Ressourcen effizient Teams und Aufgaben zuzuweisen. Sie können dieses Architekturmuster auf ähnliche Szenarien anwenden, in denen die Canvasanwendung Datenvorgänge umfasst und folgendes erfordert:

  • Mehrere Schleifen in der Canvas-App können nicht mit der Concurrent-Funktion realisiert werden.
  • Intensive Berechnungen für mehrere Datentransformationen.
  • Konsistente Ausführungszeit, unabhängig von der Anzahl der Elemente in einer Schleife oder der Internetverbindung des Benutzers.
  • Datenkonsistenz bei mehreren Datenänderungsvorgängen.

Um Ressourcen zuzuweisen, muss ein Ersteller die Orte, Vorgänge, Unteraufgaben und andere zugehörige Metadaten der Zuweisung angeben. In der Canvas-App zeigt der Bildschirm "Ressourcenübersicht" mehrere Ebenen korrelierter Daten an, z. B.:

  • Ressourcen
    • Speicherort
      • Aufgaben
        • Unteraufgaben
          • Approval

Um dieses Ziel zu erreichen, können Sie die Anwendungslogik mithilfe von Power Fx wie folgt implementieren:

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

Diese Logik generiert mehrere HTTP-Aufrufe an Dataverse, wenn die Anwendung ausgeführt wird. Die bewährte Methode besteht zwar darin, Daten in Dataverse-Ansichten zu konsolidieren oder gleichzeitige Funktionen oder andere Power Fx-Techniken zu verwenden, dieser Ansatz ist jedoch nicht immer möglich oder erfüllt keine Leistungsziele.

Um dieses Problem zu beheben, beseitigen Sie mehrere HTTP-Aufrufe aus der Canvas-App, indem Sie die Datentransformation – Verarbeitung von Daten und erforderlichen Ergebnissen – in eine einzige Antwort verschieben. Dieser Ansatz reduziert die Wartezeit auf den Datenempfang, verbessert die Gesamtleistung der Canvas-App und bietet eine reibungslosere und reaktionsfähigere Benutzererfahrung. Durch die Zentrale der Datentransformationslogik stellen Sie eine konsistente und effiziente Verarbeitung auf serverseitiger Seite sicher, wodurch die Lösung für große Datenmengen und komplexe Transformationen skalierbar ist.

Options

Sowohl benutzerdefinierte Dataverse-APIs als auch Power Fx-Funktionen erweitern die Geschäftslogik von Dataverse.

Power Fx-Funktionen

Eine Power Fx-Funktion erstellt eine Abstraktion der benutzerdefinierten Dataverse-API-Fähigkeiten, die mithilfe von Power Fx in der Logik verwendet werden können.

Power Fx-Funktionen erweitern die Geschäftslogik von Dataverse und können bei Bedarf von Power Platform-Komponenten wie Power Apps Canvas-Apps, Power Automate-Flüssen und von benutzerdefinierten Agents aufgerufen werden, die mit Microsoft Copilot Studio erstellt wurden. Diese Funktionalität unterstützt die Implementierung grundlegenderer Logik, die nicht komplex genug ist, um die vollständige benutzerdefinierte Dataverse-API-Funktion zu verwenden.

Benutzerdefinierte Dataverse-APIs

Ein Dataverse-Plug-In ist ein benutzerdefinierter Ereignishandler, der als Reaktion auf bestimmte Ereignisse ausgeführt wird. Bei einer benutzerdefinierten Dataverse-API wird beim Definieren der API ein benutzerdefiniertes Ereignis erstellt, das von der Anwendung ausgelöst wird, wenn sie die API verwendet. Sie implementieren diese Plug-Ins als benutzerdefinierte Klassen, die in einer .NET Framework-Assembly kompiliert wurden, die Sie dann in Dataverse hochladen und registrieren.

Plug-Ins erweitern die Geschäftslogik von Dataverse, indem Entwickler benutzerdefinierten Code für die Ausführung schreiben können, wenn bestimmte Ereignisse auftreten, z. B. Erstellen, Aktualisieren oder Löschen von Datensätzen oder über direkte Aufrufe mithilfe der benutzerdefinierten API. Diese Funktionalität unterstützt die Implementierung komplexerer und maßgeschneiderter Geschäftsprozesse in Power Platform, wodurch die vollständige Integration in Canvas-Apps oder Power Automate erleichtert wird.

Mithilfe von Power Fx-Funktionen und benutzerdefinierten Dataverse-APIs können Entwickler eine Funktionsaktion direkt in einer Formel aufrufen und sowohl gebundene als auch ungebundene Aktionen unterstützen. Sie können ihrer App auch ein Power Fx-Umgebungsspracheobjekt hinzufügen, das den Zugriff auf Funktionen ermöglicht. Mithilfe von benutzerdefinierten Dataverse-APIs können Hersteller nicht typisierte Objektfelder für Eingaben und Ausgaben verarbeiten.

Recommendations

Sowohl Power Fx-Funktionen als auch benutzerdefinierte Dataverse-APIs schließen Datenänderungsvorgänge in einer Transaktion ab.

Wählen Sie Power Fx-Funktionen aus, wenn Ihr Anwendungsfall die folgenden Kriterien erfüllt:

  • Ihre Logik ist nicht übermäßig komplex und kann mithilfe von Power Fx ausgedrückt werden.
  • Sie möchten Entscheidungsträgern (Nichtentwicklern) die Möglichkeit geben, die Logik zu erstellen und zu verwalten.
  • Sie bevorzugen einen Low-Code-Ansatz , der nahtlos in das Power Apps-Portal integriert wird.
  • Sie benötigen Transaktionskonsistenz , erfordern jedoch keine erweiterten .NET-Funktionen.
  • Sie möchten die Logik für die Wiederverwendung über Apps und Flüsse hinweg zentralisieren , ohne .NET-Entwickler einzubeziehen.

Weitere Informationen zu Funktionen in Microsoft Dataverse (Vorschau)

Wählen Sie benutzerdefinierte Dataverse-APIs aus, wenn für Ihren Anwendungsfall Folgendes erforderlich ist:

  • Komplexe Geschäftslogik , die Power Fx nicht ausdrücken kann.
  • Erweiterte Funktionen wie benutzerdefinierte Fehlerbehandlung, Telemetrie und Integration in externe Systeme.
  • .NET-Entwicklungskompetenz ist in Ihrem Workflow verfügbar und akzeptabel.
  • Vollzugriff auf die Ausführungspipeline, einschließlich Plug-In-Registrierung und Überwachung.
  • Telemetrie und Diagnose, wie z. B. Application Insights zur Gesundheitsüberwachung.

Weitere Informationen finden Sie unter Erstellen und Verwenden von benutzerdefinierten APIs.

Wenn Ihr Ziel darin besteht, die Leistung von Canvas-Apps zu optimieren, während die Lösung für Ersteller zugänglich und wartbar bleibt, sind Power Fx-Funktionen die bessere Wahl. Wenn Sie ein unternehmenskritisches, hochgradig angepasstes Back-End erstellen, sollten Sie benutzerdefinierte Dataverse-APIs in Betracht ziehen.

Alternatives

Ein weiterer Ansatz für dieses Muster besteht darin, die Datenvorgänge und -logik in eine REST-API zu verschieben und dann einen benutzerdefinierten Connector zu implementieren, damit die Vorgänge aus Power Apps verwendet werden können. Der Unterschied bei diesem Ansatz liegt darin, wo die Logik- und Datenvorgänge ausgeführt werden. In diesem Fall werden sie in der Computeressource ausgeführt, die die REST-API implementiert, z. B. eine Azure-Funktion.

Da sie nicht innerhalb der Dataverse-Laufzeit-Sandbox ausgeführt werden, sind Datenvorgänge schneller als die vom Client, aber langsamer als die in Dataverse ausgeführten. Ebenso wird die Logik nicht im Kontext der Dataverse-Transaktion ausgeführt. Sofern keine speziellen Schritte ausgeführt werden, ist jeder Datenvorgang unabhängig und wird nicht als Transaktionseinheit abgeschlossen.

Weitere Informationen finden Sie unter Verwendung von REST-APIs zum Erweitern der Funktionalität von Canvas-Apps.

Überlegungen

Diese Überlegungen implementieren die Säulen von Power Platform Well-Architected, eine Reihe von Leitprinzipien, welche die Qualität einer Workload verbessern. Weitere Informationen finden Sie unter Microsoft Power Platform Well-Architected.

Zuverlässigkeit

Entwerfen Sie Ihre Arbeitsauslastung, um unnötige Komplexität zu vermeiden: Das Verschieben Ihrer Datenvorgänge und Logik aus Ihrer Canvas-App heraus vermeidet unnötige Komplexität in der App. Mit diesem Ansatz wird auch die Logik zentralisiert, sodass andere Anwendungen in der Organisation sie verwenden können. Darüber hinaus profitieren Power Apps-Hersteller von Leistungsverbesserungen, ohne der App Komplexität hinzuzufügen.

Test auf Resilienz und Verfügbarkeit: Durch das Verschieben der Logik aus der Canvas-App auf benutzerdefinierte Dataverse-APIs oder Power Fx-Funktionen können Sie die API oder Funktion unabhängig von der App testen.

Messung und Veröffentlichung von Gesundheitsindikatoren (benutzerdefinierte Dataverse-APIs): Benutzerdefinierte Dataverse-APIs bieten erweiterte Überwachung und Telemetrie über das .NET-Plug-In. Um eine angemessene Nachverfolgung sicherzustellen, sollten Sie die Application Insights-Protokollierung verwenden.

Operative Exzellenz

Übernehmen sie sichere Bereitstellungsmethoden: Standardisieren sie die Bereitstellung von Änderungen an der Power Apps-Anwendung mithilfe automatisierter Bereitstellungsprozesse, z. B. Pipelines. Stufen Sie die Anwendung erst in die Produktion hoch, nachdem Sie die Änderungen getestet haben. Als Lösungskomponenten werden benutzerdefinierte APIs und Power Fx-Funktionen von Dataverse zusammen mit der App bereitgestellt, wenn sie sich in derselben Dataverse-Lösung befinden. Dieser Ansatz minimiert das Risiko von nicht synchronisierten Komponenten in Ihren Umgebungen.

Implementieren Sie eine Strategie zur Risikominderung bei Bereitstellungsfehlern: Wenn Sie die App und die benutzerdefinierte Dataverse-API oder Power Fx-Funktion zusammen bereitstellen, wird Ihre Entschärfungsstrategie vereinfacht, da sie auf die gleiche Rollback- oder Fixstrategie wie die App folgt.

Leistungseffizienz

Entwerfen sie, um leistungsanforderungen zu erfüllen: Bewerten Sie die Leistungs- und Datenvolumenanforderungen Ihrer Lösung. Überprüfen Sie, wie Ihre App auf Daten zugreift und ob Power Apps mit unterschiedlichen Datenquellen die Leistung aufgrund der Latenz der einzelnen Anforderungen verlangsamen, die an jeden Datenspeicher gesendet werden. Wenn die Logik Ihrer App beispielsweise über viele Zeilen in der Datenquelle hinweg funktioniert, können Sie möglicherweise den gesamten Netzwerkdatenverkehr in die benutzerdefinierte API oder Funktion verschieben. Die Reduzierung auf eine einzelne Interaktion mit der benutzerdefinierten API oder Funktion, die dann die Kommunikation mit Dataverse verarbeitet, macht Vorgänge effizienter.

Optimieren der Logik (benutzerdefinierte Dataverse-APIs): Da die Logik in einer Canvas-App komplexer wird, können Sie diese Logik von Dataverse auf einen zentralen, wiederverwendbaren Dienst auslagern.

Testleistung: Zusammen mit Tests für Funktionalität und Fehler testen und entwickeln Sie einen Basisplan für die Leistung. Bewerten Sie diese Basis während des Veröffentlichungszyklus, wenn die benutzerdefinierte Dataverse-API oder Power Fx-Funktion empfindlich gegenüber Änderungen der Zeit bis zur Fertigstellung der Arbeit ist.

Beitragende

Microsoft verwaltet diesen Artikel. Die folgenden Mitwirkenden haben diesen Artikel geschrieben.

Hauptautoren: