3

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

4

4 回答 4

6

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

  1. Microsoft.crm.sdk.proxy。
  2. Microsoft.xrm.sdk。
  3. 系统.运行时。序列化。
  4. 系统.服务模型。

在您的代码隐藏中创建一个类,然后添加以下代码:

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 或查看内容 。您会发现许多示例和演练,它们将帮助您构建良好的门户。

于 2012-04-18T06:29:05.733 回答
1

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

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

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

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

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

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

于 2012-04-18T20:11:29.413 回答
1
  1. 这看起来是一个很好的方法。
  2. 它将提高门户和 CRM 的性能。
  3. 门户网站上显示的数据几乎是实时的。即它不是实时的。
  4. 在整个开发过程中,您最好不断检查是否没有太多异步处理来保持 CRM 服务器一直忙碌。
  5. 我不认为加速器/门户需要 CRM 作为 IFD 实例,我想只有门户部分需要面向国际(当然是为了使其可用于此目的!)
  6. Anwar 是对的,SDK 是此类研究的一个很好的启动板。
于 2012-04-20T03:05:52.367 回答
0

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

关于如何使用 SDK 门户扩展来构建门户有一个很好的资源。

Dynamics CRM 2011 门户开发

于 2012-04-26T02:04:21.350 回答