Delen via


Aanbevolen procedures voor ontwikkelen met Microsoft Dynamics CRM 2015

 

Gepubliceerd: november 2016

Is van toepassing op: Dynamics CRM 2015

Dit onderwerp beschrijft aanbevolen procedures voor het aanpassen van Microsoft Dynamics CRM 2015 en Microsoft Dynamics CRM Online 2015 Update.

In dit onderwerp

Aanbevolen procedures voor prestaties

Aanbevolen procedures bij aanpassing

Aanbevolen methoden voor beveiliging

Aanbevolen methodes voor ISV-uitbreidbaarheid

Aanbevolen procedures voor prestaties

De volgende aanbevolen methoden kunnen u helpen code te schrijven die betere prestaties levert.

Meerdere threads gebruiken

Voeg ondersteuning voor threading toe aan uw toepassing om het werk over meerdere CPU's te verdelen. Bij deze suggestie wordt ervan uitgegaan dat u uw code uitvoert op een systeem met meerdere processoren.Meer informatie:Artikel over beheerde threading in de geavanceerde ontwikkelingshandleiding voor NET Framework.

Het systeem GUID's laten maken

Sta het systeem toe om automatisch de GUID (id) voor u toe te wijzen in plaats van dit handmatig zelf te doen. Deze suggestie stelt Microsoft Dynamics 365 in staat gebruik te maken van opeenvolgende GUID's, hetgeen betere SQL-prestaties oplevert. In de volgende voorbeeldcode ziet u hoe u methode Create wordt aangeroepen om een door het systeem toegewezen GUID te verkrijgen.

// Instantiate an account object.Account account = new Account { Name = "Fourth Coffee" };
// Create an account record named Fourth Coffee and retrieve the GUID.accountId = serviceProxy.Create(account);

Eerder gebonden typen gebruiken

Gebruik de klasse Entity wanneer uw code moet werken voor entiteiten en kenmerken die niet bekend zijn op het moment dat de code wordt geschreven. Bovendien resulteert het gebruik van de klasse Entity in iets betere prestaties dan bij de eerder gebonden entiteitstypen als uw aangepaste code met duizenden entiteitsrecords werkt. Deze flexibiliteit heeft echter een nadeel omdat u geen entiteit- en kenmerknamen kunt controleren tijdens de compilatie. Als uw entiteiten al zijn gedefinieerd tijdens het coderen en iets mindere prestaties acceptabel zijn, moet u de eerder gebonden typen gebruiken die u kunt genereren met het hulpprogramma CrmSvcUtil.Meer informatie:De eerder gebonden entiteitklassen in code gebruiken

Plug-ins uitschakelen

Schakel indien mogelijk geregistreerde plug-ins uit voordat u de toepassing uitvoert.

Plug-ins schrijven die sneller worden uitgevoerd

Schrijf altijd een plug-in die de minste tijd nodig heeft om de beoogde taken uit te voeren. Zo wordt bijvoorbeeld de methode Execute veelvuldig verwerkt in Microsoft Dynamics 365. Als u een plug-in registreert voor dat bericht, kan uw plug-in aanzienlijke gevolgen voor de systeemprestaties hebben omdat deze telkens wordt uitgevoerd wanneer de methode Execute wordt, hetgeen heel vaak is.

Als u van plan bent uw plug-ins voor synchrone uitvoering te registreren, raden we u aan deze zodanig te ontwerpen dat zij in minder dan 10 seconden worden voltooid. De verwerkingstijd in plug-ins kan het beste tot een minimum worden beperkt om interactie te behouden met de clienttoepassingen die zijn verbonden met de organisatieservice die ook de plug-in uitvoert.

De gegevens beperken die u ophaalt

Wanneer u de methoden gebruikt waarmee gegevens worden opgehaald van de server, haalt u de minimale hoeveelheid gegevens op die uw toepassing nodig heeft. U doet dit door de kolomset op te geven. Dit is de set van entiteitkenmerken die moet worden opgehaald. Het is bijvoorbeeld zelden verstandig om alle metagegevens op te halen met het bericht RetrieveAllEntitiesRequest, waarbij de entiteitsfilter EntityFilters.All wordt opgegeven voor de eigenschap EntityFilters. In plaats daarvan kunt u wellicht betere prestaties bereiken als u het entiteitsfilter beperkt of een van de volgende berichten gebruikt: RetrieveEntityRequest, RetrieveOptionSetRequest, RetrieveAttributeRequest of RetrieveRelationshipRequest.

Bewerkingen die trapsgewijs worden uitgevoerd op gerelateerde entiteiten beperken

Als u de methode Update of het bericht UpdateRequest gebruikt, stel dan niet het kenmerk OwnerId in op een record tenzij de eigenaar is gewijzigd. Als u dit kenmerk instelt, worden de wijzigingen vaak trapsgewijs doorgevoerd op gerelateerde entiteiten, waardoor meer tijd nodig is voor de updatebewerking.Meer informatie:Trapsgewijs geordend gedrag

Proxy-instellingen aanpassen op de client (alleen on-premises)

Een proxyserver bevindt zich tussen een clienttoepassing, bijvoorbeeld een webbrowser, en de daadwerkelijke doelserver. Wanneer een computer deel uitmaakt van een lokaal netwerk, kan deze een proxyserver gebruiken om verbinding met internet te maken. In dit geval wordt de proxyserver gecombineerd met, maakt deze deel uit van de gatewayserver en firewallserver. De proxy kan webaanvragen in het cachegeheugen opslaan en op meerdere clientaanvragen reageren door gebruik te maken van de gegevens in de cache. Als de aangevraagde gegevens niet aanwezig zijn in het cachegeheugen van de proxyserver, wordt de aanvraag doorgestuurd naar de daadwerkelijke server via het eigen IP-adres. Hier treedt de proxyserver op namens de clientcomputer.

Hoewel een proxyserver als cacheserver kan fungeren en kan helpen een webpagina sneller te laden, kunnen de prestaties soms verminderen als dit niet op de juiste wijze gebeurt. Vaak vermijden mensen handmatige proxyconfiguratie en gebruiken zij automatische proxyconfiguratie. Deze snelle oplossing helpt met de taakverdeling op de proxyservers, maar afhankelijk van de complexiteit van het configuratiescript, kan een aanzienlijke vertraging ontstaan als u automatische proxyconfiguratie gebruikt.

Als de Microsoft Dynamics 365-server is geïnstalleerd, kunt u de proxyserver omzeilen om betere doorvoer te bereiken. De server biedt een lokaal webadres dat geen proxy vereist om bereikbaar te zijn. U kunt Proxyserver niet gebruiken voor lokale adressen selecteren en de volledig gekwalificeerde domeinnaam (FQDN) van de Microsoft Dynamics 365-server opnemen in de uitzonderingenlijst. Dit biedt verbeterde doorvoer als de records zijn gemaakt met de Microsoft Dynamics CRM SDK.

De prestaties bij toewijzing van het servicekanaal verbeteren

U kunt een verbinding met de Microsoft Dynamics 365-webservices maken en gebruikers verifiëren met de serviceproxyklassen OrganizationServiceProxy en DiscoveryServiceProxy. Een ongepast gebruik van deze serviceproxyklassen kan soms echter tot verslechtering van de toepassingsprestaties leiden. Daarom kunt u vaak betere toepassingsprestaties realiseren als u begrijpt wanneer en hoe u de verschillende clientklassen die beschikbaar zijn in de SDK moet gebruiken.

Wanneer u een Windows Communication Foundation (WCF)-servicekanaal opstelt met behulp van een service-eindpunt, bijvoorbeeld door de organisatiewebservice te gebruiken, moet uw toepassing twee tijdrovende bewerkingen uitvoeren: het downloaden van metagegevens van het eindpunt en het verifiëren van gebruikers. U kunt de prestaties verbeteren als uw toepassing deze bewerkingen een minimumaantal keren uitvoert voor elke toepassingssessie. De hier getoonde constructor OrganizationServiceProxy voert beide bewerkingen uit telkens wanneer een serviceproxy-object wordt gemaakt.

OrganizationServiceProxy (Uri uri, Uri homeRealmUri, ClientCredentials clientCredentials, ClientCredentials deviceCredentials)

U verkrijgt doorgaans betere prestaties als uw toepassing deze constructor gebruikt om een exemplaar van de serviceproxy te maken door deze constructor eenmaal te gebruiken tijdens de toepassingssessie en de geretourneerde verwijzing in het cachegeheugen op te slaan voor gebruik in verschillende codepaden binnen uw toepassing. Houd er rekening mee dat de geretourneerde serviceverwijzing niet thread-veilig is, zodat toepassingen met meerdere threads één exemplaar per thread moeten toewijzen. Toepassingen moeten tevens Dispose op het serviceproxy-object aanroepen voordat zij kunnen worden beëindigd om aan servicekanalen toegewezen hulpbronnen te kunnen vrijmaken.

De serviceproxyklasse voert de metagegevensdownload en gebruikerverificatie uit met behulp van de volgende klassemethoden.

IServiceManagement<IOrganizationService> orgServiceManagement = ServiceConfigurationFactory.CreateManagement<IOrganizationService>(new Uri(organizationUrl))AuthenticationCredentials authCredentials = orgServiceManagement.Authenticate(credentials)

De methode CreateManagement<TService> voert de metagegevensdownload uit terwijl via de methode Authenticate de gebruiker wordt geverifieerd. De geretourneerde objecten van deze methoden die thread-veilig en kunnen statisch in het cachegeheugen worden opgeslagen door uw toepassing. U kunt vervolgens deze objecten gebruiken om een serviceproxy-object te construeren dat een van de andere beschikbare constructors gebruikt.

OrganizationServiceProxy (orgServiceManagement, authCredentials.ClientCredentials)OrganizationServiceProxy (orgServiceManagement, authCredentials.SecurityTokenResponse)

Door het servicebeheer en geverifieerde referentieobjecten in een cache op te slaan, kan uw toepassing op efficiëntere wijze meerdere keren per toepassingssessie de serviceproxy-objecten construeren. Als u eerder gebonden typen inschakelt in OrganizationServiceProxy via een van de methoden EnableProxyTypes, moet u hetzelfde doen bij alle serviceproxy's die worden gemaakt op basis van het IServiceManagement<TService>-object dat in het cachegeheugen is opgenomen. Als uw toepassing de metagegevens gebruikt, adviseren we de metagegevens die worden opgehaald in de cache te laten opslaan en van tijd tot tijd het bericht RetrieveTimestampRequest aan te roepen om te bepalen of de cache moet worden vernieuwd.

Bovendien moet u uw WCF-beveiligingstoken (Token) controleren en dit vernieuwen voordat het verloopt zodat u het token niet kwijtraakt en opnieuw moet starten met de verificatie. U kunt het token controleren door een aangepaste klasse te maken die eigenschappen overneemt van de klasse OrganizationServiceProxy of DiscoveryServiceProxy en de bedrijfslogica implementeert voor het controleren van het token. Of u kunt de proxyklassen opnemen in een nieuwe klasse. Een andere techniek is het expliciet controleren van het token vóór elke aanreop van de webservice. Voorbeeldcode die de technieken demonstreert is te vinden in de klassen ManagedTokenDiscoveryServiceProxy, ManagedTokenOrganizationServiceProxy, and AutoRefreshSecurityToken in het onderwerp Helpercode: klasse ServerConnection.

Aanbevolen procedures bij aanpassing

De volgende aanbevolen methoden kunnen u helpen bij het aanpassen en uitbreiden van Microsoft Dynamics 365.

Aanbevolen procedures voor Microsoft Dynamics CRM Online

De download van de whitepaper Microsoft Dynamics CRM Online-patronen en -principes voor oplossingsontwikkelaars bevat richtlijnen specifiek voor het ontwikkelen van oplossingen met Microsoft Dynamics CRM Online

Aangepaste entiteiten en kenmerken gebruiken

Bespaar ruimte op uw server door de volgende technieken te gebruiken:

  • Maak aangepaste kenmerken voor bestaande entiteiten in plaats van een nieuwe entiteit te maken.

  • Hernoem bestaande entiteiten om deze entiteiten relevanter te maken.

Wanneer kunt u een entiteit het beste aanpassen?

Pas een systeementiteit, zoals de entiteit verkoopkans, aan in plaats van deze te vervangen door een nieuwe aangepaste entiteit, zodat u de vele ingebouwde functies van een bestaande entiteit kunt gebruiken. Zo hebben bijvoorbeeld de entiteiten verkoopkans en aanvraag opzoekvelden om klanten te koppelen. Klanten kunnen accounts of contactpersonen zijn. U kunt geen aangepaste entiteit maken met hetzelfde type opzoekbewerking. U kunt de weergavenaam van een systeementiteit wijzigen om deze relevanter voor uw bedrijf te maken.

Wanneer gebruikt u plug-ins en wanneer werkstromen?

Als ontwikkelaar die is geïnteresseerd in het uitbreiden of aanpassen van Microsoft Dynamics 365, kunt u verschillende methoden kiezen om uw taken uit te voeren. Behalve JavaScript-code aan een formulier toevoegen op de client of aangepaste ASP.NET-pagina's toevoegen, kunt u een plug-in schrijven of een aangepaste werkstroom maken met behulp van de webinterface die een aangepaste werkstroomactiviteit aanroept. Hoe besluit u wanneer u het beste een plug-in kunt gebruiken en wanneer een werkstroom? De technologie die u gebruikt is afhankelijk van de taak die moeten worden uitgevoerd en van de auteur van de aanpassing.

Zo moet u bijvoorbeeld synchrone plug-in in een realtime werkstroom gebruiken als u aangepaste code wilt uitvoeren onmiddellijk voordat of nadat de platformbewerking wordt uitgevoerd en voordat het resultaat van de bewerking wordt geretourneerd van het platform. U kunt in dit geval geen asynchrone werkstroom of asynchrone plug-in gebruiken omdat deze in een wachtrij zijn geplaatst voor uitvoering nadat de kernbewerking is voltooid. Daarom kunt u niet voorspellen wanneer zij zullen worden uitgevoerd. Als u aangepaste functionaliteit wilt toevoegen aan Microsoft Dynamics CRM Online, worden werkstromen en plug-ins ondersteund, maar aangepaste werkstroomactiviteiten niet.

Evalueer deze technologie en kies degene die het beste past bij uw zakelijke doelstellingen nadat u de installatie, de prestaties en de onderhoudsaspecten van uw plug-in of werkstroomoplossing in overweging hebt genomen.

In de volgende tabel worden de kenmerken van plug-ins en werkstromen samengevat.

Criteria

Invoegtoepassing

Werkstroom

Uitvoering voor- of nadat de bewerking van het kernplatform (maken, bijwerken, verwijderen, enzovoort) is voltooid.

Wordt onmiddellijk voor of na de kernbewerking uitgevoerd (synchroon).

Kan ook in wachtrij worden opgenomen voor uitvoering na de kernbewerking (asynchroon).

Asynchrone werkstromen worden in een wachtrij opgenomen voor uitvoering na de kernbewerking.

Realtime werkstromen hebben vergelijkbare kenmerken als plug-ins.

Gevolgen voor de prestaties op de server

Synchrone plug-ins kunnen de platformreactietijd verhogen omdat ze deel uitmaken van de primaire platformverwerking.

Asynchrone plug-ins hebben minder gevolgen voor de serverreactietijd omdat de code in een ander proces wordt uitgevoerd.

Asynchrone werkstromen hebben minder gevolgen voor de serverreactietijd omdat de code in een ander proces wordt uitgevoerd.

Realtime werkstromen hebben vergelijkbare prestatiekenmerken als sandboxed plug-ins.

Beveiligingsbeperkingen

Als u plug-in wilt registreren bij het platform moet u over de beveiligingsrol Systeembeheerder of Systeemaanpasser beschikken en lid zijn van de groep Installatiebeheerders.

Gebruikers kunnen op interactieve wijze werkstromen maken in de webtoepassing.

Als de implementerende gebruiker echter een aangepaste werkstroomactiviteit wil registreren, moet deze over dezelfde beveiligingsrollen beschikken als zijn vereist voor het registreren van plug-ins.

Ondersteuning voor Microsoft Dynamics 365-versie (SKU)

Ondersteund in Microsoft Dynamics CRM Online bij registratie in de sandbox. Kan worden ondersteund in door partners gehoste installaties naar goeddunken van de partner.

Werkstromen worden ondersteund door alle Dynamics 365-installaties. Aangepaste werkstroomactiviteiten worden ondersteund in de sandbox van Microsoft Dynamics CRM Online en binnen of buiten de sandbox voor on-premises/IFD-installaties.

Verwerkingsduur

Een plug-in die is geregistreerd voor synchrone of asynchrone uitvoering moet binnen twee minuten worden voltooid.

Werkt goed voor korte of lange processen. Elke activiteit in een werkstroom moet echter binnen twee minuten worden voltooid.

Werkt wanneer de Dynamics CRM voor Outlook-client offline is

Zowel online als offline worden ondersteund.

Werkstromen wordt niet uitgevoerd als zij offline zijn.

Proces- en gegevenspersistentie

Plug-ins worden uitgevoerd totdat zij voltooid zijn. Plug-ins moeten stateless worden geschreven als er geen geheugens permanent in het geheugen worden geplaatst.

Asynchrone werkstromen kunnen worden onderbroken, uitgesteld, geannuleerd en hervat via SDK-aanroepen of door de gebruiker via de webtoepassing. De status van de werkstroom wordt automatisch opgeslagen voordat de werkstroom wordt onderbroken of uitgesteld.

Realtime werkstromen kunnen geen wachtstatussen hebben. Zij moeten worden uitgevoerd tot aan de voltooiing, net als plug-ins.

Imitatie

Plug-ins kunnen gegevensbewerkingen uitvoeren namens een andere systeemgebruiker.

Asynchrone werkstromen kunnen geen imitatie gebruiken, terwijl realtime werkstromen dat wel kunnen. Realtime werkstromen kunnen worden uitgevoerd als eigenaar van de werkstroom of als aanroepende gebruiker.

Bewerking

Softwareingenieurs of programmeurs kunnen plug-ins schrijven.

Iedereen, inclusief een eindgebruiker, bedrijfsanalist of beheerder, kan werkstromen bewerken als ze over de juiste bevoegdheden beschikken.

Er zijn geen significante verschillen in gevolgen voor de prestaties op de server tussen een asynchrone plug-in en een werkstroom.

Welk type werkstroom is beter?

Is het vanuit een prestatieoogpunt beter om één lange werkstroom te maken of kunt u beter meerdere onderliggende werkstromen hebben die worden aangeroepen in één bovenliggende werkstroom? De onderliggende werkstroombenadering resulteert in geringere doorvoer, maar beter beheerbaar als u vaak uw werkstroomdefinitie wijzigt. De compilatieoverhead is geen belangrijk punt van zorg omdat de werkstroom alleen tijdens de publicatie wordt gecompileerd. Er ontstaat echter overhead voor Microsoft Dynamics 365 bij het starten van elk werkstroomexemplaar. De overhead treedt op wanneer alle entiteiten die in de werkstroom worden gebruikt worden opgehaald en de onderliggende werkstroom wordt gestart in een proces van twee stappen dat een "taak voor werkstroomuitbreiding" en het daadwerkelijke werkstroomexemplaar bevat. Gebruik daarom één lange werkstroom voor een maximale doorvoer.

Hoe moet u uw aangepaste werkstroomactiviteit als voltooid markeren?

De retourwaarde van de Execute-methode wordt door de workflowruntime gebruikt om de activiteit aan te merken als voltooid. U moet return base.Execute(executionContext) gebruiken, tenzij de activiteit de functionaliteit van de basisklasse negeert. Vermijd het retourneren van ActivityExecutionStatus.Closed.Meer informatie:ActivityExecutionStatus-opsomming

Hoe kunt u het beste rapportuitzonderingen melden in aangepaste werkstroomactiviteiten?

Neem een InvalidPlugInExecutionException op in uw code. Deze fout wordt weergegeven in het formulier van het werkstroomexemplaar.

Kunt u aangepaste entiteiten definiëren die specifiek zijn voor business units?

Aangepaste entiteiten hebben bevoegdheden voor elke beveiligingsrol maar niet voor elke business unit. Als u aangepaste entiteiten wilt definiëren die alleen zichtbaar zijn voor specifieke business units, moet u verschillende beveiligingsrollen voor elke business unit opstellen voor elke business unit en machtigingen toewijzen aan de aangepaste entiteit in de desbetreffende rol.

Aanbevolen methoden voor beveiliging

Volg deze richtlijnen om uw zakelijke gegevens te helpen beveiligen.

Algemeen

Aanbevolen procedures voor het beveiligen van uw implementatie van Microsoft Dynamics 365 zijn onder andere:

  • Een goedgekeurd plan voor beveiligingsgegevens opstellen voor de Microsoft Dynamics 365-implementatie van uw organisatie.

  • De minst vereiste bevoegdheden toewijzen bij het opzetten van uw groep van toepassingen.

  • Vereisen dat alle gebruikers sterke wachtwoorden voor hun accounts gebruiken. Zoek naar "sterke wachtwoorden" in Windows Help voor meer informatie.

Meer informatie:TechNet: Beveiligingsoverwegingen voor Microsoft Dynamics CRM

Rollen bevoegdheden en toegangsrechten

Aanbevolen procedures voor het gebruik van het Microsoft Dynamics 365-beveiligingsmodel zijn onder andere:

  • Beperk strikt het aantal personen aan wie de rol Systeembeheerder wordt toegewezen. Verwijder nooit deze rol.

  • Maak rollen op basis van de aanbevolen procedure van minimale bevoegdheden, waarbij toegang wordt geboden tot de minimale hoeveelheid zakelijke gegevens die vereist zijn voor de taak. Wijs de juiste rol toe aan gebruikers voor hun werk.

  • Maak een nieuwe rol met die specifieke machtigingen en voeg de gebruiker aan de nieuwe rol toe als deze extra toegangsniveaus of rechten nodig heeft. De rechten van een gebruiker vormen de samenvoeging van alle rollen die aan hem of haar zijn toegewezen. Ken geen oorspronkelijke rolbevoegdheden toe die slechts één of enkele leden nodig hebben.

  • Gebruik delen, indien van toepassing, om specifieke rechten specifieke rechten voor afzonderlijke objecten te geven, in plaats van bredere bevoegdheden te definiëren voor alle objecten van een bepaald type.

  • Gebruik teams om functieoverschrijdende groepen te maken zodat specifieke objecten met het team kunnen worden gedeeld.

  • Leid gebruikers met toegangsrechten voor delen op om de minimaal benodigde informatie te delen.

Vermijd uitbreiding van bevoegdheden

Onrechtmatige uitbreiding van toegangsrechten komt voor wanneer een gebruiker de bevoegdheden van een vertrouwd account, zoals een eigenaar of beheerder kan overnemen. Werk altijd met acccounts met zo weinig mogelijk bevoegdheden en wijs alleen bevoegdheden toe die werkelijk nodig zijn. Vermijd het gebruik van beheerders- of eigenaaraccounts voor het uitvoeren van code. Dit beperkt de hoeveelheid schade die kan ontstaan bij een geslaagde aanval. Maak bij het uitvoeren van taken die aanvullende machtigingen vereisen alleen gebruik van ondertekening van procedures of imitatie tijdens de uitvoering van de taak.

Ontwikkeling op de server

Aanbevolen procedures voor het ontwikkelen van servercode voor Microsoft Dynamics 365 zijn onder andere:

  • Wijzig de Microsoft Dynamics 365-database niet op een andere manier dan via de SDK omdat hiermee het Microsoft Dynamics 365-beveiligingsmodel wordt omzeild.

  • Plug-ins worden uitgevoerd in de context van een beheerder - u moet weten dat deze code toegang kan verkrijgen tot informatie waartoe de aangemelde gebruiker geen toegang heeft.

  • Vermijd het om voor werkstroomassembly's en plug-ins code te schrijven waarvan de uitvoering veel tijd in beslag neemt. Het is belangrijk dat code van plug-ins die is geregistreerd voor synchrone uitvoering zo snel mogelijk wordt geretourneerd.

  • Als u Microsoft Dynamics 365-gegevens repliceert in uw eigen gegevensarchief, bent u verantwoordelijk voor de beveiliging van de gegevens. Als u een plug-in gebruikt om de gegevens te verzenden, controleert u of u de plug-in hebt geregistreerd voor uitvoering na de bewerking op het kernplatform. Controles van beveiligingsbevoegdheden voor de aangemelde gebruiker vinden plaats tijdens de bewerking op het kernplatform.

  • Gegevens die afkomstig zijn van Microsoft Dynamics 365 zijn mogelijk niet veilig om weer te geven. Gegevens kunnen zijn voorzien van HTML-codes die niet beveiligd zijn.

  • Houd u aan het vereiste dat Microsoft Dynamics 365-databases niet direct mogen worden geopend via SQL Server Enterprise Manager. Het omzeilen van de SDK kan u kwetsbaar maken van bedreigingen door SQL-injectie.

  • Vergeet voor Internet Facing Deployments niet dat uw oplossing alleen zo sterk is als de zwakste schakel. Nadat uw toepassing is blootgesteld aan internet, is deze kwetsbaar voor beveiligingsrisico's.

  • Gebruik alleen talen die beheerde code produrceren voor de beste beveiliging tegen bufferoverloop, uitzonderingen enzovoort.

Zie de volgende onderwerpen voor meer informatie over beveiliging:

Ontwikkeling op de client

Aanbevolen procedures voor het ontwikkelen van aanpassingen voor de Dynamics 365-webtoepassing en Microsoft Dynamics CRM voor Outlook zijn onder andere:

  • Gebruik waar mogelijk webresources in plaats van pagina's die verwerking op de server vereisen. Als uw vereisten alleen kunnen worden bereikt met behulp van verwerking op de server, houdt u zich aan het vereiste dat uw aangepaste webpagina's op een andere website dan Microsoft Dynamics 365 moeten zijn geïnstalleerd. Stel het vertrouwensniveau voor uw locatie in op een geschikte waarde, afhankelijk van uw vertrouwensniveau in de beveiliging van uw code. Hierdoor vermindert de dreiging van cross-site scripts en andere risico's.

  • Zorg ervoor, ter verbetering van uw beveiliging, dat uw aparte website wordt uitgevoerd op een ander account dan Microsoft Dynamics 365. Dit account dient over een minimale mogelijke toegang te beschikken en mag geen rechtstreekse toegang tot de Microsoft-databases hebben. U kunt een complex wachtwoord gebruiken dat niet verloopt omdat niemand zich aanmeldt bij dit account, alleen bij uw toepassing.

  • Vermijd het gebruik van ActiveX-besturingselementen omdat deze bekende beveiligingsproblemen hebben.

  • Wees u bewust van de beperkingen van clientscripts.Meer informatie:Code schrijven voor Microsoft Dynamics CRM 2015-formulieren

  • Gebruik plugins om bedrijfslogica toe te passen ongeacht hoe de gegevenswijzigingen plaatsvinden.

  • Gebruik altijd een bevestigingsvenster wanneer u records verwijdert of gevoelige wijzigingen aanbrengt, zoals het toevoegen van een nieuwe gebruiker aan een beveiligingsrol. U kunt Xrm.Utility.confirmDialog hiervoor gebruiken. Dit helpt technieken voorkomen zoals click-jacking of UI redressing waarbij een kwaadaardige ontwikkelaar uw pagina in een schijnbaar onschadelijke pagina kan opnemen om een gebruiker ertoe te verleiden acties uit te voeren die de beveiliging in gevaar brengen of ongewenste bewerkingen uit te voeren op gegevens.

Aanbevolen procedures voor het beveiligen van uw website omvatten onder andere:

  • Gebruik geen anonieme toegang.

  • Gebruik geïntegreerde Windows-verificatie, NTLM of basisverificatie via Secure Sockets Layer (SSL).

  • Gebruik SSL om het verzenden van ongecodeerde gegevens via het netwerk te voorkomen als uw website zich op een andere computer dan Microsoft Dynamics 365 bevindt.

Raadpleeg de volgende artikelen en onderwerpen voor meer informatie:

Aanbevolen methodes voor ISV-uitbreidbaarheid

Een van de belangrijkste principes van ISV-uitbreidbaarheid is dat u niet moet aannemen dat uw ISV-oplossing de enige is die is geïnstalleerd. Hier volgt een lijst met aanbevolen procedures om te volgen.

Aanbevolen procedures voor het gebruik van de Microsoft Dynamics CRM-webservices

U kunt het beste de Microsoft Dynamics 365-webservice-URL opnemen in een configuratiebestand, bijvoorbeeld in een app.config-bestand, zodat uw code is geïsoleerd van wijzigingen in de URL. Er zijn bijvoorbeeld verschillende URL's voor de drie Microsoft Dynamics CRM Online-datacenters wereldwijd.

Waar kunt u uw plug-ins en aangepaste werkstroomactiviteiten het beste plaatsen?

Voor plug-ins op de schijf of voor aangepaste werkstroomactiviteiten, plaatst u de assembly's in de map <installdir>\Server\bin\assembly.

Waar kunt u uw aangepaste webtoepassingen of webpagina's het beste plaatsen?

Raadpleeg het onderwerp Eenmalige aanmelding vanaf een ASPX-webpagina of IFRAME implementeren.

Hoe voert u een plug-in uit wanneer de rasterweergave van de webtoepassing wordt bijgewerkt?

Registreer de plug-in in de aanvraag voor het bericht RetrieveMultipleRequest en geef geen entiteitstype op tijdens de registratie.

Wanneer moet u een nieuwe website maken?

Maak een nieuwe website voor uw code wanneer een van de volgende situaties van toepassing is:

  • De toepassing moet aan een ander domein of protocol of aan een andere poort zijn gekoppeld dan de Microsoft Dynamics 365-toepassing of moet worden uitgevoerd in een andere groep van toepassingen.

  • Uw toepassing kan zelfstandig bestaan en worden geopend. Zo moet bijvoorbeeld een portal die interacties uitvoert met Microsoft Dynamics 365 als server (via webservices) worden gehost als een nieuwe website.

  • Uw toepassing gebruikt altijd Active Directory of geïntegreerde Windows-verificatie (niet IFD) en domeinoverschrijdend scriptgebruik is geen probleem. Uw toepassing communiceert bijvoorbeeld met een back-end door gebruik te maken van webservices en communiceert met Microsoft Dynamics 365-formulieren. Een pagina die wordt gehost in een IFRAME die is ingesloten in een Microsoft Dynamics 365-toepassing die niet communiceert met het Microsoft Dynamics 365-formulier valt onder deze categorie.

Zie ook

Toepassingen en serveruitbreidingen schrijven
Bitmarkeringen instellen
Code schrijven voor Microsoft Dynamics CRM 2015-formulieren
Invoegtoepassingen schrijven om bedrijfsprocessen uit te breiden
Aangepaste workflowactiviteiten (workflowassemblies)

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht