Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dynamics crm 微软动态CRM 2011_Dynamics Crm_Crm_Microsoft Dynamics - Fatal编程技术网

Dynamics crm 微软动态CRM 2011

Dynamics crm 微软动态CRM 2011,dynamics-crm,crm,microsoft-dynamics,Dynamics Crm,Crm,Microsoft Dynamics,在Dynamics CRM中,ioOrganizationService和OrganizationServiceProxy之间有什么区别 它与在Crm上下文和Crm上下文之外访问服务有关吗?IOR组织服务用于插件和自定义工作流活动,并从执行上下文派生 而OrganizationServiceProxy主要用于在Dynamics CRM应用程序外部运行的代码。最简单的答案是IOOrganizationService是一个接口,而OrganizationServiceProxy是一个实现IOOrga

在Dynamics CRM中,ioOrganizationServiceOrganizationServiceProxy之间有什么区别


它与在Crm上下文和Crm上下文之外访问服务有关吗?

IOR组织服务用于插件和自定义工作流活动,并从执行上下文派生


而OrganizationServiceProxy主要用于在Dynamics CRM应用程序外部运行的代码。

最简单的答案是IOOrganizationService是一个接口,而OrganizationServiceProxy是一个实现IOOrganizationService接口的类。这意味着IOOrganizationService上的任何属性/方法默认情况下也可通过OrganizationServiceProxy使用

如果在插件或自定义工作流活动的上下文中运行,它将允许您访问可用于查询CRM的IOrganizationService


如果您正在编写外部内容,例如windows服务或独立应用程序,则通常使用OrganizationServiceProxy类来设置到CRM web服务的连接。显然,您可以稍后将其分配给IOOrganizationService(例如,依赖项注入/用于单元测试目的)。或者,如果您愿意,没有理由继续使用OrganizationServiceProxy。

OrganizationServiceProxy是IOrganizationService的实现。它类似于case,因为List是接口IList的实现。如果要谈谈微软到底为什么在测试之外还提供接口和实现,我可以提出一个发生在我生活中的有趣案例。我需要重新阅读dynamics crm中的信息。在我的例子中,OrganizationServiceProxy的过期速度更快,然后从CRM接收信息。为了修复它,我创建了以下facade:

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用Microsoft.Xrm.Sdk;
使用Microsoft.Xrm.Sdk.Query;
命名空间组织服务
{
公共委托IOOrganizationService CreateOrganizationServiceFunc(字符串organizationServiceUrl、字符串用户名、字符串密码、TimeSpan?timeout=null、bool useSSL=false);
公共类OrganizationServiceFacade:IOOrganizationService
{
私有组织服务_serviceInternal{get;set;}
私有CreateOrganizationServiceFunc\u创建者;
Func_orgServiceFactory;
公共组织ServiceFacade(Func orgServiceFactory)
{
_orgServiceFactory=orgServiceFactory;
CreateService();
}
私有void CreateService()
{
_serviceInternal=_orgServiceFactory();
}
公共void关联(字符串entityName、Guid entityId、关系关系、EntityReferenceCollection relatedEntities)
{
尝试
{
_serviceInternal.Associate(entityName、entityId、关系、relatedEntities);
}
捕获(System.ServiceModel.Security.MessageSecurityException mex)
{
CreateService();
_serviceInternal.Associate(entityName、entityId、关系、relatedEntities);
}
}
公共Guid创建(实体)
{
指导结果;
尝试
{
结果=_serviceInternal.Create(实体);
}
捕获(System.ServiceModel.Security.MessageSecurityException mex)
{
CreateService();
结果=_serviceInternal.Create(实体);
}
返回结果;
}
公共void Delete(字符串entityName,Guid id)
{
尝试
{
_serviceInternal.Delete(entityName,id);
}
捕获(System.ServiceModel.Security.MessageSecurityException mex)
{
CreateService();
_serviceInternal.Delete(entityName,id);
}
}
公共void解除关联(字符串entityName、Guid entityId、关系关系、EntityReferenceCollection relatedEntities)
{
尝试
{
_解除关联(entityName、entityId、关系、relatedEntities);
}
捕获(System.ServiceModel.Security.MessageSecurityException mex)
{
CreateService();
_解除关联(entityName、entityId、关系、relatedEntities);
}
}
公共组织响应执行(组织请求)
{
尝试
{
返回_serviceInternal.Execute(请求);
}
捕获(System.ServiceModel.Security.MessageSecurityException mex)
{
CreateService();
返回_serviceInternal.Execute(请求);
}
}
公共实体检索(字符串entityName、Guid id、ColumnSet ColumnSet)
{
尝试
{
return _serviceInternal.Retrieve(entityName、id、columnSet);
}
捕获(System.ServiceModel.Security.MessageSecurityException mex)
{
CreateService();
return _serviceInternal.Retrieve(entityName、id、columnSet);
}
}
公共EntityCollection RetrieveMultiple(查询数据库查询)
{
尝试
{
return\u serviceInternal.Retr