Microsoft Dynamics に接続する顧客向けの Web ポータルに取り組んでいます。Dynamics CRM を直接インターネットに接続する展開 (IFD) にしたくないので、Web インターフェイスが対話する別のデータベースを使用し、Web サービスを使用して Web ポータル データベースと Dynamics の間でデータを移動したいと考えています。 CRM。これが最善の方法であるかどうか、およびこれを実装するために参照できる適切なコード例などがあるかどうかについての考えを探していますか? Microsoft にはカスタマー ポータルがあるのを見ましたが、(ざっと見ただけで) IFD 展開が必要なように見えますが、これは望ましくありません。
4 に答える
まず、ASP.NET プロジェクト (WebForms または MVC 3) を作成した後、次の参照を追加します。
- Microsoft.crm.sdk.proxy.
- Microsoft.xrm.sdk.
- システム.ランタイム。シリアル化。
- System.ServiceModel。
コード ビハインドでクラスを作成し、次のコードを追加します。
private IOrganizationService GetCrmService(string userName, string password, string domain, Uri serviceUri)
{
OrganizationServiceProxy _serviceProxy;
ClientCredentials credentials = new ClientCredentials();
credentials.Windows.ClientCredential = new System.Net.NetworkCredential(userName, password, domain);
//credentials.UserName.UserName = userName; // uncomment in case you want to impersonate
//credentials.UserName.Password = password;
ClientCredentials deviceCredentials = new ClientCredentials();
using (_serviceProxy = new OrganizationServiceProxy(serviceUri,
null,
credentials,
deviceCredentials))
{
_serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
return (IOrganizationService)_serviceProxy;
}
}
複数のレコードを取得する場合:
string fetch = @"My Fetch goes here";
EntityCollection records = getCrmService().RetrieveMultiple(new FetchExpression(fetch));
SDK をダウンロードするか、これを確認することを強くお勧めし ます。優れたポータルの構築に役立つ多くのサンプルとウォークスルーが見つかります。
- それは良いアプローチのように見えます。
- ポータルとCRMの両方のパフォーマンスが向上します。
- ポータルに表示されるデータはほぼリアルタイムです。つまり、リアルタイムではありません。
- 開発全体を通して、CRMサーバーを常にビジー状態に保つには、非同期処理が多すぎないことを確認し続けることをお勧めします。
- アクセラレーター/ポータルがIFDインスタンスであるためにCRMが必要だとは思いません。ポータル部分だけが国際的に面している必要があると思います(もちろん、目的に使用できるようにするためです!)
- Anwarは正しいです、SDKはそのような研究のための良いラウチパッドです。
次の理由から、これは良い戦略だと思います。
- Web サイトに入力されたデータを非同期で CRM に入れることができます。このデカップリングにより、CRM と Web サイトがお互いのボトルネックになることはありません。
- 中間サービス レイヤーのみがインターネットに面しているため、このサービス レイヤーが危険にさらされた場合に、どの CRM 情報が開示されたり、改ざんされたりするかを制御できます。
あなたが求めているアーキテクチャは、CRM 非同期サービスが機能する方法を連想させます (非同期プラグインとワークフローはこのように機能します)。
- ジョブは、CRM DB のキュー (テーブル) に入れられます。
- スケジュールされたサービスは x 秒ごとに起動し、キュー テーブルから最新の y レコードをフェッチします。
- サービスは各ジョブを実行し、結果 (成功、エラー メッセージ ログ) をキュー テーブルのレコードに書き込みます。
したがって、おそらく最も難しいのは、例外をスローせず (ただし、常にダイジェストする)、適切に結果を DB に記録する適切なスケジュールされたサービスを作成することです。
Dynamics CRM の「非同期サービス アーキテクチャ」の詳細については、次を参照してください: http://msdn.microsoft.com/en-us/library/gg334554.aspx
カスタマー ポータル IFD の導入は不要です。また、カスタマー ポータルが気に入らない場合は、SDK にすべて含まれているポータル開発用の SDK 拡張機能 (microsoft.xrm.client.dll & microsoft.xrm.portal.dll および portalbase ソリューション) をいつでも使用できます。
SDK Portal Extenstion を使用してポータルを構築する方法に関する優れたリソースがあります。