为Microsoft Dynamics CRM编写Web门户的编程

时间:2012-04-18 02:00:58

标签: asp.net vb.net dynamics-crm-2011

我正在为将连接到Microsoft Dynamics的客户开发Web门户。我不想让Dynamics CRM直接面向面向Internet的部署(IFD),因此我想使用Web界面与之交互的单独数据库,然后使用Web服务在Web门户数据库和Dynamics之间移动数据CRM。 我只是想知道这是否是最好的方法,以及是否有任何好的代码示例等我可以考虑实现这个? 我看到微软有一个客户门户网站,但看起来它需要(粗略地看一眼)IFD部署 - 这是我不想要的。

4 个答案:

答案 0 :(得分:6)

首先,在创建ASP.NET项目(WebForms或MVC 3)之后,添加以下引用:

  1. Microsoft.crm.sdk.proxy。
  2. Microsoft.xrm.sdk。
  3. System.Runtime。序列化。
  4. System.ServiceModel。
  5. 在您的代码隐藏中创建一个类,然后添加以下代码:

    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 :(得分:1)

我认为这是一个很好的策略,因为:

  • 它允许您将在网站上输入的数据异步放入CRM中。这种脱钩确保CRM和网站都不会成为彼此的瓶颈。
  • 只有中间服务层是面向互联网的,因此如果此服务层受到损害,您将可以控制将要披露/打开哪些CRM信息以进行更改。

您所使用的架构让人联想到CRM异步服务的工作方式(异步插件和工作流以这种方式工作)。:

  • 将作业放入CRM DB的队列(表格)中。
  • 计划服务每隔x秒唤醒一次,并从队列表中获取最新的y记录。
  • 服务执行每个作业并将结果(成功,错误消息日志)写回队列表的记录。

所以可能最困难的事情是编写一个从不抛出异常的好的预定服务(但总是消化它)并将结果正确地记录回数据库。

要详细了解Dynamics CRM的“异步服务架构”,请参阅以下内容:http://msdn.microsoft.com/en-us/library/gg334554.aspx

答案 2 :(得分:1)

  1. 这看起来很不错。
  2. 它将改善门户网站和CRM的性能。
  3. 门户网站上显示的数据几乎是实时的。即它不是实时的。
  4. 在整个开发过程中,您最好继续检查是否存在太多的异步处理,以使CRM服务器始终保持忙碌状态。
  5. 我不认为,加速器/门户网站REQUIRE CRM是一个IFD实例,我想只有门户网站部分需要面向国际(当然要使其可用于此目的!)
  6. Anwar是对的,SDK对于这样的研究是一个很好的lauchpad。

答案 3 :(得分:0)

客户门户网站不需要IFD部署。如果您不喜欢客户门户,您可以随时使用SDK扩展进行门户开发(microsoft.xrm.client.dll& microsoft.xrm.portal.dll和portalbase解决方案),这些都包含在SDK中。

关于如何使用SDK Portal Extenstion构建门户网站有很好的资源。

Dynamics CRM 2011 Portal Development