Plugins 早起的好处是什么?

Plugins 早起的好处是什么?,plugins,dynamics-crm-2011,Plugins,Dynamics Crm 2011,我正在研究CRM中早期绑定和后期绑定的优缺点。关于这个问题,我有一个好主意,但有些地方我不清楚 有人说早投标最快,而晚投标最快。有什么显著差异吗 如何处理自定义实体的早期绑定 如何处理带有自定义字段的默认实体的早期绑定 有很多链接,但我得到的最有用的鼠标是那些。还有其他的指示吗 可能不会。如果您想确定,我建议您运行一些测试并分析结果 然而,这些MSDN文章建议延迟绑定它更快 使用早期绑定类型 当代码必须处理实体和时,请使用Entity类 编写代码时未知的属性In 此外,如果自定义代码与数

我正在研究CRM中早期绑定和后期绑定的优缺点。关于这个问题,我有一个好主意,但有些地方我不清楚

  • 有人说早投标最快,而晚投标最快。有什么显著差异吗

  • 如何处理自定义实体的早期绑定

  • 如何处理带有自定义字段的默认实体的早期绑定

  • 有很多链接,但我得到的最有用的鼠标是那些。还有其他的指示吗



  • 可能不会。如果您想确定,我建议您运行一些测试并分析结果
  • 然而,这些MSDN文章建议延迟绑定它更快

    使用早期绑定类型

    当代码必须处理实体和时,请使用Entity类 编写代码时未知的属性In 此外,如果自定义代码与数千条实体记录一起工作, 使用Entity类会使性能略好于 早期绑定的实体类型。但是,这种灵活性具有灵活性 缺点是,您无法同时验证实体和属性名称 编译时如果您的实体在编码时已定义,并且 轻微的性能下降是可以接受的,您应该使用可以使用CrmSvcUtil生成的早期绑定类型 工具。有关详细信息,请参见中的使用早期绑定实体类 代码

    实体编程(早期绑定与后期绑定与开发人员 扩展)

    早起。。。序列化成本随着实体的增加而增加 在网络传输期间转换为后期绑定类型

    二,三。您不必对自定义字段或实体执行任何特殊操作。Svcutil将为这两者生成类

    代码生成工具创建的类包括所有 实体的属性和关系。通过在您的 在代码中,您可以访问这些属性并保持类型安全。有 属性和关系是为数据库中的所有实体创建的 组织生成的类型之间没有差异 系统和自定义实体。

    作为旁注,我不会太在意它,它们都是可以接受的实现方法,在大多数情况下,我怀疑性能影响是否会大到足以让人担心的程度。我个人更喜欢后期绑定,但这主要是因为我不喜欢生成类


    编辑。

    我通过在CRM中创建帐户(一组200和5000个帐户)对此进行了一些快速分析。它证实了微软提供的信息,在这两次运行中,后期绑定大约快了8.5秒。在很短的时间内,后期绑定速度显著加快—90%。但是,早期绑定速度很快加快,到创建5000条记录时,后期绑定速度仅提高2%

  • 有人说提前投标最快,有人说晚投标最快。有什么显著差异吗

    a。由于早期绑定只是后期绑定实体类的包装器,并且包含其所有功能,因此它的运行时不能比后期绑定更快。但是,这个差异非常小,我不同意。速度上的一个不可忽略的差异是发展速度。早期绑定对于开发来说要快得多,并且不容易出错

  • 如何处理自定义实体的早期绑定

    a。用于自定义实体,与默认实体完全相同(我创建的目的是使生成类变得更加容易。更新:它已转移到更新2它现在位于XrmToolBox插件库中,搜索
    “早期绑定生成器”
    )。每次对CRM实体进行更改时,都需要更新实体类型定义(仅当您要使用新属性或实体,或者您已删除当前使用的属性或实体时。您可以使用过期的早期绑定实体类,只要您不设置任何实际不存在的属性的值,这与后期绑定的要求完全相同)

  • 如何处理带有自定义字段的默认实体的早期绑定

    a、 见问题2的答案

  • 使用早期绑定实体时的一个小问题是需要在
    IOOrganizationService
    中启用早期绑定代理类型。这对于
    OrganizationServiceProxy
    来说很容易,但对于插件,尤其是自定义工作流活动,可能需要执行更多步骤

    编辑1-我的测试 下面是我的代码,针对一个相当不活跃的本地开发环境进行测试。请自行测试

    使用(var service=TestBase.GetOrganizationServiceProxy())
    {
    var earlyWatch=新秒表();
    var lateWatch=新秒表();
    对于(int i=0;i<100;i++)
    {
    earlyWatch.Start();
    var e=new Contact(){FirstName=“Early”,LastName=“BoundTest”
    e、 Id=service.Create(e);
    早看。停();
    lateWatch.Start();
    var l=新实体();
    l、 LogicalName=“联系人”;
    l[“firstname”]=“Late”;
    l[“lastname”]=“BoundTest”;
    l、 Id=service.Create(l);
    迟到的人停下来;
    删除(e);
    服务。删除(l);
    }
    var earlyTime=earlyWatch.ElapsedMilliseconds;
    var lateTime=lateWatch.ElapsedMilliseconds;
    var百分比=earlyWatch.ElapsedTicks/(双)lateWatch.ElapsedTicks;
    }
    
    我的两个测试结果(请注意,运行两个测试在统计上并不显著,无法得出任何统计结论,但我认为它们赋予了它权重,因为它实际上并没有那么大
    Number Creates  |   Early (MS)  |   Late (MS)   |   % diff (from ticks)
    10              |   1242        |   1106        |   12.3%
    100             |   8035        |   7960        |   .1%