Prestaties, stabiliteit en betrouwbaarheid van componenten verbeteren met oplossingscontrole
Om aan complexe bedrijfsbehoeften te voldoen, produceren makers vaak zeer geavanceerde oplossingen waarmee het Microsoft Dataverse-platform wordt aangepast en uitgebreid. Geavanceerde implementaties brengen een verhoogde kans op problemen met prestaties, stabiliteit en betrouwbaarheid met zich mee en dat kan weer een negatief effect hebben op de eindgebruikerservaring. Het kan zeer ingewikkeld en tijdrovend zijn om deze problemen vast te stellen en er een oplossing voor te vinden. Met de oplossingscontrolefunctie kunt u een uitgebreide statische analysecontrole op uw oplossingen uitvoeren waarbij een set regels voor best practices wordt toegepast, en deze problematische patronen snel vaststellen. Als de controle is voltooid, ontvangt u een gedetailleerd rapport met de vastgestelde problemen, de onderdelen en code waarop de problemen betrekking hebben en koppelingen naar documentatie waarin wordt beschreven hoe u elk probleem kunt oplossen.
Met de oplossingscontrole worden de volgende oplossingsonderdelen geanalyseerd:
- Dataverse aangepaste werkstroomactiviteiten
- Dataverse-webresources (HTML en JavaScript)
- Dataverse-configuraties, zoals SDK-berichtstappen
- Power Automate-stromen (via stroomcontrole)
- Power Fx-expressies (via app-controle)
Oplossingscontrole werkt met onbeheerde oplossingen die vanuit een omgeving kunnen worden geëxporteerd.
Notitie
- In dit onderwerp wordt uitgelegd hoe u oplossingscontrole uitvoert vanuit de Power Apps-portal van de maker. Er is ook een PowerShell-module beschikbaar die u kunt gebruiken om rechtstreeks met de service te communiceren. De module Microsoft.PowerApps.Checker.PowerShell kan worden gebruikt voor analyse van beheerde en onbeheerde oplossingen voor Power Apps-omgevingen of om de service te automatiseren en te integreren in uw pipelines voor maken en vrijgeven. Meer informatie: Overzicht van Microsoft.PowerApps.Checker.PowerShell
- Oplossingscontrole ondersteunt globale variabelen voor ECMAScript 2015 (ES6) en syntaxis tot en met ECMAScript 2018 (ES9). Wanneer JavaScript wordt gedetecteerd met globale variabelen later dan ES6 of syntaxis later dan ES9, wordt een webprobleem door niet-ondersteunde syntaxis voor de webresource gemeld.
- Het gebruik van oplossingscontrole garandeert niet dat het importeren van een oplossing zal slagen. De statische analysecontroles die aan de hand van de oplossing worden uitgevoerd, kennen de geconfigureerde status van de doelomgeving niet en het succes van de import kan afhankelijk zijn van andere oplossingen of configuraties in de omgeving.
De oplossingscontrole uitvoeren
Meld u aan bij Power Apps.
Selecteer Oplossingen in het linkerdeelvenster. Als het item zich niet in het deelvenster van het zijpaneel bevindt, selecteert u …Meer en selecteert u vervolgens het gewenste item.
Naast de onbeheerde oplossing die u wilt analyseren, selecteert u ..., wijst u Oplossingscontrole aan en selecteert u vervolgens Uitvoeren.
De opdrachtknop Oplossingscontrole heeft een laadindicator en u ziet het bericht Actief... in de kolom Oplossingcontrole van de lijst Oplossing.
Let op het volgende:
De oplossingcontrole kan een paar minuten duren voordat de analyse is voltooid.
U ontvangt een e-mailbericht en een melding in het gebied Meldingen van de Power Apps-site wanneer de controle is voltooid.
Geef het rapport weer wanneer de controle is voltooid.
Een controle annuleren
Nadat u een oplossingscontrole in uw omgeving hebt ingediend, kan de controle worden geannuleerd via het statusdeelvenster rechtsboven op de pagina Oplossingen.
Wanneer u een controle annuleert, stopt de oplossingcontrole met uitvoeren en wordt de status van de oplossingcontrole weer op de vorige status ingesteld.
Statuswaarden oplossingscontrole
Als u de oplossingscontrole in uw omgeving installeert, wordt de kolom Oplossingscontrole beschikbaar in de lijst Oplossingen. In deze kolom worden de statuswaarden van de oplossingsanalyse voor een oplossing weergegeven.
Status | Beschrijving |
---|---|
Is niet uitgevoerd | De oplossing is nooit geanalyseerd. |
Wordt uitgevoerd | De oplossing wordt geanalyseerd. |
Kan niet worden voltooid | Oplossingsanalyse is aangevraagd, maar de analyse is niet voltooid. |
Resultaten vanaf datum en tijd | Oplossingsanalyse is voltooid en de resultaten kunnen worden gedownload. |
Kan niet worden voltooid. Resultaat vanaf datum en tijd | De laatste analyseaanvraag is niet voltooid. De laatste succesvolle resultaten kunnen worden gedownload. |
Gecontroleerd door Microsoft | Dit is een door Microsoft beheerde oplossing. Oplossingsanalyse wordt niet toegestaan voor deze oplossingen. |
Gecontroleerd door Publisher | Dit is een beheerde oplossing van derden. Momenteel is er geen oplossingsanalyse beschikbaar voor deze oplossingen. |
Het oplossingscontrolerapport bekijken
Wanneer een oplossingscontrole is voltooid, kunt u het analyserapport in de portal bekijken of het rapport downloaden vanuit uw webbrowser. In de portal hebt u opties om resultaten te sorteren op Probleem, Locatie of op Ernst en gedetailleerde informatie te bekijken over problemen die in uw oplossing zijn aangetroffen.
Selecteer Oplossingen in het linkerdeelvenster. Als het item zich niet in het deelvenster van het zijpaneel bevindt, selecteert u …Meer en selecteert u vervolgens het gewenste item.
Naast de onbeheerde oplossing waarbij u het oplossingscontrolerapport wilt bekijken, selecteert u ..., wijst u Oplossingscontrole aan en selecteert u vervolgens Resultaten weergeven.
Selecteer een probleem om de details en richtlijnen voor het oplossen ervan te bekijken.
De resultaten van de oplossingscontrole kunnen ook worden gedownload. Het zipbestand van de oplossingcontrole wordt gedownload naar de map die door uw webbrowser is opgegeven. Het rapport is in de indeling Excel te downloaden en bevat verschillende visualisaties en kolommen die u helpen bij het vaststellen van de gevolgen, het type en de locatie van elk probleem dat in uw oplossing is gedetecteerd. Er wordt ook een koppeling naar gedetailleerde richtlijnen voor het oplossen van het probleem verschaft.
- Selecteer Oplossingen in het linkerdeelvenster. Als het item zich niet in het deelvenster van het zijpaneel bevindt, selecteert u …Meer en selecteert u vervolgens het gewenste item.
- Naast de onbeheerde oplossing waarnaar u het oplossingscontrolerapport wilt downloaden, selecteert u ..., wijst u Oplossingscontrole aan en selecteert u vervolgens Resultaten downloaden.
- Het zipbestand van de oplossingcontrole wordt gedownload naar de map die door uw webbrowser is opgegeven.
Hier vindt u een overzicht van elke kolom in het rapport.
Rapportkolom | Beschrijving | Geldt voor onderdeel |
---|---|---|
Probleem | De titel van het probleem dat in de oplossing is vastgesteld | Alle |
Categorie | De categorisering van het geïdentificeerde probleem, zoals Prestaties, Onderhoudbaarheid, Gebruik, Ondersteuning, Ontwerp, Beveiliging, Toegankelijkheid of Upgradegereedheid. | All |
Ernst | Het potentiële gevolg van het vastgestelde probleem. Beschikbare gevolgtypen zijn Kritiek, Hoog, Normaal, Laag en Informatief. | All |
Richtlijnen | Koppeling naar artikel waarin het probleem, het gevolg en de aanbevolen actie worden beschreven. | Alle |
Onderdeel | Het oplossingsonderdeel waar het probleem is vastgesteld. | Alle |
Location | De locatie en/of het bronbestand van het onderdeel waar het vastgestelde probleem is opgetreden, zoals de assembly of JavaScript-bestandsnaam. | Alle |
Regelnummer | De regelnummerverwijzing van het probleem in het betrokken webresourceonderdeel. | Webresources |
Module | Naam van module waarin het probleem dat is vastgesteld in de assembly, is gedetecteerd. | Aangepaste werkstroomactiviteit |
Type | Het type van het probleem dat in de assembly is vastgesteld. | Aangepaste werkstroomactiviteit |
Lid | Lid van het probleem dat in de assembly is vastgesteld. | Aangepaste werkstroomactiviteit |
Instructie | De code-instructie of configuratie die resulteerde in het probleem. | Alle |
Reacties | Details over het probleem met oplossingsstappen op hoog niveau. | All |
Regels voor oplossingscontrole lokaal uitvoeren
U kunt regels voor oplossingscontrole uitvoeren in uw ontwikkelomgeving om problemen veel eerder op te sporen terwijl u uw oplossingsresources maakt. Dit wordt momenteel ondersteund voor webbronnen (JavaScript en TypeScript). Ga voor meer informatie naar de NPM-pakket @microsoft/eslint-plugin-power-apps.
Regels voor best practices gebruikt door oplossingscontrole
De volgende tabel bevat het onderdeeltype, de regelbeschrijving, de ernst en de categorie. Kritieke overtredingen worden geblokkeerd of gewaarschuwd wanneer deze zijn geconfigureerd voor het afdwingen van oplossingscontrole met beheerde omgevingen. Meer informatie: Oplossingscontrole gebruiken in Beheerde omgevingen
Oplossingsonderdeel | Naam van de regel | Beschrijving van regel | Ernst | Categorie |
---|---|---|---|---|
Invoegtoepassing of werkstroomactiviteit | meta-remove-dup-reg | Vermijd dubbele registraties van Dataverse-invoegtoepassingen. | Kritiek | Prestaties |
Invoegtoepassing of werkstroomactiviteit | meta-avoid-reg-no-attribute | Neem filterkenmerken op met registraties van invoegtoepassingen van Dataverse. | Gemiddeld | Prestaties |
Invoegtoepassing of werkstroomactiviteit | meta-avoid-reg-retrieve | Wees voorzichtig met invoegtoepassingen van Dataverse die zijn geregistreerd voor Retrieve- en RetrieveMultiple-berichten. | Gemiddeld | Prestaties |
Invoegtoepassing of werkstroomactiviteit | meta-remove-inactive | Verwijder inactieve configuraties in Dataverse. | Laag | Onderhoud |
Invoegtoepassing of werkstroomactiviteit | meta-avoid-crm4-event | Gebruik geen fase van de Microsoft Dynamics CRM 4.0-plug-inregistratie. | Gemiddeld | Upgradegereedheid |
Invoegtoepassing of werkstroomactiviteit | meta-avoid-retrievemultiple-annotation | Vermijd het registreren van een plug-in voor RetrieveMultiple van annotaties. | Hoog | Gebruik |
Modelgestuurde app | meta-license-sales-entity-operations | De oplossing bevat entiteiten met beperkte SDK-berichten en -bewerkingen waarvoor een geldige Dynamics 365-licentie vereist is. | Laag | Licenties |
Modelgestuurde app | meta-license-fieldservice-customcontrols | De oplossing bevat aangepaste besturingselementen waarvoor een geldige Dynamics 365 Field Service-licentie vereist is. | Laag | Licenties |
Modelgestuurde app | meta-license-fieldservice-entity-operations | De oplossing bevat entiteiten met beperkte SDK-berichten en -bewerkingen waarvoor een geldige Dynamics 365 Field Service-licentie vereist is. | Laag | Licenties |
Webresources | use-async | Gebruik HTTP- en HTTPS-resources asynchroon. | Kritiek | Prestaties |
Webresources | avoid-modals | Vermijd het gebruik van modale dialoogvensters. | Hoog | Ondersteuning |
Webresources | avoid-dom-form | Hoog | Ondersteuning | |
Webresources | avoid-dom-form-event | Hoog | Ondersteuning | |
Webresources | avoid-crm2011-service-odata | Richt u niet op het Microsoft Dynamics CRM 2011 OData 2.0-eindpunt | Kritiek | Upgradegereedheid |
Webresources | avoid-crm2011-service-soap | Richt u niet op de Microsoft Dynamics CRM 2011 SOAP-services. | Kritiek | Upgradegereedheid |
Webresources | avoid-loadtheme | Gebruik loadTheme Fluent v8 API niet. |
Laag | Ondersteuning |
Webresources | avoid-browser-specific-api | Gebruik geen oude API's of browserplug-ins van Internet Explorer. | Kritiek | Upgradegereedheid |
Webresources | avoid-unpub-api | Hoog | Ondersteuning | |
Webresources | avoid-window-top | Hoog | Ondersteuning | |
Webresources | avoid-2011-api | Gebruik het afgeschafte Microsoft Dynamics CRM 2011-objectmodel niet. Volg in plaats daarvan de documentatie van Dataverse-web-API. | Hoog | Upgradegereedheid |
Webresources | use-relative-uri | Gebruik geen absolute Dataverse eindpunt-URL's. | Gemiddeld | Onderhoud |
Webresources | use-cached-webresource | Gemiddeld | Prestaties | |
Webresources | use-client-context | Gebruik clientcontexten. | Gemiddeld | Upgradegereedheid |
Webresources | use-navigation-api | Gebruik navigatie-API-parameters. | Gemiddeld | Upgradegereedheid |
Webresources | use-offline | Gemiddeld | Upgradegereedheid | |
Webresources | do-not-make-parent-assumption | Hoog | Ontwerpen | |
Webresources | use-org-setting | Gebruik organisatie-instellingen. | Gemiddeld | Upgradegereedheid |
Webresources | use-global-context | Gemiddeld | Upgradegereedheid | |
Webresources | use-grid-api | Gebruik de raster-API's. | Gemiddeld | Upgradegereedheid |
Webresources | use-utility-dialogs | Gemiddeld | Gebruik | |
Webresources | avoid-isActivityType | Vervang de Xrm.Utility.isActivityType-methode door de nieuwe Xrm.Utility.gettableMetadata en gebruik deze niet in lintregels. | Gemiddeld | Upgradegereedheid |
Webresources | meta-avoid-silverlight | Gebruik van Silverlight-webresource is afgeschaft. | Gemiddeld | Upgradegereedheid |
Webresources | remove-debug-script | Vermijd het opnemen van debug script in niet-ontwikkelomgevingen. | Gemiddeld | Gebruik |
Webresources | use-strict-mode | Gebruik indien mogelijk een strikte modus. | Gemiddeld | Gebruik |
Webresources | use-strict-equality-operators | Gebruik strikte gelijkheidsoperatoren. | Gemiddeld | Gebruik |
Webresources | avoid-eval | Gebruik de eval-functie of de functionele equivalenten ervan niet. | Kritiek | Beveiliging |
Webresources | avoid-with | Gebruik niet de operator 'met'. | Hoog | Prestaties |
Webresources | remove-alert | Gebruik de functie alert of gelijksoortige functies niet. | Gemiddeld | Gebruik |
Webresources | remove-console | Vermijd het gebruik van methoden op de console. | Gemiddeld | Gebruik |
Webresources | avoid-ui-refreshribbon | Vermijd het gebruik van refreshRibbon in formulier-onload en EnableRule. | Kritiek | Prestaties |
Webresources | use-getsecurityroleprivilegesinfo | Vermijd userSettings.securityRolePrivileges. Gebruik in plaats daarvan Use userSettings.getSecurityRolePrivilegesInfo. | Hoog | Prestaties |
Webresources | use-appsidepane-api | Gebruik Xrm.App.sidePanes.createPane in plaats van Xrm.Panels.loadPanel. | Gemiddeld | Upgradegereedheid |
Webresources | web-sdl-no-cookies | HTTP-cookies zijn een oud opslagmechanisme aan de clientzijde met inherente risico's en beperkingen. Gebruik in plaats daarvan Web Storage, IndexedDB of andere moderne methoden. | Gemiddeld | Beveiliging |
Webresources | web-sdl-no-document-domain | Schrijfbewerkingen naar de eigenschap document.domain moeten worden gecontroleerd om te voorkomen dat controles van dezelfde oorsprong worden omzeild. Het gebruik van domeinen van het hoogste niveau zoals azurewebsites.net is ten strengste verboden. | Gemiddeld | Beveiliging |
Webresources | web-sdl-no-document-write | Oproepen naar document.write of document.writeln bewerken DOM rechtstreeks zonder enige opschoning en moeten worden vermeden. Gebruik in plaats daarvan document.createElement() of vergelijkbare methoden. | Gemiddeld | Beveiliging |
Webresources | web-sdl-no-html-method | Directe aanroepen van de methode html() bewerken vaak DOM (bijvoorbeeld in het jQuery-framework) zonder enige opschoning en moeten worden vermeden. Gebruik in plaats daarvan document.createElement() of vergelijkbare methoden. | Gemiddeld | Beveiliging |
Webresources | web-sdl-no-inner-html | Toewijzingen aan eigenschappen innerHTML of outerHTML bewerken DOM rechtstreeks zonder enige opschoning en moeten worden vermeden. Gebruik in plaats daarvan document.createElement() of vergelijkbare methoden. | Gemiddeld | Beveiliging |
Webresources | web-sdl-no-insecure-url | Onveilige protocollen zoals HTTP of FTP moeten worden vervangen door hun versleutelde tegenhangers (HTTPS, FTPS) om te voorkomen dat mogelijk gevoelige gegevens in platte tekst over onbetrouwbare netwerken worden verzonden. | Gemiddeld | Beveiliging |
Webresources | web-sdl-no-msapp-exec-unsafe | Aanroepen van MSApp.execUnsafeLocalFunction() omzeilen validatie van scriptinjectie en moeten worden vermeden. | Gemiddeld | Beveiliging |
Webresources | web-sdl-no-postmessage-star-origin | Geef altijd een specifieke doeloorsprong op, niet * bij het verzenden van gegevens naar andere vensters met behulp van postMessage om gegevenslekken buiten de vertrouwensgrens te voorkomen. | Gemiddeld | Beveiliging |
Webresources | web-sdl-no-winjs-html-unsafe | Aanroepen van WinJS.Utilities.setInnerHTMLUnsafe() en vergelijkbare methoden voeren geen invoervalidatie uit en moeten worden vermeden. Gebruik in plaats daarvan WinJS.Utilities.setInnerHTML(). | Gemiddeld | Beveiliging |
Canvas-app | app-formula-issues-high | Raadpleeg verwijzingen naar Power Apps-formules voor aanvullende details. | Kritiek | Ontwerpen |
Canvas-app | app-formula-issues-medium | Raadpleeg verwijzingen naar Power Apps-formules voor aanvullende details. | Gemiddeld | Ontwerpen |
Canvas-app | app-formula-issues-low | Raadpleeg verwijzingen naar Power Apps-formules voor aanvullende details. | Laag | Ontwerpen |
Canvas-app | app-use-delayoutput-text-input | Gebruik in sommige scenario's uitgestelde belasting om de prestaties te verbeteren. | Gemiddeld | Prestaties |
Canvas-app | app-reduce-screen-controls | Beperk het aantal app-besturingselementen voor verbeterde prestaties. | Gemiddeld | Prestaties |
Canvas-app | app-include-accessible-label | Gebruik expliciete labels om de toegankelijkheid van apps te verbeteren. | Gemiddeld | Toegankelijkheid |
Canvas-app | app-include-alternative-input | Zorg ervoor dat alle interactieve elementen toegankelijk zijn voor alternatieve invoer. | Gemiddeld | Toegankelijkheid |
Canvas-app | app-avoid-autostart | Maak geen gebruik van automatisch starten op spelers binnen een app. | Gemiddeld | Toegankelijkheid |
Zie ook
Beste praktijken en richtlijnen voor de Dataverse
Aanbevolen procedures en richtlijnen voor modelgestuurde apps
Veelvoorkomende problemen en oplossingen voor Oplossingen controleren
Notitie
Laat ons uw taalvoorkeuren voor documentatie weten! Beantwoord een korte enquête. (houd er rekening mee dat deze in het Engels is)
De enquête duurt ongeveer zeven minuten. Er worden geen persoonlijke gegevens verzameld (privacyverklaring).
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor