Del via


Bedste fremgangsmåder for udvikling med Microsoft Dynamics CRM 2015

 

Udgivet: november 2016

Gælder for: Dynamics CRM 2015

I dette emne beskrives den bedste praksis for tilpasning af Microsoft Dynamics CRM 2015 og opdatering til Microsoft Dynamics CRM Online 2015.

Dette emne indeholder

Bedste praksis for ydeevne

Bedste fremgangsmåder for tilpasning

Bedste praksis for sikkerhed

Bedste praksis for ISV-udvidelse

Bedste praksis for ydeevne

De følgende bedste fremgangsmåder kan hjælpe dig med at skrive kode, der giver bedre ydeevne.

Brug flere tråde

Føj understøttelse af tråde til dit program for at opdele arbejdet på tværs af flere CPU'er. Dette forslag forudsætter, at du kører din kode på et multiprocessorsystem.Flere oplysninger:NET Framework Advanced Development Guide-artikel om administrerede tråde.

Tillad, at systemet opretter GUID'er

Tillad, at systemet automatisk tildeler GUID (id) for dig, i stedet for manuelt at oprette det selv. Dette forslag giver Microsoft Dynamics 365 mulighed for at drage fordel af sekventielle GUID'er, som giver bedre SQL-ydeevne. Følgende eksempelkode viser, hvordan du kalder metoden Create for at opnå et systemtildelt GUID.

// 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);

Brug tidligt bundne typer

Brug klassen Entity, hvis din kode skal fungere på objekter og attributter, der ikke er kendt på det tidspunkt, hvor koden skrives. Hvis din brugerdefinerede kode desuden fungerer godt med tusindvis af objektposter, giver brug af Entity-klassen lidt bedre ydeevne end tidligt bundne objekttyper. Denne fleksibilitet har dog en ulempe, fordi du ikke kan bekræfte navne for objekter og attributter under kompilering. Hvis dine objekter allerede er defineret på kodningstidspunktet, og en svag forringelse af ydeevnen er acceptabel, så bør du bruge de tidligt bundne typer, du kan oprette ved hjælp af værktøjet CrmSvcUtil.Flere oplysninger:Brug de tidligt bundne objektklasser i kode

Deaktiver plug-ins

Hvis det er muligt, skal du deaktivere registrerede plug-ins, før du kører programmet.

Skriv plug-ins, der udføres hurtigere

Skriv altid en plug-in, der bruger mindst tid til at udføre den tilsigtede opgave. Metoden Execute behandles f.eks. ofte i Microsoft Dynamics 365. Hvis du registrerer en plug-in på den meddelelse, kan din plug-in have en betydelig indvirkning på systemets ydeevne, fordi det køres hver gang, metoden Execute behandles, hvilket ofte forekommer.

Hvis du vil registrere dine plug-ins til synkron kørsel, anbefaler vi, at du designer dem til at fuldføre deres handling på mindre end 10 sekunder. Det er bedst at minimere behandlingstid i plug-ins for at bevare interaktivitet for de klientprogrammer, der er tilsluttet til den samme organisationstjeneste, som kører plug-in'en.

Begræns de data, du henter

Når du bruger de metoder, der henter data fra serveren, kan du hente den minimale mængde data, som programmet skal bruge. Du gør dette ved at angive kolonnesættet, som er det sæt af objektattributter, der skal hentes. Det er f.eks. sjældent en god ide at hente alle metadata med meddelelsen RetrieveAllEntitiesRequest, som angiver objektfilteret EntityFilters.All for egenskaben EntityFilters. I stedet kan du opnå bedre ydeevne, hvis du begrænser objektfilteret, eller bruger en af de følgende meddelelser: RetrieveEntityRequest, RetrieveOptionSetRequest, RetrieveAttributeRequest eller RetrieveRelationshipRequest.

Begræns handlinger, som overlapper til relaterede objekter

Når du bruger metoden Update eller meddelelsen UpdateRequest, skal du ikke angive attributten OwnerId på en post, medmindre ejeren rent faktisk er blevet ændret. Når du indstiller denne attribut, overlapper ændringerne ofte til relaterede objekter, hvilket øger den tid, der kræves til opdateringshandlingen.Flere oplysninger:Overlappende funktioner

Juster proxyindstillingerne på klienten (kun i det lokale miljø)

En proxyserver er placeret mellem et klientprogram, f.eks. en webbrowser, og den faktiske destinationsserver. Når en computer er i et Lokalnetværk, kan den bruge en proxyserver til at oprette forbindelse til internettet. I så fald er proxyserveren kombineret med eller er en del af gatewayserveren og firewallserveren. Proxyen kan cachelagre webanmodninger og betjene flere klientanmodninger ved hjælp af cachelagrede data. Hvis de anmodede data ikke findes i cachen på proxyserveren, videresender den anmodningen til den faktiske server ved hjælp af sin egen IP-adresse. Her fungerer proxyserveren på vegne af klientcomputeren.

Selvom en proxyserver kan fungere som en cacheserver og kan hjælpe med at indlæse en webside hurtigere, kan den undertiden reducere ydeevnen, hvis den anvendes forkert. Brugerne undgår ofte manuel proxykonfiguration og bruger automatisk proxykonfiguration. Denne genvej hjælper med til belastningsfordeling for proxyserverne, men afhængigt af konfigurationsscriptets kompleksitet kan der forekomme en betydelig forsinkelse, når der bruges automatisk proxykonfiguration.

Når Microsoft Dynamics 365-serveren er installeret, kan du omgå proxyserveren for at opnå en bedre overførselshastighed. Serveren har en lokal webadresse, som det ikke kræver nogen proxy at oprette forbindelse til. Du kan vælge Brug ikke proxyserver til lokale adresser og give det fuldt kvalificerede domænenavn for Microsoft Dynamics 365-serveren på listen over undtagelser. Det giver bedre overførselshastigheder, når posterne oprettes ved hjælp af Microsoft Dynamics CRM SDK.

Forøg ydeevnen for servicekanal-allokering

Du kan oprette forbindelse til Microsoft Dynamics 365-webtjenesterne og godkende brugere ved hjælp af serviceproxyklasserne OrganizationServiceProxy og DiscoveryServiceProxy. Ukorrekt anvendelse af disse serviceproxyklasser kan imidlertid reducere programmets ydeevne. Hvis du forstår, hvornår og hvordan de forskellige kilentklasser, der er tilgængelige i SDK'en, skal bruges, kan du derfor ofte få bedre programydeevne.

Hvis du opretter en WCF (Windows Communication Foundation)-servicekanal ved hjælp af et tjenesteslutpunkt, for eksempel ved hjælp organisationens webtjeneste, skal programmet udføre to tidskrævende handlinger: hentning af metadata fra slutpunktet samt brugergodkendelse. Du kan forbedre ydeevnen, hvis programmet udfører disse handlinger et minimumantal gange for hver programsession.OrganizationServiceProxy-konstruktøren, der er vist her, udfører begge disse handlinger, hver gang der oprettes en proxyserviceobjekt.

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

Du kan typisk få bedre ydeevne, hvis dit program bruger denne konstruktør til at oprette en forekomst af serviceproxyen ved hjælp af konstruktøren én gang under programsessionen og cachelagrer den returnerede reference til brug i forskellige kodestier i programmet. Bemærk, at den returnerede servicereference ikke er trådsikker, så flertrådede programmer skal tildele én forekomst pr. tråd. Programmer skal også kalde Dispose på servicedproxyobjektet, før de afsluttes med henblik på at frigøre servicekanal-allokerede ressourcer.

Serviceproxyklassen udfører hentingen af metadata og brugergodkendelsen ved hjælp af følgende klassemetoder.

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

Metoden CreateManagement<TService> udfører hentningen af metadataene, mens meto den Authenticate godkender brugeren. De returnerede objekter fra disse metoder er trådsikre og kan statisk cachelagres af programmet. Du kan derefter bruge disse objekter til at konstruere et serviceproxyobjekt, som bruger en af de andre tilgængelige konstruktører.

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

Ved at cachelagre servicestyring og godkendte legitimationsoplysninger, kan programmet mere effektivt konstruere serviceproxyobjekterne mere end én gang pr. programsession. Hvis du aktiverer tidligt bundne typer på OrganizationServiceProxy via en af EnableProxyTypes-metoderne, skal du gøre det samme på alle serviceproxyer, der er oprettet fra det cachelagrede objekt IServiceManagement<TService>. Hvis programmet bruger metadataene, anbefaler vi, at det cachelagrer de metadata, der hentes, og regelmæssigt kalder den meddelelsen RetrieveTimestampRequest for at afgøre, om den skal opdatere cachen.

Derudover kan du overvåge dit WCF-sikkerhedstoken (Token) og opdatere det, før det udløber, så du ikke mister tokenet og er nødt til at starte forfra med godkendelse. Hvis du vil kontrollere tokenet, skal du oprette en brugerdefineret klasse, der nedarver fra klassen OrganizationServiceProxy eller DiscoveryServiceProxy, og som implementerer forretningslogik til at kontrollere tokenet. Eller ombryde proxyklasserne i en ny klasse. En anden teknik er udtrykkeligt at kontrollere tokenet før hvert kald til webtjenesten. Eksempelkode, der demonstrerer disse teknikker, kan findes i klasserne ManagedTokenDiscoveryServiceProxy, ManagedTokenOrganizationServiceProxy og AutoRefreshSecurityToken i emnet Hjælpekode: ServerConnection-klasse.

Bedste fremgangsmåder for tilpasning

De følgende bedste fremgangsmåder kan hjælpe dig med at tilpasse og udvide Microsoft Dynamics 365.

Bedste fremgangsmåder for Microsoft Dynamics CRM Online

Hvidbogen Microsoft Dynamics CRM Online mønstre og principper for løsningsudviklere indeholder en vejledning specifikt om udvikling af løsninger ved hjælp af Microsoft Dynamics CRM Online.

Brug af brugerdefinerede objekter og attributter

Du kan spare plads på din server ved hjælp af disse teknikker:

  • Oprette brugerdefinerede attributter for eksisterende objekter i stedet for at oprette et nyt objekt.

  • Omdøbe eksisterende objekter for at gøre objekterne mere meningsfulde.

Hvornår bør du tilpasse et objekt?

Tilpasse et systemobjekt, f.eks. salgsmulighedsobjektet, i stedet for at erstatte det med et nyt brugerdefineret objekt, så du kan bruge de mange indbyggede funktioner i et eksisterende objekt. Salgsmulighed- og sagsobjekterne har f.eks. opslagsfelter til tilknytning af kunder. Kunderne kan være firmaer eller kontaktpersoner. Du kan ikke oprette et brugerdefineret objekt, der har den samme type opslag. Du kan ændre det viste navn for et systemobjekt, så det giver mere mening for din virksomhed.

Hvornår skal der bruges plug-ins vs. arbejdsproces?

Som en udvikler, der er interesseret i at udvide eller tilpasse Microsoft Dynamics 365, kan du vælge mellem flere metoder til at udføre dine opgaver. Ud over at tilføje JavaScript-kode fra klientsiden til en formular eller tilføje brugerdefinerede ASP.NET-sider, kan du skrive en plug-in eller oprette en brugerdefineret arbejdsproces ved hjælp af webgrænsefladen, der kalder en brugerdefineret arbejdsprocesaktivitet. Hvordan beslutter du, hvornår du skal bruge en plug-in, og hvornår du skal bruge en arbejdsproces? Den teknologi, du bruger, afhænger af den opgave, du skal udføre, og hvem der vil udarbejde tilpasningen.

Du skal f.eks. bruge en synkron plug-in-arbejdsproces i realtid, hvis du vil køre brugerdefineret kode umiddelbart før eller efter, at kernehandlingen på platformen udføres, og før resultatet af handlingen returneres fra platformen. Du kan ikke bruge en asynkron arbejdsproces eller et asynkront plug-in i denne situation, fordi de er sat i kø til at køre, efter at kernehandlingen er fuldført. Derfor kan du ikke forudsige, hvornår de vil køre. Hvis du vil tilføje brugerdefineret funktionalitet til Microsoft Dynamics CRM Online, er plug-ins og arbejdsprocesser understøttet, men det er brugerdefinerede arbejdsprocesaktiviteter ikke.

Evaluer disse teknologier, og vælg den, der passer bedst til virksomhedens målsætninger, efter at du har overvejet udrulning, ydeevne og vedligeholdelse for din plug-in eller arbejdsprocesopløsning.

I følgende tabel vises en oversigt over karakteristika for plug-ins og arbejdsprocesser.

Kriterier

Plug-in

Arbejdsproces

Udførelse før eller efter kernehandlingen på platformen (Opret, Opdater, Slet osv.)

Udfører umiddelbart før eller efter kernehandlingen (synkront).

Kan også sættes i kø til udførsel efter kernehandlingen (asynkront).

Asynkrone arbejdsprocesser sættes i kø til udførsel efter kernehandlingen.

Arbejdsprocesser i realtid har de samme karakteristika som plug-ins.

Indvirkning på serverens ydeevne

Synkrone plug-ins kan forbedre svartiden på platformen, fordi de er en del af den primære behandling på platformen.

Asynkrone plug-ins har mindre indvirkning på serverens svartid, fordi koden køres i en anden proces.

Asynkrone arbejdsprocesser har mindre indvirkning på serverens svartid, fordi koden køres i en anden proces.

Arbejdsprocesser i realtid har de samme egenskaber for ydeevne som sandkasse-plug-ins.

Sikkerhedsbegrænsninger

Registrering af en plug-in med platformen kræver sikkerhedsrollen Systemadministrator eller Systemtilpasser og medlemskab af installationsadministratorgruppen.

Brugerne kan interaktivt oprette arbejdsprocesser i webprogrammet.

Hvis du vil registrere en brugerdefineret arbejdsprocesaktivitet, skal den bruger, der foretager udrulningen, imidlertid have de samme sikkerhedsroller som dem, der kræves til registrering af plug-ins.

Understøttelse af Microsoft Dynamics 365-version (SKU)

Understøttes i Microsoft Dynamics CRM Online efter registrering i sandkassen. Kan understøttes i partnerværtinstallationer efter partnerens skøn.

Arbejdsprocesser understøttes af alle Dynamics 365-udrulninger. Brugerdefinerede arbejdsprocesaktiviteter understøttes i sandkassen til Microsoft Dynamics CRM Online og i eller uden for sandkassen til udrulinger i det lokale miljø/IFD-udrulninger.

Behandlingstidens længde.

En plug-in, der er registreret til synkron eller asynkron kørsel, er begrænset til at afvikle kørslen inden for en tidsfrist på to minutter.

Fungerer godt til korte eller lange processer. Hver aktivitet i en arbejdsproces kan dog ikke tage længere tid end to minutter at fuldføre.

Fungerer, når Dynamics CRM til Outlook-klienten er offline

Både online og offline understøttes.

Arbejdsprocesser udføres ikke, når du arbejder offline.

Proces- og datafastholdelse

Plug-ins køres, indtil de er fuldført. Plug-ins skal skrives for at være tilstandsløse, hvor data i hukommelsen ikke bevares.

Asynkrone arbejdsprocesser kan afbrydes midlertidigt, udskydes, annulleres og genoptages via SDK-kald eller af brugeren via webprogrammet. Status for arbejdsprocessen gemmes automatisk, før den midlertidigt afbrydes eller udskydes.

Arbejdsprocesser i realtid kan ikke have nogen ventetilstande. De skal udføres til afslutning ligesom plug-ins.

Efterligning

Plug-ins kan udføre datahandlinger på vegne af en anden systembruger.

Asynkrone arbejdsprocesser kan ikke bruge efterligning, men arbejdsprocesser i realtid kan godt. Arbejdsprocesser i realtid kan udføres enten som ejeren af arbejdsprocessen eller som den kaldende bruger.

Oprettelse

Softwareteknikere eller programmører kan skrive plug-ins.

Alle, herunder en slutbruger, forretningsanalytiker eller administrator kan udarbejde arbejdsprocesser, hvis de har de nødvendige tilladelser.

En asynkron plug-in og en arbejdsproces har ingen indvirkning af betydning på serverens ydeevne.

Hvilken type arbejdsproces er bedst?

Med hensyn til ydeevnen er det så bedst at oprette en enkelt lang arbejdsproces, eller er det bedre at have flere underordnede arbejdsprocesser og kalde dem i en overordnet arbejdsproces? Tilganden med underordnede arbejdsprocesser giver lavere overførselshastighed, men det er lettere at håndtere, hvis du ofte ændrer din arbejdsprocesdefinition. Kompileringsspild er ikke et stort problem, da arbejdsprocessen kun er kompileret under udgivelse.Microsoft Dynamics 365 forårsager dog spild, når den starter hver forekomst af arbejdsprocessen. Der opstår spild, når alle objekter, der bruges i arbejdsprocessen, hentes, og den underordnede arbejdsproces startes i en 2-trins proces, der omfatter en "opgave til udvidelse af arbejdsproces" og den faktiske arbejdsprocesforekomst. Brug derfor en enkelt lang arbejdsproces for at få maksimal overførselshastighed.

Hvordan skal du markere din brugerdefinerede arbejdsprocesaktivitet som fuldført?

Returværdien fra Execute-metoden bruges ved kørsel af arbejdsprocessen til at markere aktiviteten som "fuldført". Du skal bruge return base.Execute(executionContext), medmindre aktiviteten omgår grundlæggende klassefunktionalitet. Undgå at returnere ActivityExecutionStatus.Closed.Flere oplysninger:ActivityExecutionStatus-optælling

Hvordan rapporterer du undtagelser i brugerdefinerede arbejdsprocesaktiviteter?

Du bør udløse en InvalidPlugInExecutionException i din kode. Denne fejl vises i formularen for arbejdsprocesforekomsten.

Kan du definere brugerdefinerede objekter, der er specifikke for afdelinger?

Brugerdefinerede objekter har rettigheder for hver sikkerhedsrolle, men ikke for hver afdeling. Hvis du vil definere brugerdefinerede objekter, der er kun synlige for angivne afdelinger, skal du oprette forskellige sikkerhedsroller for hver afdeling og tildele rettigheder til det brugerdefinerede objekt i den relevante rolle.

Bedste praksis for sikkerhed

Følg disse retningslinjer for at beskytte dine virksomhedsdata.

Generelt

Bedste praksis for at sikre implementeringen af Microsoft Dynamics 365 omfatter følgende:

  • Opret en godkendt sikkerhedsdataplan for organisationens Microsoft Dynamics 365-implementering.

  • Tildel de færrest mulige rettigheder, når du konfigurerer din programgruppe.

  • Kræv, at alle brugere bruger stærke adgangskoder til deres konti. Du kan få flere oplysninger ved at søge efter "stærke adgangskoder" i Windows Hjælp.

Flere oplysninger:TechNet: Overvejelser om sikkerhed i Microsoft Dynamics CRM

Roller, rettigheder og adgangsrettigheder

Bedste praksis for brug af Microsoft Dynamics 365-sikkerhedsmodellen omfatter følgende:

  • Streng begrænsning af antallet af personer, der er tildelt rollen systemadministrator. Fjern aldrig denne rolle.

  • Opret roller i overensstemmelse med den bedste praksis for færrest mulige rettigheder, og giv adgang til den mindst mulige mængde af virksomhedsdata, der er nødvendige for opgaven. Tildel brugere den relevante rolle til deres job.

  • Opret en ny rolle med disse specifikke rettigheder, og føj brugeren til den nye rolle, hvis en bruger har brug for yderligere adgangsniveauer eller rettigheder. En brugers rettigheder er foreningen af alle de roller, vedkommende har fået tildelt. Tildel ikke de oprindelige rollerettigheder, der kun skal bruges af et ud af flere medlemmer.

  • Brug deling, når det er relevant, for at give bestemte brugere særlige rettigheder for de enkelte objekter i stedet for mere omfattende rettigheder på alle objekter af en bestemt type.

  • Brug teams til at oprette tværfunktionelle grupper, så bestemte objekter kan deles med teamet.

  • Tog-brugere, der har delingsrettigheder til at dele det minimum af oplysninger, der skal bruges.

Undgå udvidelse af rettigheder

Angreb med udvidede rettigheder kan forekomme, når en bruger overtager rettighederne fra en konto, der er tillid til, f.eks en ejer eller administrator. Kør altid brugerkonti med færrest mulige rettigheder, og tildel kun de nødvendige tilladelser. Undgå brug af administrative konti eller ejerkonti til afvikling af kode. Dette begrænser mængden af skader, der kan opstå, hvis et angreb lykkes. Når du udfører opgaver, der kræver yderligere tilladelser, skal du kun bruge proceduresignering eller -efterligning for varigheden af opgaven.

Udvikling af serverside

Bedste praksis for udvikling af kode til serversiden for Microsoft Dynamics 365 omfatter følgende:

  • Rediger ikke Microsoft Dynamics 365 databasen nogen anden måde end ved hjælp af SDK, fordi Microsoft Dynamics 365-sikkerhedsmodellen derved omgås.

  • Plug-ins kører i en administratorkontekst – du skal vide, at denne kode kan få adgang til oplysninger, som den bruger, der er logget på, ikke har adgang til.

  • For arbejdsprocesassemblier og plug-ins skal du undgå at skrive kode, der tager lang tid at udføre. Det er vigtigt, at plug-in-kode, der er registreret til at køre synkront, returnerer så hurtigt som muligt.

  • Hvis du replikerer Microsoft Dynamics 365-data i dit eget datalager, er du ansvarlig for sikring af dataene. Hvis du bruger en plug-in til at overføre data, skal du sørge for, at du registrerer plug-in'en til at køre efter kernehandlingen på platformen. Der udføres kontrol af sikkerhedsrettigheder for den bruger, der er logget på, under kernehandlingen på platformen.

  • Data, der kommer ud af Microsoft Dynamics 365, er muligvis ikke sikre til gengivelse. Data kan have fået injiceret HTML-koder, der ikke er sikre.

  • Overhold kravet om ikke at åbne Microsoft Dynamics 365-databaser direkte via SQL Server Enterprise Manager. Omgåelse af SDK kan åbne op overfor SQL-injektionstrusler.

  • Husk, at for installationer med adgang via internettet er din løsning kun så sikker som den svageste led i kæden. Når dit program er blevet udsat for internettet, er det åbent for sikkerhedsrisici.

  • Brug kun de sprog, som giver administreret kode, for at få den bedste sikkerhed mod bufferoverløb, undtagelser og så videre.

Du kan finde flere oplysninger om sikkerhed i følgende emner:

Udvikling af klientside

Bedste praksis for udvikling af tilpasninger til Dynamics 365-webprogrammet og Microsoft Dynamics CRM til Outlook omfatter følgende:

  • Brug webressourcer i stedet for sider, der kræver serverbaseret behandling, når det er muligt. Hvis dine krav kan kun opnås ved at bruge serverbaseret behandling, skal du overholde kravet om, at de brugerdefinerede websider installeres i et separat websted fra Microsoft Dynamics 365. Angiv tillidsniveauet for webstedet korrekt, afhængigt af din tillid til din kodes sikkerhed. Dette reducerer truslen fra scripting på tværs af websteder og andre trusler.

  • For at forbedre sikkerheden skal du sørge for, at det separate websted kører på en anden konto fra Microsoft Dynamics 365. Denne konto skal have mindst mulig adgang og én, der ikke har direkte adgang til Microsoft-databaser. Du kan bruge en kompleks adgangskode, der ikke udløber, fordi ingen person logger på denne konto – kun i dit program.

  • Undgå at bruge ActiveX-kontrolelementer, da de har kendte sikkerhedsproblemer.

  • Vær opmærksom på begrænsningerne i klientscripting.Flere oplysninger:Skrive kode til Microsoft Dynamics CRM 2015-formularer

  • Brug plug-ins til at anvende forretningslogik, uanset hvordan dataændringerne er foretaget.

  • Brug altid en bekræftelsesdialogboks, når du sletter poster eller anvender følsomme ændringer, f.eks. føjer en ny bruger til en sikkerhedsrolle. Du kan bruge Xrm.Utility.confirmDialog til dette. Dette forhindrer teknikker såsom click-jacking eller forklædning af brugergrænsefladen, hvor en ondsindet udvikler kan integrere din side i en tilsyneladende ufarlig side for at narre brugeren til at udføre handlinger, der kan kompromittere sikkerheden eller udføre uønskede handlinger på data.

Bedste praksis for sikkerhed for dit websted omfatter følgende:

  • Brug ikke anonym adgang.

  • Brug integreret Windows-godkendelse, NTLM- eller basisgodkendelse via SSL (Secure Sockets Layer).

  • Brug SSL for at undgå at sende ikke-krypterede data over netværket, hvis dit websted er placeret på en anden computer end Microsoft Dynamics 365.

Du kan finde flere oplysninger her:

Bedste praksis for ISV-udvidelse

En af de vigtigste grundlæggende principper i ISV-udvidelse er, at du ikke bør antage, at din ISV-løsning er den eneste, der er installeret. Følgende er en liste over bedste fremgangsmåder.

Bedste fremgangsmåder for brug af Microsoft Dynamics CRM-webtjenesterne

Du bør placere URL-adresserne for Microsoft Dynamics 365-webtjenesten i en konfigurationsfil, f.eks en app.config-fil, så din kode, der er isoleret fra ændringer af URL-adressen. Der er for eksempel forskellige URL-adresser for de tre Microsoft Dynamics CRM Online-datacentre over hele verden.

Hvor skal du placere plug-ins og brugerdefinerede arbejdsprocesaktiviteter?

For plug-ins på disk eller brugerdefinerede arbejdsprocesaktiviteter skal du placere assemblyerne i mappen <installdir>\Server\bin\assembly.

Hvor skal du placere dine brugerdefinerede webprogrammer eller websider?

Se emnet Implementere enkeltlogon fra en ASPX-webside eller IFRAME.

Hvordan kører du en plug-in, når webprogrammets gittervisning opdateres?

Registrer plug-in'en på RetrieveMultipleRequest-meddelelsesanmodningen, og angive ikke en objekttype under registreringen.

Hvornår skal du oprette et nyt websted?

Opret et nyt websted til din kode, når en af følgende betingelser er opfyldt:

  • Dit program skal være bundet til et domæne, en protokol eller en port, som er forskellig fra Microsoft Dynamics 365-programmet, eller skal køre i en anden programgruppe.

  • Programmet kan eksistere og åbnes selvstændigt. En portal, der interagerer med Microsoft Dynamics 365 som server (ved hjælp af webtjenester), skal f.eks. tilknyttes som et nyt websted.

  • Programmet anvender altid Active Directory eller integreret Windows-godkendelse (ikke IFD), og scripting på tværs af domæner er ikke et problem. Dit program kommunikerer f.eks. med en back-end ved hjælp af webtjenester og kommunikerer med Microsoft Dynamics 365-formularer. En side, der har en IFRAME som vært, som er omsluttet af programmet Microsoft Dynamics 365, der ikke kommunikerer med Microsoft Dynamics 365-formularen, hører til denne kategori.

Se også

Skriv program- og serverudvidelser
Indstil bitflag
Skrive kode til Microsoft Dynamics CRM 2015-formularer
Skriv plug-ins for at udvide forretningsprocesser
Brugerdefinerede arbejdsprocesaktiviteter (arbejdsprocesassemblies)

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret