2012-04-18 14 views
3

Microsoft Dynamicsに接続する顧客向けのWebポータルで作業しています。ダイナミクスCRMを直接インターネットデプロイメント(IFD)に向かわせたくないので、Webインターフェイスが相互作用する別のデータベースを使用してから、WebポータルデータベースとDynamicsの間でデータを移動するためにWebサービスを使用したいと思いますCRM。 これは進歩の最善の方法であるかどうか、これを実装するために見ていいコード例などがあるかどうかについて考えていますか? マイクロソフトがカスタマーポータルを持っているのを見ましたが、IFDの展開が必要なように見えます(私の望むところではありません)。Microsoft Dynamics CRM用のWebポータルのプログラミング

答えて

6

まず、あなたのASP.NETプロジェクト(WebフォームまたはMVC 3)を作成した後、次の参照を追加します。

  1. Microsoft.crm.sdk.proxyを。
  2. Microsoft.xrm.sdk。
  3. System.Runtime。シリアライゼーション。
  4. 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をダウンロードすることをお勧めしますかチェックthis 良いポータルを構築するのに役立つ多くのサンプルとチュートリアルがあります。

1

私はので、それは良い戦略だと思う:それはあなたが非同期的にCRMにウェブサイト上で入力されたデータを配置することができます

  • 。このデカップリングにより、CRMとWebサイトのどちらもボトルネックになることはありません。
  • 中間サービス層のみがインターネットに直面しているため、このサービス層が侵害された場合に、CRM情報が改ざんされる可能性があります。

あなたは後にしているアーキテクチャでは、CRM非同期サービスが動作する方法を彷彿とさせる(非同期プラグインとワークフローは、このように動作します)。:

  • ジョブがキュー(テーブル)内に置かれていますCRM DB。
  • スケジュールされたサービスはx秒ごとに起き上がり、キューテーブルから最新のyレコードを取得します。
  • サービスは各ジョブを実行し、結果(成功、エラーメッセージログ)をキューテーブルのレコードに書き戻します。

したがって、おそらく最も難しいのは、決して例外をスローしない(ただし常にダイジェストする)優れたスケジュールされたサービスを作成し、結果をDBに適切に記録することです。

以下を参照してください、Dynamics CRMのの「非同期サービスアーキテクチャ」について詳しく知ることができます。http://msdn.microsoft.com/en-us/library/gg334554.aspx

1
  1. それは良いアプローチのように見えます。
  2. ポータルとCRMの両方のパフォーマンスが向上します。
  3. ポータルに表示されるデータは、ほぼリアルタイムです。つまりリアルタイムではありません。
  4. 開発中、TOO MUCH非同期処理がないことを確認し続けることで、CRMサーバーを常にビジー状態に保つことができます。
  5. アクセラレータ/ポータルがIFDインスタンスになるようにCRMが必要であるとは思わないので、ポータルパーツだけをインターネートにする必要があります(もちろん目的に使用できるようにする必要があります)。
  6. アンワールはSDKはそのような研究のための良いlauchpadです。
0

カスタマーポータルIFDの展開は必要ありません。また、カスタマーポータルが気に入らない場合は、SDKに含まれているポータル開発用のSDK拡張機能(microsoft.xrm.client.dll & microsoft.xrm.portal.dllおよびportalbaseソリューション)をいつでも使用できます。

SDK Portal Extenstionを使用してポータルを構築する方法に関する素晴らしいリソースがあります。

Dynamics CRM 2011 Portal Development

関連する問題