title | description | ms.date | author | ms.author | ms.reviewer | search.audienceType | contributors | ||
---|---|---|---|---|---|---|---|---|---|
Web API WebApiService Parallel Operations Sample (C#) (Microsoft Dataverse)| Microsoft Docs |
This sample demonstrates sending requests in parallel using the .NET Task Parallel Library (TPL). |
09/02/2022 |
divkamath |
dikamath |
jdaly |
|
|
[!INCLUDEcc-terminology]
This .NET 6.0 sample demonstrates how to perform parallel data operations using the Dataverse Web API.
This sample uses the common helper code in the WebAPIService class library (C#).
- Microsoft Visual Studio 2022.
- Access to Dataverse with privileges to perform data operations.
-
Clone or download the PowerApps-Samples repository.
-
Locate the /dataverse/webapi/C#-NETx/ParallelOperations/ folder.
-
Open the
ParallelOperations.sln
file using Visual Studio 2022 -
Edit the
appsettings.json
file to set the following property values:Property Instructions Url
The Url for your environment. Replace the placeholder https://yourorg.api.crm.dynamics.com
value with the value for your environment. See View developer resources to find the Url for your environment.UserPrincipalName
Replace the placeholder you@yourorg.onmicrosoft.com
value with the UPN value you use to access the environment.Password
Replace the placeholder yourPassword
value with the password you use. -
Save the
appsettings.json
file -
Press F5 to run the sample.
The code for this sample is here: PowerApps-Samples/dataverse/webapi/C#-NETx/ParallelOperations/Program.cs
This sample includes settings you can apply to optimize your connection.
This sample first sends a request simply to access the value of the x-ms-dop-hint
response header to determine the recommended degrees of parallelism for this environment. When the maximum degree of parallelism is set equal to the value of the x-ms-dop-hint
response header, you should achieve a steady state where throughput is optimized with a minimum of 429 TooManyRequests
service protection limit errors returned.
To encounter service protection limits with this sample, you should raise the numberOfRecords
variable to over 10,000 or whatever is needed for the sample to run for more than 5 minutes. You should also change the code to set the maxDegreeOfParallelism
to be significantly greater than x-ms-dop-hint
response header value. Then, using Fiddler you should be able to observe how WebAPIService retries the requests that return this error.
This example uses the Parallel.ForEachAsync Method introduced with .NET 6.0.
This sample processes a list of requests to create account records, sending the requests in parallel and then uses the data returned to add requests to delete the created accounts to a ConcurrentBag. After the records are created, the number of seconds to create the records is displayed.
Then, the delete requests in the ConcurrentBag
are processed and the time spent deleting the records is displayed.
You might want to compare this sample to the Web API Parallel Operations with TPL Dataflow components Sample (C#).
By default this sample deletes all the records created in it. If you want to view created records after the sample is completed, change the deleteCreatedRecords
variable to false
and you'll be prompted to decide if you want to delete the records.
Use the Dataverse Web API
WebAPIService class library (C#)
Create a table row using the Web API
Update and delete table rows using the Web API
Service protection API limits
Web API Samples
Web API Basic Operations Sample (C#)
Web API Query Data sample (C#)
Web API Conditional Operations sample (C#)
Web API Functions and Actions Sample (C#)
Web API table schema operations sample (C#)
Web API Parallel Operations with TPL Dataflow components Sample (C#)
[!INCLUDEfooter-include]