【问题标题】:Programming a Web Portal for Microsoft Dynamics CRM为 Microsoft Dynamics CRM 编写 Web 门户
【发布时间】:2012-04-29 09:59:33
【问题描述】:
我正在为将连接到 Microsoft Dynamics 的客户开发一个 Web 门户。我不想让 Dynamics CRM 直接成为面向 Internet 的部署 (IFD),所以我想使用 Web 界面与之交互的单独数据库,然后使用 Web 服务在 Web 门户数据库和 Dynamics 之间移动数据客户关系管理。
我只是在寻找关于这是否是最好的方法以及是否有任何好的代码示例等我可以考虑实现它的想法?
我看到 Microsoft 有一个客户门户,但它看起来需要(粗略一瞥)IFD 部署 - 我不想要。
【问题讨论】:
标签:
asp.net
vb.net
dynamics-crm-2011
【解决方案1】:
首先,在创建您的 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 或查看this
您会发现许多示例和演练,它们将帮助您构建良好的门户。
【解决方案2】:
我认为这是一个很好的策略,因为:
- 它允许您将在网站上输入的数据异步放入 CRM。这种脱钩可确保 CRM 和网站都不会成为彼此的瓶颈。
- 只有中间服务层是面向 Internet 的,因此如果此服务层受到损害,您可以控制哪些 CRM 信息将被披露/开放以供更改。
您所追求的架构让人想起 CRM 异步服务的工作方式(异步插件和工作流以这种方式工作)。:
- 将作业放入 CRM 数据库中的队列(表)中。
- 计划的服务每 x 秒唤醒一次,并从队列表中获取最新的 y 记录。
- 服务执行每个作业并将结果(成功、错误消息日志)写回到队列表的记录中。
因此,最困难的事情可能是编写一个从不抛出异常(但总是消化它)并将结果正确记录回数据库的良好调度服务。
要了解有关 Dynamics CRM 的“异步服务架构”的更多信息,请参阅以下内容:http://msdn.microsoft.com/en-us/library/gg334554.aspx
【解决方案3】:
- 看起来不错。
- 它将提高门户和 CRM 的性能。
- 门户网站上显示的数据几乎是实时的。即它不是实时的。
- 在整个开发过程中,您最好不断检查是否没有太多异步处理来保持 CRM 服务器一直忙碌。
- 我不认为加速器/门户需要 CRM 作为 IFD 实例,我想只有门户部分需要面向国际(当然是为了使其可用于此目的!)
- Anwar 是对的,SDK 是进行此类研究的理想之选。
【解决方案4】:
客户门户不需要 IFD 部署。如果您不喜欢客户门户,您可以随时使用 SDK 扩展进行门户开发(microsoft.xrm.client.dll 和 microsoft.xrm.portal.dll 和 portalbase 解决方案),这些都包含在 SDK 中。
关于如何使用 SDK 门户扩展来构建门户有一个很好的资源。
Dynamics CRM 2011 Portal Development