Ste*_*n G 5 .net c# dynamics-crm dynamics-crm-365
Microsoft 用于访问 Dynamics 的示例代码通常如下所示:
static void Main(string[] args)
{
try
{
string connectionString =
"Url=https://myorg.crm.dynamics.com; Username=me@myorg.com; Password=******; authtype=Office365";
using (CrmServiceClient conn = new CrmServiceClient(connectionString))
{
// Cast the proxy client to the IOrganizationService interface.
IOrganizationService orgService = (IOrganizationService)conn.OrganizationWebProxyClient ??
conn.OrganizationServiceProxy;
Console.WriteLine("Microsoft Dynamics CRM version {0}.", ((RetrieveVersionResponse)orgService.Execute(new RetrieveVersionRequest())).Version);
}
}
catch (FaultException<OrganizationServiceFault> osFaultException)
{
Console.WriteLine("Fault Exception caught");
Console.WriteLine(osFaultException.Detail.Message);
}
catch (Exception e)
{
Console.WriteLine("Uncaught Exception");
Console.WriteLine(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但直接使用 Crm 服务客户端同样可能(且更简单),如下所示:
class Program
{
static void Main(string[] args)
{
try
{
string connectionString =
"Url=https://myorg.crm.dynamics.com; Username=me@myorg.com; Password=******; authtype=Office365";
using (CrmServiceClient conn = new CrmServiceClient(connectionString))
{
Console.WriteLine("Microsoft Dynamics CRM version {0}.", ((RetrieveVersionResponse)conn.Execute(new RetrieveVersionRequest())).Version);
}
}
catch (FaultException<OrganizationServiceFault> osFaultException)
{
Console.WriteLine("Fault Exception caught");
Console.WriteLine(osFaultException.Detail.Message);
}
catch (Exception e)
{
Console.WriteLine("Uncaught Exception");
Console.WriteLine(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:为什么要使用 IOrganizationService 属性?它似乎只有 CrmServiceClient 功能的一个子集。而直接使用的 CrmServiceClient 看起来更快、更简单、更高效、功能更丰富。
知道为什么示例代码总是有这个额外的间接层吗?
谢谢。
IOrganizationService是interface定义访问所有 Dynamics 函数所需的最基本方法的 。使用接口有许多普遍的 好处。
IOrganizationService自 CRM 2011 以来一直存在,而CrmServiceClient在 CRM 2016 前后引入。使用的一个简单原因IOrganizationService是它存在的时间更长并且存在于现有代码库中。
CrmServiceClient实现IOrganizationService,还提供了一系列其他方法,例如使用 CRM 进行身份验证。在CrmServiceClient介绍之前,我们用于CrmConnection对 CRM 进行身份验证。当我们必须从 迁移CrmConnection到 时CrmServiceClient,我们只需更改为CrmServiceClient、提取IOrganizationService,其余代码库保持不变。
对IOrganizationService接口进行编程使您的代码更具可移植性和可重用性。例如; 当您不知道将要创建服务对象时。
IOrganizationService orgService = IOrganizationService)conn.OrganizationWebProxyClient ?? conn.OrganizationServiceProxy;
Run Code Online (Sandbox Code Playgroud)
出于测试目的,当您想IOrganizationService使用新MockOrganizationService类进行模拟时。
当您想在外部应用程序和插件之间移动代码时。在插件CrmServiceClient中没有提供。
| 归档时间: |
|
| 查看次数: |
4395 次 |
| 最近记录: |