アセンブリ開発を最適化する
カテゴリ: パフォーマンス、保守性、設計
影響の可能性: 低い
現象
カスタム アセンブリの開発時には、考慮すべき事項がいくつかあります:
- 多数のユーザー定義ワークフロー活動を持つアセンブリは、登録時にアップロードに時間がかかることがあります。
- 異なる複数のカスタム アセンブリ
- 保守性の複雑さの増大
- プラグイン実行期間の増大の可能性
- Microsoft Dataverse でのサンドボックス アセンブリ サイズの制約は16 MBです。
ガイダンス
1 つのアセンブリのユーザー定義ワークフロー活動の数を制限する
プラグインの登録中にユーザー定義ワークフロー活動を持つアセンブリをアップロードすると、ユーザー定義ワークフロー活動に追加のチェックが必要になります。
何百もの通常のプラグイン タイプを持つアセンブリは、非常に迅速にアップロードできますが、100 を超えるユーザー定義ワークフロー活動があるアセンブリは、登録または更新時に数分またはタイムアウトする場合があります。 1 つのアセンブリに含めるユーザー定義ワークフロー活動は 50 以下にすることをお勧めします。
プラグインまたはユーザー定義ワークフロー活動を単一のアセンブリに統合します。
Dataverse ソリューション用に開発されたプラグインおよびユーザー定義ワークフロー活動は、単一の Visual Studio プロジェクト内にまとめて存在させる必要があります。 プラグインが次の例外に当てはまらない限り、個別のプラグインまたはユーザー定義ワークフロー活動を単一の Visual Studio プロジェクトまたはアセンブリに統合することを考量してください。
- プラグイン / ユーザー定義のワークフロー活動は、選択的に 1 つの環境に展開する必要があります。
- Dataverse インスタンスの場合、物理アセンブリ サイズは 16 MB に近いサイズまたはそれ以上です。
- 1 つのアセンブリのユーザー定義ワークフロー活動の数を制限する で説明したように、アセンブリには 50 を超えるユーザー定義ワークフロー活動があります
プラグイン / ユーザー定義ワークフロー活動を複数のアセンブリに移動する
Power Apps および Dynamics 365 (online) には 16 MB のアセンブリ サイズ制限があり、これは変更できません。 アセンブリ サイズが 16 MB に近づいたら、プラグイン/ユーザー定義ワークフロー活動を複数のアセンブリに移動することを検討します。
問題となるパターン
アセンブリは、登録時にアップロードに時間がかかります
ユーザー定義ワークフロー活動タイプのプラグインが登録中にアップロードされると、タイプごとに追加の検証チェックが必要になります。 アセンブリに 100 を超えるユーザー定義ワークフロー活動タイプのプラグインが含まれている場合、チェックを完了するのに数分かかる可能性があり、タイムアウトするリスクがあります。
複数のアセンブリ
複数の領域に影響を与える可能性のあるアセンブリが複数ある:
パフォーマンス - 各アセンブリには、Dataverse によって統合されるライフサイクルがあります。 これにはアセンブリの読み込み、キャッシュ、アンロードが含まれます。 複数のアセンブリが原因でサーバー上で多くの作業 (アセンブリの読み込みやキャッシュ) が実行されており、プラグイン/ユーザー定義ワークフロー活動の全体の実行時間に影響を与える可能性がある。
保守性 - 複数のプラグイン/ユーザー定義ワークフロー活動があると、Visual Studio プロジェクトのアプリケーション ライフサイクル管理 (ALM) が複雑化する原因となります。 これにより、特定のプラグイン/ユーザー定義ワークフロー活動のプロジェクトを更新またはパッチする場合、プラグイン/ユーザー定義ワークフロー活動をソリューション内にパッケージする場合、プラグイン/ユーザー定義ワークフロー活動を展開内で管理する場合のリスクと作業時間が増大します。
16 MB より大きいアセンブリ
16 MB より大きいユーザー定義アセンブリは、Dataverse 内に登録できません。
追加情報
多くの場合、開発者はプラグイン/ユーザー定義ワークフロー活動ごとに新しい Visual Studio プロジェクトを作成します。 つまり、プラグイン/ユーザー定義ワークフロー活動ごとに個別のアセンブリが生成されることになります。
関連項目
イベント フレームワーク
ビジネス プロセスを拡張するためのプラグインの使用
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。