Azure 統合

Microsoft Dataverse は、Azureとの統合に対応しています。 開発者は Dataverse にプラグインを登録し、実行コンテキストと呼ばれるランタイム メッセージデータを、クラウド内の 1 つ以上の Azure ソリューションに渡すことができます。 これは特に重要です。なぜなら Azure は、プラグインで取得された実行時コンテキストを外部の基幹業務 (LOB) アプリケーションに伝達するためにサポートされている 2 つのソリューションの 1 つだからです。 もう 1 つのソリューションは、サンドボックスに登録されたプラグインから外部のカスタム エンドポイントへのアクセス機能です。

Azure Service Bus は Dataverse ランタイムデータと外部クラウドベースの基幹業務 (LOB) アプリケーションの間で、安全かつ信頼性の高い通信チャネルを提供します。 この機能が特に役立つのは、異種 Dataverse システムまたは他の Dataverse サーバーと、ビジネス データ変更との同期を保つ場合です。

接続の主な要素

Dataverse とAzure Service Bus 間の接続を実装する主な要素については後述します。 次のセクションの図には、操作中のこれらの要素が表示されます。

データのコンテキスト

データ コンテキストには、現在の Dataverse 操作の一部として処理されるビジネス データが含まれます。 この処理は、ユーザー、ワークフロー、アプリケーションが Dynamics 365 プラットフォームに対して特定の操作を実行する要求を行った際に開始されます。 データのコンテキストは、現在処理中の特定の要求およびテーブルの組合せで実行される、イベント パイプラインに登録されたプラグインまたはカスタム ワークフロー活動に渡されます。 データコンテキストは、イベント実行パイプラインに渡される際は IPluginExecutionContext 型、サービス バスに投稿される際は RemoteExecutionContext 型となります。

Azure Service Bus に投稿されるメッセージ内に含まれるデータ コンテキストは、既定の .NET バイナリ形式に加え、 XML または JSON 形式である場合があります。 これによりクロスプラットフォームの相互運用が可能となります。ここでは Azure がホストする非 .NET クライアントがサービス バスから Dataverse のデータを読み取ることができます。

重要

HTTP ペイロード全体のサイズが 192Kb を超えると、次のプロパティが削除されます:

一部の操作では、次のプロパティは含まれません。

  • 追加データが削除された後にペイロードのサイズが 192kb を超える場合、追加の MessageMaxSizeExceeded プロパティは、システムが送信した BrokeredMessage に追加されます。 これはデータの一部が切捨てられたことを示します。
  • 追加データが削除された後にペイロードのサイズが 192Kb を超える場合、エラーが発生し、メッセージは送信されません。

前述のテクノロジーの詳細については、次を参照してください。

プラグイン

プラグインは、Azure Service Bus へのデータ コンテキストを含むメッセージの投稿を開始するのに使用される 2 つのメソッドのうちの 1 つです。他のメソッドはユーザー定義のワークフロー活動です。 Dataverse-Azure の接続機能が対応しているプラグインは 2 種類あります: アウトオブボックス (OOB) と カスタム です。 いずれの場合も、システムのベスト パフォーマンスのため、非同期で実行するようプラグインを登録することをお勧めします。

Azure 対応の OOB プラグインは Dataverse に付属しており、プラグイン登録ツールにて登録することができます。 この OOB プラグインは、Dataverse プラットフォームに対して完全信頼で実行されます。 イベント実行パイプラインにプラグインの「ステップ」を登録し、プラグインが実行して投稿通知を行うトリガーとなるメッセージとテーブルの組み合わせを特定する必要があります。 実行するとき、プラグインは非同期サービスを通知し、サービス エンドポイント通知サービス (IServiceEndpointNotificationService) を介し、現在の要求データ コンテキストを Azure Service Bus に投稿します。

また、“Azure 対応“ の独自のカスタム プラグインを作成することもできます。 カスタム プラグインは、部分信頼でサンドボックス内で実行します。 カスタム プラグインは、サービス エンドポイントの通知を介し、サービス バスに対するデータ コンテキストの投稿を開始することができます。 このサービスを呼び出すコードを追加すると、プラグインは “Azure 対応“になります。

プラブイン全般の詳細については、 プラグインの記述を参照してください。 Azure 対応プラグインの詳細については、Azure 対応のカスタム プラグインの記述 を参照してください。

ユーザー定義のワークフロー活動

プラグインと同様に、ユーザー定義のワークフロー活動を記述して、サービス エンドポイント通知サービスを使用し、Azure Service Bus に対する現在の要求メッセージ データの投稿を開始することができます。 詳細: ワークフロー拡張

非同期サービス

サービス エンドポイント通知サービスにより通知されると、非同期サービスは、イベント実行パイプラインが現在処理している要求メッセージのデータ コンテキストの、Azure Service Bus に対する投稿を処理します。 各ポストは非同期サービスのシステム ジョブによって実行されます。 ユーザーは、 Power Apps Web アプリケーションのシステム ジョブビューを使用して、各システム ジョブのステータスを表示することができます。

非同期サービスの詳細については、「非同期サービス」を参照してください。

Microsoft Azure サービス バス

サービスバスは Dataverse とAzure サービス バス ソリューション リスナー アプリケーションの間で要求されたメッセージのデータ コンテキストを中継します。 またサービス バスは、投稿した Dynamics 365 データには承認済みのアプリケーションのみがアクセスできるよう、データ セキュリティを提供します。 Dataverse がデータコン テキストをサービス バスに投稿し、リスナー アプリケーションがデータ コンテキストを読み取るための権限は、Azure Shared Access Signatures (SAS) によって管理されています。

サービス バスの詳細については、サービス バス を参照してください。 サービス バス認証の詳細については、 サービス バスの認証および承認 を参照してください。

Microsoft Azure ソリューション

Dataverse と Azure の接続が機能するためには、Azure Service Bus ソリューションのアカウントに少なくともひとつのソリューションが含まれている必要があり、そのソリューションには 1 つ以上のサービスエンドポイントが含まれてる必要があります。 リレー エンドポイント契約の場合、“Dataverse-aware”を持つリスナー アプリケーションが、サービスバス上の Dataverse リクエストをエンドポイント上でアクティブにリッスンする必要があります。 キュー エンドポイント契約では、リスナーはアクティブにリスニングする必要はありません。 リスナーは、RemoteExecutionContext 型が定義されるように Microsoft.Xrm.Sdk アセンブリにリンクすることで、Dataverse に対応したものになります。 詳細については次を参照ください: Microsoft Azure ソリューションに向けたリスナーを記述する

Dataverse は Azure イベント ハブ ソリューションへのエベントデータの送信に対応しています。 イベント ハブの詳細については、Azure イベント ハブ ソリューションのイベント データとの連携 を参照してください。

Dataverse をサービス バス シナリオへ

ここでは、これまでに説明した接続コンポーネントを実装するシナリオについて説明します。 前提条件として、SAS はサポートされている発行者として Dataverse を認識するように構成されており、Azure Service Bus ソリューションは、Dataverse がリスナーのいるエンドポイントに投稿できるようにルールで構成されています。

次の図は、シナリオを構成する物理要素を示しています。

Dynamics 365 からサービス バスへのシナリオ。

この図に示すイベントの順序は次のとおりです。

  1. リスナーアプリケーションは、Azure Service Bus ソリューションのエンドポイントに登録され、サービス バス上の Dataverse リモート実行コンテキストのリスニング処理を開始します。

  2. ユーザーは、登録済みの OOB プラグインまたはカスタム Azure 対応プラグインの実行をトリガーとする Dataverse での操作を実行します。 プラグインが、非同期サービス システム ジョブを介して、現在の要求データ コンテキストのサービス バスへのポストを開始します。

  3. Dataverse によってポストされたクレームが認証されます。 続いてサービス バスは、リモート実行コンテキストをリスナーに渡します。 リスナーはコンテキスト情報を処理し、その情報に対してビジネス関連タスクを実行します。 サービス バスから非同期サービスにポストの成功が通知され、関連するシステム ジョブが完了ステータスに設定されます。

Dataverse と Azure ソリューションの契約の確立

ソリューションのエンドポイントごとに、サービス バス上でのリモート実行コンテキストの「メッセージ」の処理と、そのエンドポイントで使用する必要があるセキュリティを定義する契約を構成します。 サービス バスのメッセージは、ここでサポートされているコントラクトのひとつを使ってエンドポイントで受信されます。

キュー

キュー契約は、クラウドでメッセージ キューを提供します。 キュー契約では、リスナーはエンドポイントでメッセージをアクティブにリスニングする必要はありません。 キューに対しては破壊読み取りと非破壊読み取りがあります。 破壊読み取りでは、キューにあるメッセージが読み取られ、メッセージが削除されます。 非破壊読み取りでは、メッセージがキューから削除されません。

Dataverse がサポートするキューのタイプは、永続キューと呼ばれます。 永久キューでは、コードで指定することができる、有効期間が長く有限のメッセージがあります。

一方向

一方向契約ではアクティブなリスナーが必要です。 エンドポイントにアクティブなリスナーがない場合、サービス バスへのポストが失敗します。 要求を投稿する非同期システム ジョブが最終的に中止され、そのステータスが "失敗" にセットされるまで、Dataverse は指数関数的に長い期間、投稿を再試行します。

二方向

双方向契約は、リスナーからポストを開始した Dataverse プラグインやカスタム ワークフローのアクティビティに文字列の値を返すことができる点を除き、一方向契約と共通しています。

停止

REST 契約は REST エンドポイントでの二方向契約に似ています。

トピック

一つ以上のリスナーがトピックをサブスクライブしてトピックからメッセージを受信することができること以外は、キューに似ています。

イベント ハブ

この契約の種類は Azure イベント ハブ ソリューションに適用されます。

重要

これらの契約を使用するには、Azure SDK v1.7 またはそれ以降を使用して、リスナー アプリケーションを記述する必要があります。

契約の構成では、契約で使用されるセキュリティの種類を指定します。 契約は、Transport Layer Security (TLS) または Secure Sockets Layer (SSL) (https) を使用するトランスポート セキュリティを使用できます。

クレームの認証は、サービス バスに対するセキュリティで保護されたアクセスに使用されます。 サービス バスへの認証で使用されるクレームは、 Dataverse 内で生成され、 Dataverse 構成データベースに指定されている AppFabricIssuer 証明書が署名します。

ランタイム エラーの管理

サービス バスへのポストが試行された後でエラーが発生した場合は、Web アプリケーションの関連するシステム ジョブのステータスを調べて、エラーの詳細を確認します。 サービス バスが停止しているか、リスナーまたはエンドポイントが使用できない場合、 Dataverse で処理されている現在のメッセージはバスにポストされません。 非同期サービスはメッセージのポスト試行を継続しますが、最初は頻繁に試行されるものの、その後は試行間隔が急激に長くなります。 内部の Dataverse エラーの場合、メッセージのポストは試行されません。 外部のサービス バスまたはネットワークのエラーの場合、関連するシステム ジョブは「待機」状態になります。

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。