retrieve および RetrieveMultiple メッセージ用のプラグインの登録を制限する
カテゴリ: パフォーマンス
影響の可能性: 中程度
現象
同期プラグイン ロジックを Retrieve
および RetrieveMultiple
メッセージ イベントに追加すると、次のようになります:
- モデル駆動アプリが応答しない
- クライアント対話が遅くなる
- ブラウザーが応答を停止する
ガイダンス
Retrieve
メッセージおよび RetrieveMultiple
メッセージに登録されているプラグインを含むソリューションの設計を評価します。 一般に、これらのメッセージにプラグインを登録することはお勧めしません。その理由は、さまざまなエントリ ポイントからエンティティ レコードを返す要求の速度低下に関連するリスクがあるためです。 ただし、アプリケーションの設計に適している場合があります。 一般的なアプリケーションの例として、特定の既存クエリにさらにフィルター条件を挿入することが挙げられます。 このアプローチにより、ビューのユーザー インターフェイスでできないことをソリューションで補正できます。 ビュー デザイナーでサポートできるのは複雑性レベルの特定の階層のみで、結果やクエリを設定するにはそのほかのオプションを採用する必要があります。
適切なソリューションの場合は、次のヒントに従って環境への影響を最小限に抑えてください:
プラグイン コードに条件を追加して、対象ロジックを実行する必要があるかどうかをすばやく確認します。 不要な場合はすぐに戻り、呼び出し側にデータを返すことを遅らせる不要な手順は実行しないようにします。
時間のかかるタスク、特に外部サービス呼び出しや Dataverse への複雑なクエリの呼び出しといった、非確定的なタスクは避けます。
Microsoft Dataverse からのより多くのデータのクエリを制限または回避をします。
仮想エンティティ
外部ソースからデータを取得するために、最も一般的な Retrieve
および RetrieveMultiple
はプラグイン内で呼び出されます。 外部ソースからのデータは、Power Apps 内で表示されるか、既存のデータを処理 / 操作するために使用されます。 Dataverse 仮想テーブル は、データを複製することなく、また多くの場合カスタム コーディングなしで、Power Apps のテーブルとしてデータをシームレスに表すことで、外部システムに存在するデータの統合を可能にします。
取得に関する注意
Dataverse は、エンティティ フォームの読み込みごとに少なくとも 2 つの Retrieve
メッセージをトリガーします。 1 つの取得には、エンティティによって異なる可能性のある制限された属性が含まれ、後続の呼び出しには、より多くの属性が含まれます。 フォームの読み込み時に 1 つのアクションが発生することを想定している場合は、Retrieve
メッセージのトリガーだけに依存しないでください。
追加情報
Retrieve
メッセージと RetrieveMultiple
メッセージは、最も頻繁に処理される 2 つのメッセージです。 Retrieve
メッセージは、エンティティ フォームが開くとき、または 1 つのサービス エンドポイントで Retrieve
操作を使用してエンティティがアクセスされるときにトリガーされます。 RetrieveMultiple
は、アプリケーションやサービス ポイントでのさまざまなアクションによりトリガーされます。たとえば、ユーザー インターフェイスのグリッドに値が入力される場合などです。 同期プラグイン ロジックをこれらのメッセージ イベントに追加すると速度低下が発生する可能性があります。
関連項目
パフォーマンス最適化、Microsoft Dynamics CRM Online
外部データ ソースからのデータを格納する仮想エンティティの作成および編集
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。