【问题标题】:MS CRM 4.0 SDK - Initial query delay / speedup loading of .NET applicationsMS CRM 4.0 SDK - .NET 应用程序的初始查询延迟/加速加载
【发布时间】:2023-09-05 03:32:01
【问题描述】:

我正在使用用于 MS CRM 4.0 的 C# .NET SDK。更特别的是,我使用了 SDK 的 XRM 接口。

当我启动客户端应用程序时,第一个查询(例如获取所有 crm 系统用户)的开销约为 5 秒。开销发生在通过网络发送任何内容之前(在wireshark中观察到)。这就是为什么我猜测延迟与一些 .NET 加载开销有关。

我在http://www.eggheadcafe.com/software/aspnet/31916049/the-initial-delay-when-using-the-crmservice-is-caused-by-two-things.aspx找到了一些解释:

使用 CrmService 时的初始延迟是由两件事引起的。第一的 必须编译 CrmService 代理类(从 IL 到本机)并且 必须加载序列化。这需要大量的处理 因此时间。这种编译只发生在第一次 crmservice 代理是在 AppDomain 中创建的。

第一次在服务器上执行调用时的第二次附加 类等可能需要加载。

.NET 框架的这种正常行为。您可以优化加载时间 通过使用 WSDL 工具生成新的服务代理来为 CrmService 和 清除您不使用的任何请求和对象。做事的问题 这是因为工作量很大。

假设上述解释适用,除了手动编辑生成的代理类之外,还有什么其他方法可以避免延迟?

我尝试了 GAC 和原生镜像 - 没有成功。

【问题讨论】:

    标签: .net performance dynamics-crm jit dynamics-crm-4


    【解决方案1】:

    您可以放弃使用强类型的 WSDL 接口代理类,而简单地使用 SDK 的动态实体类。

    这不需要生成或加载序列化类。但这需要您使用更麻烦且容易出错的动态实体表示。

    【讨论】:

    • 我最近发现了 Dynamics CRM 早期绑定类型生成器的扩展,它允许跳过未使用的实体。结果,生成的早期绑定类型的数量和大小减少了:xrmearlyboundgenerator.codeplex.com
    【解决方案2】:
    最近更新 更多