Web API WebApiService の並列演算のサンプル (C#)
この .NET 6.0 サンプルでは、Dataverse Web API を使用して並列データ演算を実行する方法について説明します。
このサンプルでは、WebAPIService クラス ライブラリ (C#) の共通ヘルパー コードを使用します。
前提条件
- Microsoft Visual Studio 2022。
- データ演算を実行する権限を使用して Dataverse にアクセスします。
このサンプルを実行する方法
PowerApps-サンプル リポジトリをクローンまたはダウンロードします。
/dataverse/webapi/C#-NETx/ParallelOperations/ フォルダーを見つけます。
Visual Studio 2022 を使用して
ParallelOperations.sln
ファイルを開きますappsettings.json
ファイルを編集して、以下のプロパティ値を設定します:Property 方法 Url
ご使用の環境の Url。 プレースホルダー https://yourorg.api.crm.dynamics.com
の値を環境の値に置き換えます。 開発者リソースを表示 を見て自分の環境の URL を見つけます。UserPrincipalName
プレースホルダー you@yourorg.onmicrosoft.com
の値を環境へのアクセスに使用する UPN の値に置き換えます。Password
プレースホルダー yourPassword
の値を使用するパスワードに置き換えます。appsettings.json
ファイルを保存しますF5 を押してサンプルを実行します。
コード
このサンプルのコードは次のとおりです: PowerApps-Samples/dataverse/webapi/C#-NETx/ParallelOperations/Program.cs
実際の動作
このサンプルには、接続を最適化するために適用できる設定が含まれています。
このサンプルでは、まず要求を送信して x-ms-dop-hint
応答ヘッダーの値にアクセスし、この環境で推奨される並列処理の程度を決定します。 並列処理の最大限度が x-ms-dop-hint
応答ヘッダーの値と同じに設定されている場合は、スループットが最適化され、最小限の 429 TooManyRequests
サービス保護制限エラーが返される安定した状態を実現する必要があります。
このサンプルでサービス保護の制限が発生するためには、numberOfRecords
変数を 10,000 以上、またはサンプルを 5 分以上実行するために必要な値に増やす必要があります。 また、コードを変更して、maxDegreeOfParallelism
が x-ms-dop-hint
応答ヘッダー値よりも大幅に大きくなるように設定する必要があります。 次に、Fiddler を使用して、このエラーを返す要求を WebAPIService が再試行する方法を確認できます。
この例では、.NET 6.0 で導入された Parallel.ForEachAsync メソッド を使用します。
このサンプルでは、取引先企業レコードを作成する要求のリストを処理し、要求を並列で送信してから、返されたデータを使用して要求を追加し、作成された取引先企業を ConcurrentBag に対して削除します。 レコードが作成された後、レコードを作成するための秒数が表示されます。
次に、ConcurrentBag
の削除要求が処理され、レコードの削除にかかった時間が表示されます。
このサンプルを TPL データフロー コンポーネント サンプル (C#) を使った Web API 平行操作 と比較するとよいでしょう。
クリーンアップ
デフォルトでは、このサンプルでは作成されたすべてのレコードが削除されます。 サンプルの完了後に作成されたレコードを表示したい場合は、deleteCreatedRecords
変数を false
に変更して、レコードを削除するかどうかを決定するプロンプトが表示されます。
参照
Dataverse Web API を使用する
WebAPIService クラス ライブラリ (C#)
Web API を使用してテーブル行を作成する
Web API を使用したテーブル行の更新と削除
サービス保護の API 制限
Web API のサンプル
Web API 基本操作のサンプル (C#)
Web API クエリ データのサンプル (C#)
Web API 条件付き演算サンプル (C#)
Web API 機能およびアクションのサンプル (C#)
Web API テーブル スキーマ操作サンプル (C#)
TPL データフロー コンポーネントを使用した Web API 並列演算のサンプル (C#)
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。