このリストには、Dataverse でのプラグインおよびワークフロー開発における、最良の導入手法とガイドが含まれています。
| ベスト プラクティス | プロパティ |
|---|---|
| プラグインおよびワークフロー アクティビティ内でバッチ要求タイプを使用しないでください | プラグインまたはワークフロー活動では ExecuteMultipleRequest または ExecuteTransactionRequest メッセージ要求クラスを使用しないでください。 |
IPlugin の実装をステートレスとして開発する |
IPlugin を実装するクラス メンバーは、潜在的なスレッドの安全性の問題にさらされ、データの不整合性やパフォーマンスの問題につながる恐れがあります。 |
| プラグイン ステップ登録を重複させないでください | プラグイン ステップ登録を重複させると、同じメッセージまたはイベントに対してプラグインが複数回実行されます。 |
| プラグインおよびワークフロー アクティビティ内でパラレル実行を使用しないでください | プラグインまたはカスタム ワークフロー アクティビティ内では、マルチスレッドまたは並列スレッドはサポートされていません。 |
PreOperation
RetrieveMultiple を使用してフィルター処理した場合に、すべての種類のクエリを実行する |
すべてのアプリケーションの、最適なパフォーマンスと一貫した結果を得るには、RetrieveMultiple の PreOperation に登録されたプラグインを使用できるすべての種類のクエリに対してフィルター処理を実行する必要があります |
| プラグイン登録にフィルター属性を含める | フィルター属性がプラグイン登録ステップに設定されていないと、そのイベントに更新メッセージが発生するたびにプラグインは実行されます。 |
| retrieve および RetrieveMultiple メッセージ用のプラグインの登録を制限する | 同期プラグイン ロジックを Retrieve および RetrieveMultiple メッセージ イベントに追加すると速度低下が発生する可能性があります。 |
| 1 つのソリューションでプラグインを管理する | プラグイン アセンブリの定義は 1 つのソリューション内で維持する必要があります。 |
| ユーザー定義のアセンブリ開発を最適化する | 個々のプラグイン/ユーザー定義ワークフロー活動を単一のカスタム アセンブリに統合してパフォーマンスおよび保守性を改善し、アセンブリ サイズがサンドボックス アセンブリ サイズの上限に近い場合は、プラグイン/ユーザー定義ワークフロー活動をユーザー定義アセンブリに移動することを検討してください。 |
| プラグインで外部ホストを操作するときは、KeepAlive を false に設定する | KeepAlive プロパティを HTTP 要求ヘッダーで True に設定します。明示的に false に定義されていない場合、プラグインの実行時間が長くなる可能性があります。 |
| プラグインで外部呼び出しをする場合のタイムアウトを設定する | 外部呼び出しがプラグイン内での応答を期待する時間の長さを制限します。 |
| プラグインおよびワークフロー活動で InvalidPluginExecutionException を使用する | エラーをプラグインまたはワークフロー活動で上げる場合は InvalidPluginExecutionException を使用します。 |
| プラグインで ITracingService を使用する | プラグイン内で ITracingService を使用して、コードの実行時に何が起こるかについて把握します。 |
| 発信通話を行うプラグインの証明書の依存関係を確認する | コードがアウトバウンド コールに依存する証明書に、有効な証明書のチェーンがあることを確認してください。 |
| メモリ効率の高いコードを書く | プラグイン内で必要なデータのみを取得します。 |