Web API WebApiService の並列演算のサンプル (C#)

この .NET 6.0 サンプルでは、Dataverse Web API を使用して並列データ演算を実行する方法について説明します。

このサンプルでは、WebAPIService クラス ライブラリ (C#) の共通ヘルパー コードを使用します。

前提条件

  • Microsoft Visual Studio 2022。
  • データ演算を実行する権限を使用して Dataverse にアクセスします。

このサンプルを実行する方法

  1. PowerApps-サンプル リポジトリをクローンまたはダウンロードします。

  2. /dataverse/webapi/C#-NETx/ParallelOperations/ フォルダーを見つけます。

  3. Visual Studio 2022 を使用して ParallelOperations.sln ファイルを開きます

  4. appsettings.json ファイルを編集して、以下のプロパティ値を設定します:

    Property 方法
    Url ご使用の環境の Url。 プレースホルダー https://yourorg.api.crm.dynamics.com の値を環境の値に置き換えます。 開発者リソースを表示 を見て自分の環境の URL を見つけます。
    UserPrincipalName プレースホルダー you@yourorg.onmicrosoft.com の値を環境へのアクセスに使用する UPN の値に置き換えます。
    Password プレースホルダー yourPassword の値を使用するパスワードに置き換えます。
  5. appsettings.json ファイルを保存します

  6. F5 を押してサンプルを実行します。

コード

このサンプルのコードは次のとおりです: PowerApps-Samples/dataverse/webapi/C#-NETx/ParallelOperations/Program.cs

実際の動作

このサンプルには、接続を最適化するために適用できる設定が含まれています。

このサンプルでは、まず要求を送信して x-ms-dop-hint 応答ヘッダーの値にアクセスし、この環境で推奨される並列処理の程度を決定します。 並列処理の最大限度が x-ms-dop-hint 応答ヘッダーの値と同じに設定されている場合は、スループットが最適化され、最小限の 429 TooManyRequests サービス保護制限エラーが返される安定した状態を実現する必要があります。

このサンプルでサービス保護の制限が発生するためには、numberOfRecords 変数を 10,000 以上、またはサンプルを 5 分以上実行するために必要な値に増やす必要があります。 また、コードを変更して、maxDegreeOfParallelismx-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 分かかります。 個人データは収集されません (プライバシー ステートメント)。