次の方法で共有


マネージド コードの開発スタイルを選択する

 

公開日: 2016年11月

対象: Dynamics CRM 2015

Microsoft Dynamics CRM SDK には、Microsoft Dynamics CRM 2015 および Microsoft Dynamics CRM Online 2015 更新プログラム Web サービスにアクセスするためまたはアプリケーションを拡張するためのコードを作成するときに使用する、さまざまな方法があります。 このガイドでは、さまざまコーディング タスクを実行するために使用できるツールやメソッドについて焦点をあて、それらを使う場合の指針をいくつか提供します。

このトピックの内容

コードを使用した認証

プラグインまたはユーザー定義のワークフロー活動の作成および展開

XAML ワークフローの作成および展開

エンティティのプログラミング (事前バインド対遅延制限対開発者用拡張機能)

クエリ (Fetch 対 QueryExpressions 対 LINQ 対 Developer Extensions)

コードを使用した認証

次の表は、設置型、インターネットに接続する展開 (IFD)、またはオンライン展開の Microsoft Dynamics 365 のインストールで呼び出し元を認証するコードを記述するために使用できるオプションを一覧にしたものです。

クラス

説明と使用方法

詳細

ヘルパー コード

サンプル コードのクラスは、Web サービスに接続してユーザーを認証する方法を示します。 ユーザー独自の認証コードのベースとしてヘルパー コードを使用できます。

このコードは、使いやすく、すべての Microsoft Dynamics 365 展開の種類をサポートします。 また、後で再利用できるように Windows Credential Manager にユーザーのパスワードを保存することができます。

必要に応じてコピーしカスタマイズできるよう、完全なソース・コードが提供されています。 これは、将来のリリースでのこのヘルパー コードへの変更が自分のプログラムに影響しないようにするために推奨される方法です。

サンプル: Microsoft Dynamics CRM のクイック スタート

サンプルとヘルパー コードの使用

ヘルパー コード: ServerConnection クラス

このサンプル コードは、SDK の SampleCode\CS\HelperCode\CrmServiceHelpers.cs および SampleCode\VB\HelperCode\CrmServiceHelpers.vb ファイルにあります。 Microsoft Dynamics CRM SDK パッケージをダウンロードします。

Developer Extensions

これらのアセンブリは Microsoft Dynamics 365 と対話するアプリケーションの開発を簡素化および迅速化するために提供されます。 これは、特に OrganizationServiceContext クラスの使用に関するコア Microsoft Dynamics CRM SDK の機能を拡張します。

可能なかぎり少ないコード行で十分に動作するようにする簡単な方法として、CrmConnection クラスを使用します。

このコードは、使いやすく、すべての Microsoft Dynamics 365 展開の種類をサポートします。

Microsoft Dynamics CRM 2015 の Developer Extensions

Microsoft Dynamics CRM 2015 へのより簡単な接続

Xrm クライアント

Windows Communication Foundation (WCF) サービス チャネル管理と認証プロセスをカスタマイズする必要があるすべての高度な開発向けに、IServiceManagement<TService> および OrganizationServiceProxy クラスを Microsoft.Xrm.Sdk.Client 名前空間で使用します。

これらのクラスをそのまま使用すると、より優れた接続と認証性能を得られ、より柔軟になります。 ただし、これらのサービスには、WCF チャネルとサーバー認証に関する高度な知識が必要です。 また、すべての Microsoft Dynamics 365 展開形式を処理するためより多くのコードを作成する必要があります。

Active Directory およびクレームベース認証

サンプル: Microsoft Dynamics CRMWeb サービスでユーザーを認証する

サービス チャネル割り当てのパフォーマンスの改善

XRM ツール

これらのアセンブリは、Dynamics 365 API を活用して、数行のコードと Windows PowerShell コマンドレットを使用して容易な認証をサポートします。 これらのクラスのすべての関数呼び出しは、マルチスレッド環境で、Dynamics 365 で実行される操作についてスレッド セーフを提供します。 これにより、統合認証セキュリティ ロジックによる共通のサインイン制御と、認証情報を安全に保存して再使用する機能が提供され、Windows クライアント アプリケーションから Dynamics 365 への一貫したシームレスなサインイン処理が実現します。

また、これらのクラスは組み込みの診断トレースを提供して、Windows クライアント アプリケーションからのアクション コールのトラブルシューティングとパフォーマンス レポートを支援します。

これらのクラスは、OAuth を除く、Microsoft Dynamics 365 のすべての展開の種類と認証の種類をサポートします。

XRM ツールを使用して Windows のクライアント アプリケーションを作成する

CRM への接続に XRM ツールを使用

XRM ツール用の PowerShell コマンドレットを使用して CRM に接続

サンプル: XRM ツール API のクイック スタート

プラグインまたはユーザー定義のワークフロー活動の作成および展開

次の表は、プラグインおよびユーザー定義のワークフロー活動の作成および展開に使用できるオプションを一覧にしたものです。

ツール

説明と使用方法

詳細

プラグインおよびユーザー定義ワークフロー活動のクラス

プラグイン登録ツール

プラグインおよびユーザー定義ワークフロー活動のクラスで、その Microsoft Dynamics 365 と統合可能なユーザー定義によるビジネス ロジックを実行するためのイベント ハンドラーを作成してプラットフォームの標準の動作を変更または拡張することができます。

これらのクラスを直接使用すると、Developer Toolkit で用意されているヘルパー コードがユーザー定義のコードに含まれなくなります。

プラグインおよびユーザー定義のワークフロー活動を新規作成する場合、プラグイン登録ツールを使用して登録する必要があります。 このツールは、グラフィカル ユーザー インターフェイスを提供します。このツールを使用して、プラグインとユーザー定義のワークフロー活動を Microsoft Dynamics 365 に登録できます。

このメソッドは次の場合に使用します。

プラグインおよびユーザー定義の活動クラスの使用方法について説明します。

追加ライブラリが自動生成され、コード ファイルに配置されないようにしてください。

外部ツールおよび Web アプリケーションを使用してユーザー定義コード アセンブリを登録およびパッケージ化することは構いません。

プラグインの開発

ユーザー定義ワークフロー活動 (ワークフロー アセンブリ)

プラグインの登録および展開

チュートリアル: プラグイン登録ツールを使用したプラグインの登録

XAML ワークフローの作成および展開

次の表は、XAML ワークフローの作成および展開に使用できるオプションを一覧にしたものです。

ツール

説明と使用方法

詳細

Microsoft Visual Studio ワークフロー デザイナー

設置型 Microsoft Dynamics 365 および IFD は、カスタム XAML ワークフローの作成機能をサポートしています。Microsoft Visual Studio ワークフロー デザイナーを使用すると、ツールボックスから設計画面にワークフロー活動をドラッグしてユーザー定義 XAML ワークフロー (宣言型ワークフロー) を作成し、変数を作成し、これらの活動のプロパティを設定して、ワークフローの機能を実装できます。 組み込みの Windows Workflow Foundation 活動または Microsoft Dynamics 365 に固有のプロセス活動を使用できます。

ユーザー定義 XAML ワークフローのみを作成する場合は、この方法を使用します。

カスタム XAML ワークフロー

ビジネス プロセスを自動化するワークフローの記述

エンティティのプログラミング (事前バインド対遅延制限対開発者用拡張機能)

次の表は、Microsoft Dynamics 365 でエンティティを使用するコードの作成に使用できるオプションを一覧にしたものです。

Class

説明と使用方法

詳細

事前バインド

<optional namespace>.Account<optional namespace>.Contact など。

コード生成ツール (CrmSvcUtil) を使用して、Microsoft Dynamics 365 のビジネス データにアクセスするために使用できる、Entity クラスから派生した事前バインド型エンティティ クラスを作成します。 これらのクラスには、ユーザー定義エンティティを含め、ご使用のインストール環境内のエンティティごとに 1 つのクラスが含まれます。

コンパイル時にコンパイラで型参照を検証する場合は、このメソッドを使用します。 また、属性および関連付けは生成されたクラスに含まれていいるため、エンティティ、属性、および関連付け名は IntelliSense でサポートされています。 厳密な型の使用は、一般に好ましいメソッドであり、この SDK マニュアルのサンプルの大部分で使用されています。

この方法では、次のようないくつかのマイナスの側面があります。

クラスは、スキーマの変更を利用するため、エンティティをカスタマイズするたびに再生成する必要があります。

エンティティがネットワーク経由で伝達中に遅延バインドに変換されるにつれ、シリアル化のコストは増加します。

コードでの事前バインド型エンティティ クラスの使用

コード生成ツール (CrmSvcUtil.exe) を使用して事前バインド型エンティティ クラスを作成する

遅延バインド

Microsoft.Xrm.Entity

Entity クラスにエンティティの論理名とエンティティの属性のプロパティ バッグ配列が含まれています。 これにより、遅延バインドを使用して、アプリケーションをコンパイルしたときには利用できなかったカスタム エンティティやカスタム属性といった種類を操作できるようになります。

この方法の別の利点は、エンティティ データがネットワーク経由で送信されるにつれシリアル化が減少する、つまりパフォーマンスが向上することです。

この方法では、次のようないくつかのマイナスの側面があります。

暗黙的なキャストを防ぐため、種類は明示的に指定する必要があります。

エンティティや属性などのリソースの名前は、ハード コーディングされるので、スキーマにへの変更の影響を排除することは困難です。

属性の名前はハード コーディングされた文字列のため、コーディング中にスペル エラーが発生しやすくなります。

コードでの遅延バインドされたエンティティ クラスの使用

Developer Extensions

Microsoft.Xrm.Client.CrmEntity

CrmEntity クラスは、Entity クラスから派生します。Entity クラスの同じ機能がすべて用意されている上、CrmEntity は、タスクの拡張、新しい設定方法および共通コードのタスクを簡素化するための拡張メソッドの取得と設定と、2 種類の新しいプロパティのイベントが追加されています。

Microsoft Dynamics CRM 2015 の Developer Extensions

コード生成ツール拡張機能を使用した事前バインド

<optional namespace>.Account<optional namespace>.Account など。

CrmSvcUtil ツールの Developer Extensions バージョンを使用すると、CrmEntity クラスから派生する事前バインド型を生成できます。 Developer Extensions で使用可能なそのほかの機能を使用する場合に使用します。

コード生成ツール拡張機能を使用したコードの生成 (Dynamics CRM 2015)

エンティティのコンテキストへの添付 (Dynamics CRM 2015)

Microsoft Dynamics CRM 2015 の Developer Extensions

クエリ (Fetch 対 QueryExpressions 対 LINQ 対 Developer Extensions)

次の表は、Microsoft Dynamics 365 データベースからレコードを取得するために使用できるクエリの作成で使用できるオプションを一覧にしたものです。

クエリ スタイル

説明と使用方法

詳細

FetchXML

これは、集計とグループ化に加え QueryExpression のすべての機能をサポートするユーザー定義の XML ベースクエリ言語です。 Fetch クエリでは、複数のエンティティのレコードを取得できます。 また、クエリは、データベース内にシリアル化して保存できます。 これは主に、UserQuery エンティティ内のユーザー所有の保存されたビューとして、または SavedQuery エンティティ内の組織所有のビューとしてクエリを保存する際に使用されます。

このクエリ言語は、集計およびグループ化のサポートが必要な場合や、クエリを保存する必要がある場合に使用します。

FetchXML を使用したクエリの構築

QueryExpression

クエリ式は単一のエンティティの種類のレコードの検索に使用されます。 クエリはオブジェクト モデルとして構築されます。 このクラスは FetchXML の集計とグループ化を除くすべての機能をサポートします。 また、事前バインド エンティティと遅延バインド エンティティの両方のプログラミング形式をサポートします。

QueryExpression でクエリを作成する

LINQ

クエリは標準言語を使用して構築されますが、内部的には .NET 統合言語クエリ (LINQ)は QueryExpressionを使用するので、QueryExpression の機能に限定されます。LINQは、事前バインド エンティティと遅延バインド エンティティの両方のプログラミング形式をサポートします。

LINQ (.NET 統合言語クエリ) を使用してクエリを作成する

関連項目

開発者向けの概要
Microsoft Dynamics CRM 2015 の開発の理解に役立つチュートリアル
アプリケーションとサーバー拡張機能の作成
Microsoft Dynamics CRM 2015 のプログラミング モデル

© 2017 Microsoft. All rights reserved. 著作権